[转]Symfony Log Intro
Symfony 可以按照每个应用程序设置自己的error_reporting,覆盖 PHP的设置,设置方式:
in myapp/config/settings.yml
prod:
.settings:
error_reporting: 257
dev:
.settings:
error_reporting: 4095
4095 is a shortcut for E_ALL | E_STRICT, and 257 stands for E_ERROR | E_USER_ERROR
Symfony 也有自己的Log,保存在 myproject/log/,Log配置级别:
emerg, alert, crit, err, warning, notice, info, and debug.
我们可以在myapp/config/logging.yml 修改Symfony 的配置
prod:
enabled: off
level: err
rotate: on
purge: off
dev:
test:
#all:
# enabled: on
# level: debug
# rotate: off
# period: 7
# history: 10
# purge: on
上面的配置我们可以通过 sfConfig::get('sf_logging_enabled")来取得。
我们可以人工记录一个Log
//在 Action中可以这样用
$this->logMessage($message,$level);
//在template中
<?php use_helper("Debug");?>
<?php logMessage($message, $level);?>
我们也可以在Application中的任意地方使用
if (sfConfig::get('sf_logging_enabled'))
{
sfContext::getInstance()->getLogger()->info($message);
}
来记录Log.
同样,我们可以编写我们自己的Log函数来记录Log,只需要这个函数有两个参数,一个$message,一个是$level,只是需要在config.php中注册一下,例如,我们可以使用系统自己的error_log,只需要在config.php填写如下的代码:
require_once('Log.php');
$log = Log::singleton('error_log', PEAR_LOG_TYPE_SYSTEM, 'symfony');
sfLogger::getInstance()->registerLogger($log);
purge和Rotate 日志
我们可以手动来清除日志或者使用cron来定时清除日志,清除日志的时候可以使用
$symfony purge
来清除日志。
配置cron 方式如下,在 myapp/config/logging.yml配置如下:
prod:
rotate: on
period: 7 ## 7天Rotate,将将当前的日志备份。
history: 10 ## 最多保留10个备份。
Rotate 日志的时候可以使用:
$symfony log-rotate myapp prod
备份的log 保存在 log/history 目录下。