YII中日志的基本配置:/yii_dev/testwebap/protected/config/main.php
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'error, warning',
),
// uncomment the following to show log messages on web pages
/*
array(
'class'=>'CWebLogRoute',
),
*/
),
),
YII中日志的基本使用:
可以通过YII提供的Yii::log和Yii::trace进行日志信息的输出,两者的区别看看定义就知道了。
函数定义
public static function trace($msg,$category='application')
{
if(YII_DEBUG)
self::log($msg,CLogger::LEVEL_TRACE,$category);
}
public static function log($msg,$level=CLogger::LEVEL_INFO,$category='application')
{
if(self::$_logger===null)
self::$_logger=new CLogger;
if(YII_DEBUG && YII_TRACE_LEVEL>0 && $level!==CLogger::LEVEL_PROFILE)
{
$traces=debug_backtrace();
$count=0;
foreach($traces as $trace)
{
if(isset($trace['file'],$trace['line']) && strpos($trace['file'],YII_PATH)!==0)
{
$msg.="\nin ".$trace['file'].' ('.$trace['line'].')';
if(++$count>=YII_TRACE_LEVEL)
break;
}
}
}
self::$_logger->log($msg,$level,$category);
}
$msg:你要输出的日志信息
$category:日志信息所属分类
$level:日志信息的级别:
const LEVEL_TRACE='trace';用于调试环境,追踪程序执行流程
const LEVEL_WARNING='warning';警告信息
const LEVEL_ERROR='error';致命错误信息
const LEVEL_INFO='info';普通提示信息
const LEVEL_PROFILE='profile';性能调试信息
基本使用方法举例
<?php
class DefaultController extends Controller
{
public function actionCache ()
{
$category='system.testmod.defaultController';
$level=CLogger::LEVEL_INFO;
$msg='action begin ';
Yii::log($msg,$level,$category);
YII中日志的输出位置
上文提到YII中日志的输出位置可以定义为很多位置。主要通过配置文件修改例如:
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'error, warning',
),
// uncomment the following to show log messages on web pages
array(
'class'=>'CWebLogRoute',
),
),
),
不仅输出到日志文件中,还输出到web页面上。
配置文件中
routes用于配置日志输出的位置,
class是日志,日志路由的类名
levels是日志的顶级,字符串序列,用都好分割。具体对应CLooger中的常量
注意:
日志文件的存放位置是:/yii_dev/testwebap/protected/runtime/application.log
官方的日志介绍的很详细,但是后半部分中文翻译缺失了,这里进行翻译补全.
Yii 提供了一个灵活可扩展的日志功能。记录的日志 可以通过日志级别和信息分类进行归类。通过使用 级别和分类过滤器,所选的信息还可以进一步路由到 不同的目的地,例如一个文件,Email,浏览器窗口等。
1. 信息记录
信息可以通过 Yii::log 或 Yii::trace 记录。其 区别是后者只在当应用程序运行在 调试模式(debug mode) 中时才会记录信息。
Yii::log($message, $level, $category);
Yii::trace($message, $category);
当记录信息时,我们需要指定它的分类和级别 分类是一段格式类似于 路径别名 的字符串。 例如,如果一条信息是在 CController 中记录的,我们可以使用 system.web.CController 作为分类。信息级别应该是下列值中的一种:
trace: 这是在 Yii::trace 中使用的级别。它用于在开发中 跟踪程序的执行流程。
info: 这个用于记录普通的信息。
profile: 这个是性能概述(profile)。下面马上会有更详细的说明。
warning: 这个用于警告(warning)信息。
error: 这个用于致命错误(fatal error)信息。
2. 信息路由
通过 Yii::log 或 Yii::trace 记录的信息是保存在内存中的。 我们通常需要将它们显示到浏览器窗口中,或者将他们保存到一些 持久存储例如文件、Email中。这个就叫作 信息路由,例如, 发送信息到不同的目的地。
在 Yii 中,信息路由是由一个叫做 CLogRouter 的应用组件管理的。 它负责管理一系列称作 日志路由 的东西。每个日志路由 代表一个单独的日志目的地。通过一个日志路由发送的信息会被他们的级别和分类过滤。
要使用信息路由,我们需要安装并预加载一个 CLogRouter 应用组件。我们也还需要配置它的 routes 属性为我们想要的那些日志路由。 下面的代码演示了一个所需的 应用配置 示例:
|