日志驱动

日志可以通过驱动支持不同的方式写入,默认日志会记录到文件中,系统已经内置的写入驱动包括 FileSocket,如果要临时关闭日志写入,可以设置日志类型为Test即可,例如:

'log'   => [
// 可以临时关闭日志写入
'type' => 'test',
],

File驱动

日志的记录方式默认是File方式,可以通过驱动的方式来扩展支持更多的记录方式。

记录方式由log.type参数配置,例如:

'log'   => [
// 日志记录方式,支持 file socket
'type' => 'File',
//日志保存目录
'path' => LOG_PATH,
//单个日志文件的大小限制,超过后会自动记录到第二个文件
'file_size' =>2097152,
//日志的时间格式,默认是` c `
'time_format' =>'c'
],

为了避免同一个目录下面的日志文件过多的性能问题,file方式记录的日志文件会自动生成日期子目录。

Scoket驱动

Socket驱动配置,具体参考后面的远程调试部分。

其他驱动

thinkphp5.0支持SAE驱动的扩展,具体参考“SAE”章节

每个日志记录方式需要对应一个日志驱动文件,例如File方式记录,对应的驱动文件是library/think/log/driver/File.php

关闭日志

系统并未提供关闭日志的方法,但有两种方式可以关闭日志的写入,第一种方式是设置日志类型为test,即可不写入任何日志。第二种方式是后面会提到的设置日志记录级别。

日志写入

版本 新增功能
5.0.4 命令行模式下日志自动定时写入
5.0.4 debug日志类型仅用于调试模式记录

手动记录

一般情况下,系统的日志记录是自动的,无需手动记录,但是某些时候也需要手动记录日志信息,Log类提供了3个方法用于记录日志。

方法 描述
Log::record() 记录日志信息到内存
Log::save() 把保存在内存中的日志信息(用指定的记录方式)写入
Log::write() 实时写入一条日志信息

由于系统在请求结束后会自动调用Log::save方法,所以通常,你只需要调用Log::record记录日志信息即可。

record方法用法如下:

Log::record('测试日志信息');

默认的话记录的日志级别是INFO,也可以指定日志级别:

Log::record('测试日志信息,这是警告级别','notice');

采用record方法记录的日志信息不是实时保存的,如果需要实时记录的话,可以采用write方法,例如:

Log::write('测试日志信息,这是警告级别,并且实时写入','notice');

V5.0.4+版本开始,为避免内容溢出,在命令行下面执行的话 日志信息会定时自动写入。

日志级别

ThinkPHP对系统的日志按照级别来分类,并且这个日志级别完全可以自己定义,系统内部使用的级别包括:

  • log 常规日志,用于记录日志
  • error 错误,一般会导致程序的终止
  • notice 警告,程序可以运行但是还不够完美的错误
  • info 信息,程序输出信息
  • debug 调试,用于调试信息
  • sql SQL语句,用于SQL记录,只在数据库的调试模式开启时有效

系统提供了不同日志级别的快速记录方法,例如:

Log::error('错误信息');
Log::info('日志信息');
// 和下面的用法等效
Log::record('错误信息','error');
Log::record('日志信息','info');

还封装了一个助手函数用于日志记录,例如:

trace('错误信息','error');
trace('日志信息','info');

也支持指定级别日志的输入,需要配置信息:

'log'   => [
'type' => 'File',
// 日志记录级别,使用数组表示
'level' => ['error'],
],

最新文章

  1. em和rem
  2. FPGA综合工具--Synplify Pro的常用选项及命令
  3. 【转】Android编程判断手机or平板
  4. The 2015 China Collegiate Programming Contest L. Huatuo's Medicine hdu 5551
  5. 动态生成dropdownlist
  6. nosql简述
  7. ZOJ 1586 QS Network (最小生成树)
  8. unity3d游戏开发——新手引导
  9. 奇葩的UI引用LayoutInflater.from问题
  10. top使用命令
  11. sqlserver检测数据库是否能连接的小技巧
  12. iOS 环信集成项目应用
  13. 小谈ConcurrentHashMap
  14. [BZOJ3224] [Tyvj 1728] 普通平衡树 (treap)
  15. 使用Dapper.Contrib 开发.net core程序,兼容多种数据库
  16. day50 django第一天 自定义框架
  17. Asp.NetMVC和WebForm的请求生命周期
  18. ElasticSearch异常归纳(能力工场小马哥)
  19. Binding.RelativeSource 属性
  20. ubuntu16 jdk7 install&config

热门文章

  1. 二次剩余从csdn
  2. Python—sys模块介绍
  3. 写了一个Windows API Viewer,提供VBA语句的导出功能。提供两万多个API的MSDN链接内容的本地查询
  4. iOS基于B站的IJKPlayer框架的流媒体探究
  5. 03-命令图片.doc
  6. C#设计模式之6:抽象工厂模式
  7. Granfana+PostgreSQL
  8. Python 基础知识----数据类型
  9. Artifact project04:war :Error during artifact deployment. See server log for details
  10. Java变量类型识别的3种方式