1.
日志的处理工作是由系统自动进行的,在开启日志记录的情况下,会记录下允许的日志级别的所有日志信息。

其中,为了性能考虑,SQL日志级别必须在调试模式开启下有效,否则就不会记录。 系统的日志记录由核心的Think\Log类及其驱动完成,提供了多种方式记录了不同的级别的日志信息。

默认情况下只是在调试模式记录日志,要在部署模式开启日志记录,必须在配置中开启LOG_RECORD参数,以及可以在应用配置文件中配置需要记录的日志级别,例如:

'LOG_RECORD' => true, // 开启日志记录

'LOG_LEVEL' =>'EMERG,ALERT,CRIT,ERR', // 只记录EMERG ALERT CRIT ERR 错误

日志级别

ThinkPHP对系统的日志按照级别来分类,包括:

  • EMERG 严重错误,导致系统崩溃无法使用
  • ALERT 警戒性错误, 必须被立即修改的错误
  • CRIT 临界值错误, 超过临界值的错误
  • ERR 一般性错误
  • WARN 警告性错误, 需要发出警告的错误
  • NOTICE 通知,程序可以运行但是还不够完美的错误
  • INFO 信息,程序输出信息
  • DEBUG 调试,用于调试信息
  • SQL SQL语句,该级别只在调试模式开启时有效

 

2.thinkphp 项目日志输出类的目录为:TP/Lib/Core/Log.class.PHP

参考的thinkphp 开发手册如下:

通常日志文件的写入是自动完成的,如果我们需要在开发的过程中手动记录日志信息,可以使用Log类的方法来操作。日志文件的写入有两种方法:
一、使用Log::write 方法

Log::write 直接写入日志

用法

Log::write($message,$level=self::ERR,$type='',$destination='',$extra='')

参数

message(必须):要记录的日志信息,字符串

level(可选):要记录的日志级别,默认为ERR 错误

type(可选):日志记录方式,默认为空取LOG_TYPE配置

destination(可选):日志记录目标,默认为空自动生成或LOG_DEST配置

extra(可选):日志记录额外参数,默认为空取LOG_EXTRA配置

返回值

无

如:你要将$sql 变量写进日志: Log::write('调试的SQL:'.$SQL, Log::SQL);
表示用默认的日志记录方式记录调试SQL信息
二、使用Log::record和 Log::save方法

Log::record记录日志

用法

Log::record($message,$level=self::ERR,$record=false)

参数

message(必须):要记录的日志信息,字符串
level(可选):要记录的日志级别,默认为ERR 错误
record(可选):是否强制记录,默认为false表示判断LOG_LEVEL配置

返回值

无

Log::record方法必须结合Log::save方法才能完成日志记录,因为record方法只是把日志信息保存到内存,并没有真正写入日志,直到调用Log::save方法。

Log::save 保存记录的日志

用法

Log::save($type='',$destination='',$extra='')

参数

type(可选):日志记录方式,默认为空取LOG_TYPE配置
destination(可选):日志记录目标,默认为空自动生成或LOG_DEST配置
extra(可选):日志记录额外参数,默认为空取LOG_EXTRA配置

返回值

无

使用示例:

  1. Log::record('测试调试错误信息', Log::DEBUG);
  2.  Log::record('调试的SQL:'.$SQL, Log::SQL);
  3.  Log::save();

文章来源:刘俊涛的博客

地址:http://www.cnblogs.com/lovebing

欢迎关注,有问题一起学习欢迎留言、评论。

