php logger安装,自己写的PHP的Logger

工作中需要用到php写日志,log4php需要复杂的配置文件,不想去弄。虽然跟log4j的配置差不多,但也没必要去维护一个日志配置文件。

就自己写了一个单文件的logger类,只需要include进来使用即可。

不多说,贴代码

/*

* PHP Logger Class

* Created: 2011-10-26

* Author: xingfei(http://blog.csdn.net/jakieyoung)

* Licence: Free of use and redistribution

*/

if(!defined('_LOGGER_PHP_')) {

define('_LOGGER_PHP_', '1');

if(!defined('LOG_ROOT')) {

define('LOG_ROOT', '/webroot/logs/');

}

define('LEVEL_FATAL', 0);

define('LEVEL_ERROR', 1);

define('LEVEL_WARN', 2);

define('LEVEL_INFO', 3);

define('LEVEL_DEBUG', 4);

class Logger {

static $LOG_LEVEL_NAMES = array(

'FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG'

);

private $level = LEVEL_DEBUG;

static function getInstance() {

return new Logger;

}

function setLogLevel($lvl) {

if($lvl >= count(Logger::$LOG_LEVEL_NAMES) || $lvl < 0) {

throw new Exception('invalid log level:' . $lvl);

}

$this->level = $lvl;

}

function _log($level, $message, $name) {

if($level > $this->level) {

return;

}

$log_file_path = LOG_ROOT . $name . '.log';

$log_level_name = Logger::$LOG_LEVEL_NAMES[$this->level];

$content = date('Y-m-d H:i:s') . ' [' . $log_level_name . '] ' . $message . "\n";

file_put_contents($log_file_path, $content, FILE_APPEND);

}

function debug($message, $name = 'root') {

$this->_log(LEVEL_DEBUG, $message, $name);

}

function info($message, $name = 'root') {

$this->_log(LEVEL_INFO, $message, $name);

}

function warn($message, $name = 'root') {

$this->_log(LEVEL_WARN, $message, $name);

}

function error($message, $name = 'root') {

$this->_log(LEVEL_ERROR, $message, $name);

}

function fatal($message, $name = 'root') {

$this->_log(LEVEL_FATAL, $message, $name);

}

}

}

使用时,先获取一个logger实例,然后调用logger的debug,info,warn,error,fatal等方法。

第一个参数是需要log的内容,第二个参数表示log的名称,作为log文件的文件名。log目录

使用LOG_ROOT来定义。如果需要不同的log目录,则在include之前,首先define自己的LOG_ROOT。

举例如下

define('LOG_ROOT', '/myweb/logs/');

include('logger.php');

$logger = Logger::getInstance();

$logger->debug('this is my first log', 'test');

注意:LOG_ROOT需要在最后添加反斜线‘/’。

记录日志时,会判断loglevel,如果设置的loglevel比使用的loglevel高,则不会写入任何日志。

在需要禁用日志时,就可以setLogLevel(LEVEL_FATAL)来只记录严重级别的日志。

默认的loglevel是最低级别的debug,即记录所有的日志。

在开发阶段使用默认的即可。在生产环境下,一般使用WARN较为妥当。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值