[转]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 目录下。

 

This article is posted by on , link is .

Leave a reply