3 * @file src/Core/Logger.php
5 namespace Friendica\Core;
7 use Friendica\BaseObject;
8 use Friendica\Core\Config;
9 use Friendica\Util\DateTimeFormat;
13 * @brief Logger functions
15 class Logger extends BaseObject
25 public static $levels = [];
28 * @brief Get class constants, and avoid using substring.
30 public static function getConstants()
32 $reflectionClass = new ReflectionClass(__CLASS__);
33 return $reflectionClass->getConstants();
37 * @brief Logs the given message at the given log level
42 public static function log($msg, $level = self::INFO)
46 $debugging = Config::get('system', 'debugging');
47 $logfile = Config::get('system', 'logfile');
48 $loglevel = intval(Config::get('system', 'loglevel'));
58 if (count(self::$levels) == 0)
60 foreach (self::getConstants() as $k => $v)
66 $processId = session_id();
70 $processId = $a->process_id;
73 $callers = debug_backtrace();
75 if (count($callers) > 1) {
76 $function = $callers[1]['function'];
81 $logline = sprintf("%s@%s\t[%s]:%s:%s:%s\t%s\n",
82 DateTimeFormat::utcNow(DateTimeFormat::ATOM),
85 basename($callers[0]['file']),
91 $stamp1 = microtime(true);
92 @file_put_contents($logfile, $logline, FILE_APPEND);
93 $a->saveTimestamp($stamp1, "file");
97 * @brief An alternative logger for development.
98 * Works largely as log() but allows developers
99 * to isolate particular elements they are targetting
100 * personally without background noise
105 public static function devLog($msg, $level = self::INFO)
109 $logfile = Config::get('system', 'dlogfile');
115 $dlogip = Config::get('system', 'dlogip');
117 if (!is_null($dlogip) && $_SERVER['REMOTE_ADDR'] != $dlogip)
122 if (count(self::$levels) == 0)
124 foreach (self::getConstants() as $k => $v)
130 $processId = session_id();
132 if ($processId == '')
134 $processId = $a->process_id;
137 $callers = debug_backtrace();
138 $logline = sprintf("%s@\t%s:\t%s:\t%s\t%s\t%s\n",
139 DateTimeFormat::utcNow(),
141 basename($callers[0]['file']),
143 $callers[1]['function'],
147 $stamp1 = microtime(true);
148 @file_put_contents($logfile, $logline, FILE_APPEND);
149 $a->saveTimestamp($stamp1, "file");