当前位置:首页 > 编程技术 > 正文内容

TP6.0 自定义日志驱动

yc8881年前 (2023-01-12)编程技术200

TP6.0 自定义日志驱动

1. 新增日志通道配置


  1. // 其它日志通道配置
  2. 'log' => [
  3. // 日志记录方式
  4. 'type' => app\driver\Log::class,
  5. // 日志保存目录
  6. 'path' => app()->getRootPath() . 'log',
  7. ],

2. 自定义日志驱动类


自定义日志驱动,需要实现 think\contract\LogHandlerInterface 接口

参考TP6.0官方文档完全开发手册 : https://www.kancloud.cn/manual/thinkphp6_0/1037616#_377

  1. interface LogHandlerInterface
  2. {
  3. /**
  4. * 日志写入接口
  5. * @access public
  6. * @param array $log 日志信息
  7. * @return bool
  8. */
  9. public function save(array $log): bool;
  10. }
  1. <?php
  2. declare (strict_types = 1);
  3. namespace app\driver;
  4. use think\facade\Log as LogFacade;
  5. use think\contract\LogHandlerInterface;
  6. /**
  7. * 自定义日志驱动
  8. */
  9. class Log implements LogHandlerInterface
  10. {
  11. /**
  12. * 构造方法
  13. */
  14. public function __construct()
  15. {
  16. // 获取日志通道配置信息
  17. $this->config = LogFacade::getChannelConfig('log');
  18. }
  19. /**
  20. * 保存日志
  21. * @param array $data
  22. */
  23. public function save(array $data): bool
  24. {
  25. foreach ($data as $type => $item ) {
  26. foreach ( $item as $value ) {
  27. $this->write($type, ['type' => $type,'value' => $value]);
  28. }
  29. }
  30. return true;
  31. }
  32. /**
  33. * 执行写入文件
  34. * @param [type] $type
  35. * @param [type] $data
  36. * @return void
  37. */
  38. public function write($type, $data)
  39. {
  40. $path = implode('/', [$this->config['path'], $type . '.log']);
  41. if ( ! file_exists(dirname($path)) ) mkdir(dirname($path), 0777, true);
  42. $content = '------------ ' . date('Y-m-d H:i:s') . ' ------------' . PHP_EOL . PHP_EOL . var_export($data, true) . PHP_EOL . PHP_EOL;
  43. file_put_contents($path, $content, FILE_APPEND);
  44. }
  45. }

3. 写入日志


  1. use think\facade\Log;
  2. Log::channel('log')->record('测试日志信息');

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10366.html

标签: thinkphp
分享给朋友:

“TP6.0 自定义日志驱动” 的相关文章

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...

【说站】Java从resources读取文件内容的方法有哪些

【说站】Java从resources读取文件内容的方法有哪些

本文主要介绍的是java读取resource目录下文件的方法,比如这是你的src目录的结构├── main│ ├── java│ │ └── ...

【说站】使用systemctl配置dnspod-shell实现ddns

【说站】使用systemctl配置dnspod-shell实现ddns

这个是毛子路由器上用的脚本,由于碳云的nat服务器公网IP不断的变,因此只好通过ddns来稳定连接nat服务器了。顺便水一篇文章,大家新年快乐。使用前需要将域名添加到 DNSPod 中,并添加一条A记...