我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

作为国内的phper最受欢迎的框架,目前thinkphp到了thinkphp5时代。在本文中,苏南大叔要描述的是thinkphp如何配置log功能。当然,这里的log指的是:记录访客访问数据到本地文件之中。如果,您在php前方还配置了nginx的话,其实这个thinkphplog功能和nginxlog功能,两者在访客记录方面的功用是重合的。当然,两者也是有所区别的。

苏南大叔:thinkphp项目调试,如何配置log日志文件地址? - thinkphp-log
thinkphp项目调试,如何配置log日志文件地址?(图6-1)

为什么要使用这个thinkphplog功能呢?因为可以通过thinkphp的日志功能,发现一些可疑的访问请求,您懂的。如果您在安全领域做事的话,这个log日志文件就是非常好用的线索发现之地。本文测试环境:mac/thinkphp@5.0.24完整版

配置源码

ThinkPHP5.0.24完整版源码中,默认是启用了这个log的文件写入功能的。配置文件位置为:

application/config.php

'log' => [
  // 日志记录方式,内置 file socket 支持扩展
  'type'  => 'File',
  // 日志保存目录
  'path'  => LOG_PATH,
  // 日志记录级别
  'level' => [],
],

苏南大叔:thinkphp项目调试,如何配置log日志文件地址? - application-config
thinkphp项目调试,如何配置log日志文件地址?(图6-2)

其中,LOG_PATH的默认值是这里配置的:
thinkphp/base.php:

defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']) . DS);
defined('ROOT_PATH') or define('ROOT_PATH', dirname(realpath(APP_PATH)) . DS);
defined('RUNTIME_PATH') or define('RUNTIME_PATH', ROOT_PATH . 'runtime' . DS);
defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH . 'log' . DS);

意思就是默认日志文件会出现在runtime目录下面的log目录里面。

苏南大叔:thinkphp项目调试,如何配置log日志文件地址? - thinkphp_base
thinkphp项目调试,如何配置log日志文件地址?(图6-3)

所以,如果您想要自定义LOG_PATH的话,就需要在index.php里面,定义一个常量LOG_PATH即可。并且请给予相关目录写入权限。

public/index.php

define('LOG_PATH', __DIR__ . '/../logdiy/');

苏南大叔:thinkphp项目调试,如何配置log日志文件地址? - public-index
thinkphp项目调试,如何配置log日志文件地址?(图6-4)

相关链接:

更多log设置

官方还给出了下面的更多设置项目,如果您有需求,可以再次深入探讨。

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

苏南大叔:thinkphp项目调试,如何配置log日志文件地址? - log-file
thinkphp项目调试,如何配置log日志文件地址?(图6-5)

禁用log

这个thinkphp自带的log,其实是和nginxlog功能是有重合的。如果您需要,可以禁用掉这个log功能。禁用的方法就是:设置typetest即可。

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

主动写入日志信息

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

苏南大叔:thinkphp项目调试,如何配置log日志文件地址? - log-record
thinkphp项目调试,如何配置log日志文件地址?(图6-6)

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

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

相关链接

总结

这些日志里面,有访客访问日志,还有报错信息,甚至sql记录等等。如果从这个层面上讲的话,可能nginx的日志,就没有这个thinkphp自带的日志大而全了。

当然,thinkphp的日志不光可以写入到file里面,还可以写入到其它地方。不过,也不在本文的讨论范畴内了。不要小看thinkphp的日志文件功能,是非常的好用。在接下来的文章中,苏南大叔将要描述一个真实案例,如何从这个日志文件发现黑客入侵痕迹。

更多thinkphp文章,请点击苏南大叔的博客:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php    thinkphp