Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道

发布时间 - 2025-12-19 00:00:00    点击率:
Laravel日志系统基于Monolog构建,支持文件、数据库、Slack等多种渠道。通过config/logging.php配置通道,如single、daily、slack等,默认使用stack驱动聚合多个通道。可在.env中设置LOG_CHANNEL指定默认通道。可自定义通道如payment,按天分割日志并保留14天,写入特定文件。支持添加Monolog处理器和格式化器,如设置级别为warning,自定义日志格式。还可运行时动态创建日志实例,用于临时任务。系统灵活,便于问题排查。

Laravel 的日志系统基于强大的 Monolog 库构建,提供了灵活的日志记录方式。你可以轻松将日志写入文件、标准输出、数据库、Slack、Telegram 等多种渠道。Laravel 通过配置驱动来管理不同的日志“通道”,让你能根据环境和需求选择合适的方式记录错误、调试信息或关键事件。

默认日志配置

Laravel 的日志配置文件位于 config/logging.php。该文件定义了多个日志通道(channels),每个通道代表一种日志输出方式。默认情况下,Laravel 使用 stack 驱动作为主通道,它可以聚合多个日志通道。

常见内置驱动包括:

  • single:单个日志文件(storage/logs/laravel.log)
  • daily:按天分割日志文件,最多保留几天
  • slack:发送日志到 Slack 频道
  • syslog:写入系统日志
  • errorlog:使用 PHP 的 error_log 函数
  • stderr:输出到标准错误流
在 .env 文件中可通过 LOG_CHANNEL 设置当前使用的通道,默认为 stack

自定义日志通道

你可以在 config/logging.php 中的 channels 数组里添加自定义通道。例如,创建一个专门记录支付相关日志的 daily 类型通道:

'payment' => [
    'driver' => 'daily',
    'path' => storage_path('logs/payment.log'),
    'level' => 'debug',
    'days' => 14,
],

然后在代码中使用这个通道:

\Log::channel('payment')->info('订单支付成功', ['order_id' => 12345]);

这会将信息写入 storage/logs/payment-2025-04-05.log(按日期命名)。

使用 Monolog 自定义处理器和格式化器

Laravel 允许你在通道中注册 Monolog 的处理器(Handler)和格式化器(Formatter),实现更精细控制。

例如,添加一个只记录警告及以上级别的处理器,并自定义输出格式:

'custom_file' => [
    'driver' => 'monolog',
    'handler' => \Monolog\Handler\StreamHandler::class,
    'with' => [
        'stream' => storage_path('logs/custom.log'),
    ],
    'level' => 'warning',
    'formatter' => \Monolog\Formatter\LineFormatter::class,
    'formatter_with' => [
        'format' => "[%datetime%] %level_name%: %message% %context% %extra%\n",
        'date_format' => 'Y-m-d H:i:s',
    ],
],

这样配置后,只有 warning、error 等级别日志会被写入,且格式清晰统一。

运行时动态写入不同日志

除了预定义通道,你也可以在代码中动态创建日志实例:

$logger = new \Monolog\Logger('runtime');
$logger->pushHandler(new \Monolog\Handler\StreamHandler(storage_path('logs/runtime.log'), \Monolog\Logger::INFO));

$logger->info('运行时日志', ['data' => 'example']);

适用于临时任务或特殊模块的日志隔离。

基本上就这些。Laravel 日志系统足够灵活,既能满足日常开发需求,也能通过 Monolog 扩展支持复杂场景。合理使用多通道和级别控制,能让日志更清晰、便于排查问题。


# laravel  # php  # 处理器  # ai  # stream  # 配置文件  # 2025  # Error  # Logging  # 事件  # 数据库  # 自定义  # 多个  # 你可以  # 等多种  # 最多  # 几天  # 你在  # 也能  # 适用于  # 可在 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Android仿QQ列表左滑删除操作  如何快速生成高效建站系统源代码?  公司门户网站制作流程,华为官网怎么做?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  使用spring连接及操作mongodb3.0实例  如何在搬瓦工VPS快速搭建网站?  活动邀请函制作网站有哪些,活动邀请函文案?  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  奇安信“盘古石”团队突破 iOS 26.1 提权  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  node.js报错:Cannot find module 'ejs'的解决办法  如何彻底卸载建站之星软件?  免费网站制作appp,免费制作app哪个平台好?  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  网站建设整体流程解析,建站其实很容易!  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  Python制作简易注册登录系统  jQuery validate插件功能与用法详解  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  制作公司内部网站有哪些,内网如何建网站?  如何快速查询域名建站关键信息?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  如何在建站之星绑定自定义域名?  长沙做网站要多少钱,长沙国安网络怎么样?  Laravel如何使用.env文件管理环境变量?(最佳实践)  Laravel怎么在Blade中安全地输出原始HTML内容  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  如何在阿里云域名上完成建站全流程?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  Python数据仓库与ETL构建实战_Airflow调度流程详解  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Android中AutoCompleteTextView自动提示  桂林网站制作公司有哪些,桂林马拉松怎么报名?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  利用 Google AI 进行 YouTube 视频 SEO 描述优化  Bootstrap整体框架之CSS12栅格系统  教你用AI润色文章,让你的文字表达更专业  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?