3 * @file src/Core/Logger.php
5 namespace Friendica\Core;
7 use Friendica\Core\Config;
8 use Friendica\Util\DateTimeFormat;
11 * @brief Logger functions
13 class Logger extends BaseObject
23 public static $levels = [];
26 * @brief Get class constants, and avoid using substring.
28 public function getConstants()
30 $reflectionClass = new ReflectionClass($this);
31 return $reflectionClass->getConstants();
35 * @brief Logs the given message at the given log level
40 public static function log($msg, $level = INFO)
44 $debugging = Config::get('system', 'debugging');
45 $logfile = Config::get('system', 'logfile');
46 $loglevel = intval(Config::get('system', 'loglevel'));
56 if (count($levels) == 0)
58 foreach (self::getConstants() as $k => $v)
64 $processId = session_id();
68 $processId = $a->process_id;
71 $callers = debug_backtrace();
73 if (count($callers) > 1) {
74 $function = $callers[1]['function'];
79 $logline = sprintf("%s@%s\t[%s]:%s:%s:%s\t%s\n",
80 DateTimeFormat::utcNow(DateTimeFormat::ATOM),
83 basename($callers[0]['file']),
89 $stamp1 = microtime(true);
90 @file_put_contents($logfile, $logline, FILE_APPEND);
91 $a->saveTimestamp($stamp1, "file");
95 * @brief An alternative logger for development.
96 * Works largely as log() but allows developers
97 * to isolate particular elements they are targetting
98 * personally without background noise
103 public static function devLog($msg, $level = INFO)
107 $logfile = Config::get('system', 'dlogfile');
113 $dlogip = Config::get('system', 'dlogip');
115 if (!is_null($dlogip) && $_SERVER['REMOTE_ADDR'] != $dlogip)
120 if (count($levels) == 0)
122 foreach (self::getConstants() as $k => $v)
128 $processId = session_id();
130 if ($processId == '')
132 $processId = $a->process_id;
135 $callers = debug_backtrace();
136 $logline = sprintf("%s@\t%s:\t%s:\t%s\t%s\t%s\n",
137 DateTimeFormat::utcNow(),
139 basename($callers[0]['file']),
141 $callers[1]['function'],
145 $stamp1 = microtime(true);
146 @file_put_contents($logfile, $logline, FILE_APPEND);
147 $a->saveTimestamp($stamp1, "file");