Create Logger class

Create Core\Logger class and point old functions to the new ones.
This commit is contained in:
Adam Magness 2018-10-29 16:10:35 -04:00
parent f7147fae96
commit d6d593d724
2 changed files with 150 additions and 94 deletions

View file

@ -23,6 +23,8 @@ use Friendica\Util\DateTimeFormat;
use Friendica\Util\Map; use Friendica\Util\Map;
use Friendica\Util\Proxy as ProxyUtils; use Friendica\Util\Proxy as ProxyUtils;
use Friendica\Core\Logger;
require_once "include/conversation.php"; require_once "include/conversation.php";
/** /**
@ -380,9 +382,6 @@ function attribute_contains($attr, $s) {
} }
/* setup int->string log level map */
$LOGGER_LEVELS = [];
/** /**
* @brief Logs the given message at the given log level * @brief Logs the given message at the given log level
* *
@ -398,57 +397,9 @@ $LOGGER_LEVELS = [];
* @param string $msg * @param string $msg
* @param int $level * @param int $level
*/ */
function logger($msg, $level = LOGGER_INFO) { function logger($msg, $level = LOGGER_INFO)
$a = get_app(); {
global $LOGGER_LEVELS; Logger::logger($msg, $level);
$debugging = Config::get('system', 'debugging');
$logfile = Config::get('system', 'logfile');
$loglevel = intval(Config::get('system', 'loglevel'));
if (
!$debugging
|| !$logfile
|| $level > $loglevel
) {
return;
}
if (count($LOGGER_LEVELS) == 0) {
foreach (get_defined_constants() as $k => $v) {
if (substr($k, 0, 7) == "LOGGER_") {
$LOGGER_LEVELS[$v] = substr($k, 7, 7);
}
}
}
$process_id = session_id();
if ($process_id == '') {
$process_id = get_app()->process_id;
}
$callers = debug_backtrace();
if (count($callers) > 1) {
$function = $callers[1]['function'];
} else {
$function = '';
}
$logline = sprintf("%s@%s\t[%s]:%s:%s:%s\t%s\n",
DateTimeFormat::utcNow(DateTimeFormat::ATOM),
$process_id,
$LOGGER_LEVELS[$level],
basename($callers[0]['file']),
$callers[0]['line'],
$function,
$msg
);
$stamp1 = microtime(true);
@file_put_contents($logfile, $logline, FILE_APPEND);
$a->saveTimestamp($stamp1, "file");
} }
/** /**
@ -469,46 +420,9 @@ function logger($msg, $level = LOGGER_INFO) {
* @param string $msg * @param string $msg
* @param int $level * @param int $level
*/ */
function dlogger($msg, $level = LOGGER_INFO) { function dlogger($msg, $level = LOGGER_INFO)
$a = get_app(); {
Logger::dlogger($msg, $level);
$logfile = Config::get('system', 'dlogfile');
if (!$logfile) {
return;
}
$dlogip = Config::get('system', 'dlogip');
if (!is_null($dlogip) && $_SERVER['REMOTE_ADDR'] != $dlogip) {
return;
}
if (count($LOGGER_LEVELS) == 0) {
foreach (get_defined_constants() as $k => $v) {
if (substr($k, 0, 7) == "LOGGER_") {
$LOGGER_LEVELS[$v] = substr($k, 7, 7);
}
}
}
$process_id = session_id();
if ($process_id == '') {
$process_id = $a->process_id;
}
$callers = debug_backtrace();
$logline = sprintf("%s@\t%s:\t%s:\t%s\t%s\t%s\n",
DateTimeFormat::utcNow(),
$process_id,
basename($callers[0]['file']),
$callers[0]['line'],
$callers[1]['function'],
$msg
);
$stamp1 = microtime(true);
@file_put_contents($logfile, $logline, FILE_APPEND);
$a->saveTimestamp($stamp1, "file");
} }

142
src/Core/Logger.php Normal file
View file

@ -0,0 +1,142 @@
<?php
/**
* @file src/Core/Logger.php
*/
namespace Friendica\Core;
use Friendica\Core\Config;
use Friendica\Util\DataTimeFormat;
class Logger
{
/**
* @brief Logs the given message at the given log level
*
* log levels:
* LOGGER_WARNING
* LOGGER_INFO (default)
* LOGGER_TRACE
* LOGGER_DEBUG
* LOGGER_DATA
* LOGGER_ALL
*
* @global array $LOGGER_LEVELS
* @param string $msg
* @param int $level
*/
public static function logger($msg, $level = LOGGER_INFO)
{
$a = get_app();
global $LOGGER_LEVELS;
$LOGGER_LEVELS = [];
$debugging = Config::get('system', 'debugging');
$logfile = Config::get('system', 'logfile');
$loglevel = intval(Config::get('system', 'loglevel'));
if (
!$debugging
|| !$logfile
|| $level > $loglevel
) {
return;
}
if (count($LOGGER_LEVELS) == 0) {
foreach (get_defined_constants() as $k => $v) {
if (substr($k, 0, 7) == "LOGGER_") {
$LOGGER_LEVELS[$v] = substr($k, 7, 7);
}
}
}
$process_id = session_id();
if ($process_id == '') {
$process_id = get_app()->process_id;
}
$callers = debug_backtrace();
if (count($callers) > 1) {
$function = $callers[1]['function'];
} else {
$function = '';
}
$logline = sprintf("%s@%s\t[%s]:%s:%s:%s\t%s\n",
DateTimeFormat::utcNow(DateTimeFormat::ATOM),
$process_id,
$LOGGER_LEVELS[$level],
basename($callers[0]['file']),
$callers[0]['line'],
$function,
$msg
);
$stamp1 = microtime(true);
@file_put_contents($logfile, $logline, FILE_APPEND);
$a->saveTimestamp($stamp1, "file");
}
/**
* @brief An alternative logger for development.
* Works largely as logger() but allows developers
* to isolate particular elements they are targetting
* personally without background noise
*
* log levels:
* LOGGER_WARNING
* LOGGER_INFO (default)
* LOGGER_TRACE
* LOGGER_DEBUG
* LOGGER_DATA
* LOGGER_ALL
*
* @global array $LOGGER_LEVELS
* @param string $msg
* @param int $level
*/
public static function dlogger($msg, $level = LOGGER_INFO)
{
$a = get_app();
$logfile = Config::get('system', 'dlogfile');
if (!$logfile) {
return;
}
$dlogip = Config::get('system', 'dlogip');
if (!is_null($dlogip) && $_SERVER['REMOTE_ADDR'] != $dlogip) {
return;
}
if (count($LOGGER_LEVELS) == 0) {
foreach (get_defined_constants() as $k => $v) {
if (substr($k, 0, 7) == "LOGGER_") {
$LOGGER_LEVELS[$v] = substr($k, 7, 7);
}
}
}
$process_id = session_id();
if ($process_id == '') {
$process_id = $a->process_id;
}
$callers = debug_backtrace();
$logline = sprintf("%s@\t%s:\t%s:\t%s\t%s\t%s\n",
DateTimeFormat::utcNow(),
$process_id,
basename($callers[0]['file']),
$callers[0]['line'],
$callers[1]['function'],
$msg
);
$stamp1 = microtime(true);
@file_put_contents($logfile, $logline, FILE_APPEND);
$a->saveTimestamp($stamp1, "file");
}
}