]> git.mxchange.org Git - friendica.git/blob - src/Core/Logger.php
Revert "Add monolog"
[friendica.git] / src / Core / Logger.php
1 <?php
2 /**
3  * @file src/Core/Logger.php
4  */
5 namespace Friendica\Core;
6
7 use Friendica\BaseObject;
8 use Friendica\Core\Config;
9 use Friendica\Util\DateTimeFormat;
10 use ReflectionClass;
11
12 /**
13  * @brief Logger functions
14  */
15 class Logger extends BaseObject
16 {
17     // Log levels:
18     const WARNING = 0;
19     const INFO = 1;
20     const TRACE = 2;
21     const DEBUG = 3;
22     const DATA = 4;
23     const ALL = 5;
24
25     public static $levels = [
26         self::WARNING => 'Warning',
27         self::INFO => 'Info',
28         self::TRACE => 'Trace',
29         self::DEBUG => 'Debug',
30         self::DATA => 'Data',
31         self::ALL => 'All',
32     ];
33
34     /**
35      * @brief Logs the given message at the given log level
36      *
37      * @param string $msg
38      * @param int $level
39      */
40     public static function log($msg, $level = self::INFO)
41     {
42         $a = self::getApp();
43
44         $debugging = Config::get('system', 'debugging');
45         $logfile   = Config::get('system', 'logfile');
46         $loglevel = intval(Config::get('system', 'loglevel'));
47
48         if (
49             !$debugging
50             || !$logfile
51             || $level > $loglevel
52         ) {
53             return;
54         }
55
56         $processId = session_id();
57
58         if ($processId == '')
59         {
60             $processId = $a->process_id;
61         }
62
63         $callers = debug_backtrace();
64
65         if (count($callers) > 1) {
66             $function = $callers[1]['function'];
67         } else {
68             $function = '';
69         }
70
71         $logline = sprintf("%s@%s\t[%s]:%s:%s:%s\t%s\n",
72                 DateTimeFormat::utcNow(DateTimeFormat::ATOM),
73                 $processId,
74                 self::$levels[$level],
75                 basename($callers[0]['file']),
76                 $callers[0]['line'],
77                 $function,
78                 $msg
79             );
80
81         $stamp1 = microtime(true);
82         @file_put_contents($logfile, $logline, FILE_APPEND);
83         $a->saveTimestamp($stamp1, "file");
84     }
85
86     /**
87      * @brief An alternative logger for development.
88      * Works largely as log() but allows developers
89      * to isolate particular elements they are targetting
90      * personally without background noise
91      *
92      * @param string $msg
93      */
94     public static function devLog($msg)
95     {
96         $a = self::getApp();
97
98         $logfile = Config::get('system', 'dlogfile');
99
100         if (!$logfile) {
101             return;
102         }
103
104         $dlogip = Config::get('system', 'dlogip');
105
106         if (!is_null($dlogip) && $_SERVER['REMOTE_ADDR'] != $dlogip)
107         {
108             return;
109         }
110
111         $processId = session_id();
112
113         if ($processId == '')
114         {
115             $processId = $a->process_id;
116         }
117
118         if (!is_string($msg)) {
119                 $msg = var_export($msg, true);
120         }
121
122         $callers = debug_backtrace();
123         $logline = sprintf("%s@\t%s:\t%s:\t%s\t%s\t%s\n",
124                 DateTimeFormat::utcNow(),
125                 $processId,
126                 basename($callers[0]['file']),
127                 $callers[0]['line'],
128                 $callers[1]['function'],
129                 $msg
130             );
131
132         $stamp1 = microtime(true);
133         @file_put_contents($logfile, $logline, FILE_APPEND);
134         $a->saveTimestamp($stamp1, "file");
135     }
136 }