TP框架如何开启log日志的更多相关文章

  1. mysql中如何开启binlog?开启二进制日志文件?binary log?

    需求描述: 开启mysql的binlog即binary log日志功能,在此记录下. 版本描述: mysql版本:5.7.21-log 操作过程: 1.修改my.cnf并且将以下参数加入其中,重启my ...

  2. Spring框架之log日志的使用

    1.Spring框架也需要引入日志相关的jar包 * 在spring-framework-3.0.2.RELEASE-dependencies/org.apache.commons/com.sprin ...

  3. scrapy框架之log日志

    scrapy中的debug信息 在scrapy中设置log 1.在settings中设置log级别,在settings.py中添加一行: Scrapy提供5层logging级别: CRITICAL - ...

  4. Xposed框架Hook Android应用的所有类方法打印Log日志

    本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80954759 在进行Android程序的逆向分析的时候,经常需要Android程 ...

  5. tp框架总体学习总结(一)

    一.TP框架的下载和安装 Tp框架下载网址:http://www.thinkphp.cn/ 在wamp的www目录下创建一个目录tpshop目录 1.  将下载好的包压缩后将文件包里的所有文件复制到创 ...

  6. 基于TP框架的ThinkCMF,控制器display方法源码分析

    昨天在写代码的时候,看见写了无数次的模版渲染方法:$this->display(),突然很想弄清楚它是如何实现的. 今天不忙,就分析了一下. class TestController exten ...

  7. tp框架集成支付宝,中转页变成gbk编码

    tp框架中集成支付宝的功能,将支付宝的demo例子存在到下图位置\Extend\Vendor\Alipay 生成支付订单 /** * 支付订单 */ public function pay() { h ...

  8. tp框架-----Model模型层

    1.Model模型层是用来做什么的呢? 主要是用来做操作数据库访问的.也就说明TP框架自带了一种访问数据库的方式,使用的是Model模型. 2.Model模型怎样使用呢? 要使用Model模型层访问数 ...

  9. SLF4J其实只是一个门面服务而已,他并不是真正的日志框架,真正的日志的输出相关的实现还是要依赖Log4j、logback等日志框架的。

    小结: 1.加层: 每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,这就大大的增加应用程序代码对于日志框架的耦合性. 为了解决这个问题,就是在日志框架和应用程序之间架设一个 ...

随机推荐

  1. 处理eclipse启动时报java.lang.IllegalStateException

    这是我写的第一篇博客,博客我来了: 我是好学的人,希望在这上面遇到志同道合的人,对技术有更高追求的人: 重启eclipse的时候报出来 An error has occurred, See the l ...

  2. Netty之粘包分包

    粘包现象 客户端在一个for循环内连续发送1000个hello给Netty服务器端, Socket socket = new Socket("127.0.0.1", 10101); ...

  3. Maven SpringMVC整合Mybatis

    关于Spring的核心理念和Mybatis的优点网上已经有很多文档做了说明.这篇博客,只记录springmvc整合mybatis时常见的知识点,以及注意事项,它只有最精简的几个模块,以帮助初学者迅速搭 ...

  4. CentOS6.9-zabbix3.2启动失败原因及页面没有mysql选择项

     环境内核信息: [root@zabbix- ~]# uname -a Linux lodboyedu- -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_64 ...

  5. poj 2570 Fiber Network(floyd)

    #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int ...

  6. cxf,两个声明导致 ObjectFactory 类中发生冲突

    说明先,这里不管是client还是server端都是用java语言编写,如有写得不好,望原谅! 问题 http://localhost:8080/WEB-SMVC/cxf/userService?ws ...

  7. webAPP踩坑记录

    最近公司突然给我们下了一个任务  一个星期要做出一个系统网站 外加手机app   2个同事负责 web开发  我负责手机app 的开发 今天终于初级版本做完了,记录一下手机app踩过的坑与优化之路 用 ...

  8. Java二维数组的概念和使用方法

    二维数组 数组的数组---二维数组的每一个元素是一个一维数组 定义格式 数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][每个一维数组的长度]; int[][] ...

  9. 调用接口http封装

    public static String httpHandler(String URL,String xml){ try { URL url=new URL(URL); URLConnection c ...

  10. mybatis if-else(写法)

    mybaits 中没有else要用chose when otherwise 代替 范例一 <!--批量插入用户--> <insert id="insertBusinessU ...