@@ -9,8 +9,16 @@ class BuffLog {
99 protected static $ instance ;
1010 private static $ logger = null ;
1111
12- private static $ logOutputMethods = ['debug ' , 'info ' , 'notice ' , 'warning ' , 'error ' , 'critical ' ];
13- private static $ extraAllowedMethods = ['getName ' , 'pushHandler ' , 'setHandlers ' , 'getHandlers ' , 'pushProcessor ' , 'getProcessors ' ];
12+ // default verbosity starting at this level
13+ private static $ verbosityLevel = Logger::NOTICE ;
14+
15+ // verbosity can be changed with setting this env var
16+ public static $ logLevelEnvVar = "LOG_LEVEL " ;
17+
18+ // we can use strtolower(Logger::getLevels()) instead
19+ private static $ logOutputMethods = ['debug ' , 'info ' , 'notice ' , 'warning ' , 'error ' , 'critical ' ];
20+
21+ private static $ extraAllowedMethods = ['getName ' , 'pushHandler ' , 'setHandlers ' , 'getHandlers ' , 'pushProcessor ' , 'getProcessors ' , 'getLevels ' ];
1422
1523 /**
1624 * Method to return the Monolog instance
@@ -32,7 +40,19 @@ protected static function configureInstance()
3240 // define the logger name. This will make it easier for developers
3341 // to read and friendlier to identify where come the logs at a glance
3442 $ logger = new Logger ('php-bufflog ' );
35- $ handler = new StreamHandler ('php://stdout ' );
43+
44+ $ logLevelFromEnv = getenv (self ::$ logLevelEnvVar );
45+ $ monologLevels = $ logger ->getLevels ();
46+ if ($ logLevelFromEnv ) {
47+ // only if the level exists, we change the verbosity level
48+ if (key_exists ($ logLevelFromEnv , $ monologLevels )) {
49+ self ::$ verbosityLevel = $ monologLevels [$ logLevelFromEnv ];
50+ } else {
51+ error_log (self ::$ logLevelEnvVar . "= {$ logLevelFromEnv } verbosity level does not exists. Please use: " . implode (', ' , array_keys ($ monologLevels )));
52+ }
53+ }
54+
55+ $ handler = new StreamHandler ('php://stdout ' , self ::$ verbosityLevel );
3656 $ handler ->setFormatter ( new \Monolog \Formatter \JsonFormatter () );
3757 $ logger ->pushHandler ($ handler );
3858 self ::$ instance = $ logger ;
@@ -47,24 +67,16 @@ public static function __callStatic($methodName, $args)
4767
4868 if (in_array ($ methodName , self ::$ logOutputMethods )) {
4969
50- // @TODO: need to make sure we "output" only the correct level of log
51- // old version looked like:
52- // self::setVerbosity();
53- // if (self::$currentVerbosity > Logger::WARNING) {
54- // return;
55- // }
56-
5770 self ::enrichLog ();
5871 }
5972 // Where the magic happen. We "proxy" functions name with arguments to the Monolog instance
6073 return call_user_func_array (array (self ::getLogger (), $ methodName ), $ args );
6174
6275 } else {
63-
6476 error_log ("BuffLog:: $ methodName() is not supported yet. Add it to the BuffLog whitelist to allow it " );
6577 }
6678 } else {
67- error_log ("BuffLog:: $ methodName() does not exist " );
79+ error_log ("BuffLog:: $ methodName() method does not exist " );
6880 }
6981 }
7082
@@ -84,7 +96,7 @@ private static function enrichLog()
8496 // 'profileID' => $user->getProfileID()
8597 // );
8698
87- // Add traces information to logs to be able correlate with APM
99+ // Add traces information to be able to correlate logs with APM
88100 $ ddTraceSpan = \DDTrace \GlobalTracer::get ()->getActiveSpan ();
89101 $ record ['context ' ]['dd ' ] = [
90102 "trace_id " => $ ddTraceSpan ->getTraceId (),
0 commit comments