天天看点

Yii::log()和Yii::trace()日志记录

首先在config文件中设置log

'log'=>array(
                'class'=>'CLogRouter',
                'routes'=>array(
                    array(
                        'class'=>'CFileLogRoute',
                        'levels'=>'error, warning,trace',
                    ),
                    array(
                        'class'=>'CProfileLogRoute',
                    ),
                    array(
                        'class'=>'CWebLogRoute',
                        'levels'=>'error, warning,trace',
                    ),
                ),
            ),
           

日志路由class:

CDbLogRoute: 将信息保存到数据库的表中。

CEmailLogRoute: 发送信息到指定的 Email 地址。

CFileLogRoute: 保存信息到应用程序 runtime 目录中的一个文件中。

CWebLogRoute: 将 信息 显示在当前页面的底部。

CProfileLogRoute: 在页面的底部显示概述(profiling)信息。

信息级别levels:

trace: 这是在 Yii::trace 中使用的级别。它用于在开发中 跟踪程序的执行流程。

info: 这个用于记录普通的信息。

profile: 这个是性能概述(profile)。下面马上会有更详细的说明。

warning: 这个用于警告(warning)信息。

error: 这个用于致命错误(fatal error)信息。

可以自定义,但在输出函数里要对应才会被写入日志里

(例如上边写的是 cool.* 和 system.db.* ,就会把相应分类的信息写入日志,请结合下文来理解)

设置完了,就可以用写入日志的函数来记录了:

Yii::trace(‘My log message.’,‘cool.pd’);

//cool.pd属于cool.*分类,所以会被写入日志

Yii::log(‘My log message.’,‘info’,‘cool.collectpd’);

//log定义级别为info,结合上文,第一个logclass会忽略,不会被写入文件,但会被第二个logclass接收,写入日志在网络下方显示。

trace()和log()的区别:

trace()只会在调试模式下生效,即开启debug的时候

trace()不分level,但log()能设置levels参数

  1. 信息路由

    通过 Yii::log 或 Yii::trace 记录的信息是保存在内存中的。 我们通常需要将它们显示到浏览器窗口中,或者将他们保存到一些 持久存储例如文件、Email中。这个就叫作 信息路由,例如, 发送信息到不同的目的地。

在 Yii 中,信息路由是由一个叫做 CLogRouter 的应用组件管理的。 它负责管理一系列称作 日志路由 的东西。每个日志路由 代表一个单独的日志目的地。通过一个日志路由发送的信息会被他们的级别和分类过滤。

要使用信息路由,我们需要安装并预加载一个 CLogRouter 应用组件。我们也还需要配置它的 routes 属性为我们想要的那些日志路由。 下面的代码演示了一个所需的 应用配置 示例:

array(
    ......
    'preload'=>array('log'),
    'components'=>array(
        ......
        'log'=>array(
            'class'=>'CLogRouter',
            'routes'=>array(
                array(
                    'class'=>'CFileLogRoute',
                    'levels'=>'trace, info',
                    'categories'=>'system.*',
                ),
                array(
                    'class'=>'CEmailLogRoute',
                    'levels'=>'error, warning',
                    'emails'=>'[email protected]',
                ),
            ),
        ),
    ),
)
           

在上面的例子中,我们定义了两个日志路由。第一个是 CFileLogRoute ,它会把信息保存在位于应用程序 runtime 目录中的一个文件中。 而且只有级别为 trace 或 info 、分类以 system. 开头的信息才会被保存。 第二个路由是 CEmailLogRoute ,它会将信息发送到指定的 email 地址,且只有级别为 error 或 warning 的才会发送。

在 Yii 中,有下列几种日志路由可用:

CDbLogRoute: 将信息保存到数据库的表中。

CEmailLogRoute: 发送信息到指定的 Email 地址。

CFileLogRoute: 保存信息到应用程序 runtime 目录中的一个文件中。

CWebLogRoute: 将 信息 显示在当前页面的底部。

CProfileLogRoute: 在页面的底部显示概述(profiling)信息。