日志的作用(此处省略1000字)
YII中的日志很好很强大,允许你把日志信息存放到数据库,发送到制定email,存放咋文件中,意见显示页面是,甚至可以用来做性能分析。
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 属性为我们想要的那些日志路由。 下面的代码演示了一个所需的 应用配置 示例: