返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >Thinkphp6的日志问题怎么解决
  • 192
分享到

Thinkphp6的日志问题怎么解决

2023-07-05 15:07:12 192人浏览 八月长安
摘要

这篇文章主要介绍“ThinkPHP6的日志问题怎么解决”,在日常操作中,相信很多人在Thinkphp6的日志问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Thinkphp6的日志问题怎么解决”的疑

这篇文章主要介绍“ThinkPHP6的日志问题怎么解决”,在日常操作中,相信很多人在Thinkphp6的日志问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Thinkphp6的日志问题怎么解决”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    Thinkphp6的日志问题

    日志级别

    debug, info, notice, warning, error, critical, alert, emergency

    其中有一个特别的级别:sql,专门用来记录sql语句的

    设置日志记录级别

    对于程序比较重要的业务模块可以进行埋点(进行日志记录)

    可以通过设置日志记录级别来开启和关闭记录

    有助于排除错误(比每次出现错误去代码里增加记录日志好多了)

            # 修改 config/log.php        # 配置 'level' => ['notice','warning']        # level 不为空时,只记录level中指定的错误级别        # level 为空时,记录所有级别        $user = UserService::getInstance()->findByUsername('xieruixiang');        Log::warning("warning:{user}", compact('user'));        # info 不再 level 中 则不会记录        Log::info("I'm info");

    单一日志

    默认的tp日志是写在当前日期(年月)目录下的,如(runtime/admin/log/202204/30_info.log)

    单一日志设置 修改config/log.php 中通道single属性为true

    设置单一日志后,将不再写在时间目录下(一直写一个固定目录),如(runtime/admin/log/single_info.log)

    # 开启单一日志# channels.file.single# 这里给file通道开启单一日志'single' => true

    独立日志

    每一种日志级别的日志都归类到一个文件之中(推荐开启独立日志)

    设置 config/log.php 中通道apart_level属性

            #  设置 file 通道 info,notice,warning 级别开启独立日志        #  channels.file.apart_level        # 'apart_level' => ['info', 'notice', 'warning']        # 在 apart_level中的级别会独立写到一个文件中去        # write to runtime/admin/log/202204/30_warning.log        Log::warning("I'm ");        # write to runtime/admin/log/202204/30_info.log        Log::info("I'm info");        # write to runtime/admin/log/202204/30_notice.log        Log::notice("I'm notice");

    日志的写入时机

    日志写入时机提供两种(实时写入,程序执行完后写入)

    通过设置config/log.php中通道 realtime_write 属性

            # 这里中断程序的执行        # 如果 realtime_write = false 则无法写到日志中去        # realtime_write = true 可以写入日志中去        Log::warning("I'm ");        # 如果 realtime_write = false        # 又想实时写入        # 可以通过 Log::write($msg, $type) 实时写入        # $msg 信息        # $type 日志级别        Log::write("I'm write", 'warning');        die("日志将不会写入");

    日志通道

    可以自定义通道

    以增加邮件通道为例

    将config/log.php 中通道type 改成自定义驱动类即可

            # config/log.php channels 添加         'email' => [            'type' => \app\admin\driver\EmailDriver::class,            # 调试发送邮件时将其设置成实时比较好调试            'realtime_write' => true,        ]               # EmailDriver 需要实现 think\contract\LogHandlerInterface       class EmailDriver implements LogHandlerInterface       {          public function save(array $log): bool          {          # 这里进行发送邮件逻辑          # 想知道邮件发送逻辑的可以参考我的文章 《php发送邮件》          # 不想知道的 可以调用第三方封装好的php发送邮件组件           return true;          }       }

    使用邮件通道

     # channel($channelName) 指定发送通道 # 不指定则使用默认发送通道 # config/log.php # 'default' => env('log.channel', 'file'), Log::channel('email')->info("this is info"); # 就能以邮件形式通知了

    Thinkphp6异常处理与日志

    异常处理

    目标:返回JSON格式的异常信息 # url_route_must:true强制路由模式下

    thinkphp6内置已了一个app\ExceptionHandle异常处理类可供使用

    该类绑定在app目录下面的provider.php文件中,直接修改该类的相关方法即可完成应用的自定义异常处理机制。

    Thinkphp6的日志问题怎么解决

    app\ExceptionHandle.php 异常处理类,重新定义render方法即可

    #app\ExceptionHandle.php public function render($request, Throwable $e): Response    {        // app_debug模式下按原thinkphp6异常模式处理异常        if (env('app_debug')) {            return parent::render($request, $e);        }        // 自定义json返回错误        if ($e instanceof ValidateException) {            return json($e->getError(), 422);            return json(['code' => 0, 'msg' => $e->getError()], 422);        }        // 自定义json返回异常        if ($e instanceof HttpException && $request->isajax()) {            return json(['code' => 0, 'msg' => $e->getMessage()], $e->getStatusCode());        }// 自定义json返回异常        if ($e instanceof HttpException) {            return json(['code' => 0, 'msg' => $e->getMessage()]);        }// 自定义json返回异常        return json(['code' => 0, 'msg' => 'Biny服务器错误']);    }

    目标:访问未定义的路由时返回json格式的信息 # url_route_must:false 非强制路由模式下

    php think make:controller Error --plain

        public function index()    {        return json([            'code' => 0,            'data' => 'Route is Not Found',            'msg' => 'success'        ]);    }    public function __call($name, $arguments)    {        return json([            'code' => 0,            'data' => 'Route is Not Found',            'msg' => 'success'        ]);    }

    日志

    • DEBUG模式下默认记录error级别和sql执行语句日志

    • 非DEBUG模式默认仅记录error级别日志

    • DEBUG模式在根目录增加.env文件 设置APP_DEBUG = false/true

    Thinkphp6的日志问题怎么解决

    手动记录日志

    方法描述
    record()Log::record(‘record方法记录的日志信息不是实时保存的’,‘info’);
    write()Log::write(‘要实时记录的话,可以采用write方法’,‘info’);

    系统在请求结束后会自动调用Log::save方法统一进行日志信息写入

    关闭日志

    Log::close(); //手动关闭本次请求的日志写入

    到此,关于“Thinkphp6的日志问题怎么解决”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

    本文标题: Thinkphp6的日志问题怎么解决

    本文链接: https://lsjlt.com/news/353007.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • Thinkphp6的日志问题怎么解决
      这篇文章主要介绍“Thinkphp6的日志问题怎么解决”,在日常操作中,相信很多人在Thinkphp6的日志问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Thinkphp6的日志问题怎么解决”的疑...
      99+
      2023-07-05
    • 关于Thinkphp6的日志问题
      目录Thinkphp6的日志问题设置日志记录级别单一日志独立日志日志的写入时机日志通道Thinkphp6异常处理与日志异常处理日志手动记录日志关闭日志总结Thinkphp6的日志问题...
      99+
      2023-03-23
      Thinkphp6的日志 Thinkphp6日志 关于Thinkphp6日志
    • Thinkphp6怎么记录SQL日志
      一、 public下.env 文件加配置二、config/database.php文件配置三、.env文件部分配置数据四、总结 一、 public下.env 文件加配置 在文件的第一行...
      99+
      2023-08-31
      sql php Tp6记录SQL日志 Tp6配置记录SQL日志
    • win10日志文件c:Windowssystem32logfiles问题怎么解决
      今天小编给大家分享一下win10日志文件c:Windowssystem32logfiles问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
      99+
      2023-07-01
    • thinkphp6方法大小写问题怎么解决
      今天小编给大家分享一下thinkphp6方法大小写问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。方法是一组带有参...
      99+
      2023-07-06
    • linux查看日志定位问题怎么解决
      要在Linux系统上查看日志并定位问题,可以按照以下步骤进行操作: 打开终端窗口,使用以下命令之一进入日志目录: `/var/...
      99+
      2023-10-26
      linux
    • 解决SpringBoot log4j日志没生成的问题
      SpringBoot log4j日志没生成 从同事那接了一个脚手架,启动后发现日志文件没生成。 都知道SpringBoot默认带的logback,如果要用log4j需要把logbac...
      99+
      2024-04-02
    • Python重定向npm日志:解决日志问题的最佳方法?
      如果你使用过npm,你可能会遇到日志输出问题。npm将所有的日志都输出到控制台,而不是将其记录到文件中。这可能会导致在处理大型项目时,日志信息过多而难以捕捉。为了解决这个问题,我们可以使用Python来重定向npm的日志输出。 在Pyth...
      99+
      2023-06-19
      重定向 日志 npm
    • ElasticSearch突然采集不到日志问题怎么解决
      本篇内容介绍了“ElasticSearch突然采集不到日志问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!0-前言组内同学反馈,k...
      99+
      2023-07-06
    • 解决rocketmq-client日志保存路径的问题
      rocketmq-client日志保存路径 由于使用rocketmq-client会生成一个rocketmq_client.log日志文件,一般默认存于系统盘内,且持续增长速度较快,...
      99+
      2024-04-02
    • 怎么解决oracle丢失的是所有的redo日志组问题
      本篇内容主要讲解“怎么解决oracle丢失的是所有的redo日志组问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决oracle丢失的是所有的redo日...
      99+
      2024-04-02
    • 如何解决Mysql收缩事务日志的问题
      这篇文章给大家分享的是有关如何解决Mysql收缩事务日志的问题的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。一.MS SQL SERVER 2005--1.清空日志  ...
      99+
      2024-04-02
    • 解决springmvc整合Mybatis的Log4j日志输出问题
      springmvc整合Mybatis的Log4j日志输出 当我们进行web开发的时候总是看到配置的log4j日志在控制台无法显示mybatis的主要是指sql、参数、结果,出现这种问...
      99+
      2024-04-02
    • 如何解决springboot日志彩色消失的问题
      本篇内容介绍了“如何解决springboot日志彩色消失的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!springboot 日志彩色消...
      99+
      2023-06-20
    • ASP和NumPy的日志同步问题解决方法
      在许多工程和科学应用程序中,ASP(Active Server Pages)和NumPy(Numerical Python)是两个非常重要的工具。ASP是一种Microsoft开发的用于构建动态Web应用程序的服务器端脚本技术,而NumP...
      99+
      2023-09-19
      numy 同步 日志
    • feign 打印日志不显示的问题及解决
      目录feign打印日志不显示feign基本使用Feign 概述Feign 入门案例Feign 工作原理feign打印日志不显示 1.是否有设置 feign 的 Logger.Leve...
      99+
      2024-04-02
    • logback日志文件路径问题如何解决
      这篇文章给大家介绍logback日志文件路径问题如何解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。对于J2SE项目,当前路径为工程所在目录如我的工程为:D:\test则使用…/logs生成的日志文件位于:D:\lo...
      99+
      2023-06-06
    • docker开启mysql的binlog日志解决数据卷问题
      目录前言1、通过数据卷的方式开启一个mysql镜像2、连接mysql并进行测试3、开启bin_log4、重启mysql镜像5、创建一个数据库并在里面创建一个表加一条数据结语前言 在开...
      99+
      2024-04-02
    • Linux下如何解决日志文件过大的问题
      这篇文章主要介绍Linux下如何解决日志文件过大的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如何让应用程序在后台执行:linux后台执行命令:&与nohup的用法通过以上方法,应用程序的日志会一直输出...
      99+
      2023-06-15
    • 如何解决mysql因为事务日志问题无法启动的问题
      这篇文章给大家介绍如何解决mysql因为事务日志问题无法启动的问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Mysql数据库无法启动,具体如下:[root@testdb var]#...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作