Here’s a little time waster that makes logging a bit more pleasurable in Code Igniter:
/** * Log class to enable logging directly to a level * * static examples: * * Log::info('message'); * Log::write('message', 'error'); * Log::write('message'); // default level is 'ERROR' * Log::setDefaultLevel('info'); * * instance examples: * * $log = new Log(); * $log->info("message"); * * $log2 = new Log('debug'); // sets default level * $log2->write("message"); * * Note: static use of DefaultLevel is not thread safe */ class Log { public static $Level = array('NONE', 'ERROR', 'DEBUG', 'INFO', 'ALL'); public static $DefaultLevel = 'ERROR'; public static function write($message, $level=null) { if (! isset($level) ) { $level = self::$DefaultLevel; } log_message($level, $message); } public static function setDefaultLevel($default_level) { $default_level = strtoupper($default_level); if ( in_array($default_level, self::$Level) ) { self::$DefaultLevel = $default_level; } else { // fail silently for invalid log level } } public static function error($message) { log_message('ERROR', $message); } public static function info($message) { log_message('INFO', $message); } public static function debug($message) { log_message('DEBUG', $message); } function __construct($default_level = null) { $default_level = strtoupper($default_level); if ( in_array($default_level, self::$Level) ) { self::$DefaultLevel = $default_level; } else { // fail silently for invalid log level } } function __call($method, $args) { $level = strtoupper($method); if ( in_array($level, self::$Level) ) { if ( isset($args) ) { $log_message($level, $args); } } else { // fail silently for invalid log level } } }
And here are some tests:
log_message('info', 'testing log_message()'); Log::Info('testing static Log::Info'); Log::deBUG('testing static Log::deBUG'); Log::error('testing static Log::error'); Log::Write('testing static Log::Write with level', 'info'); Log::WRITE('testing static Log::WRITE with no level specified'); $log = new Log('debug'); $log->info('testing instantiated $l->info()'); $log->DEBUG('testing instantiated $log->DEBUG()'); $log->Error('testing instantiated $log->Error()'); $log->write('testing instantiated $log->write() with level', 'info'); $log->write('testing instantiated $log->write() with no level specified'); Log::setDefaultLevel('INFO'); $log->write('testing instantiated $log->write() with no level specified after changing default level');
Thanks for the above. Nice sweet and little library to save time :)