ThinkPHP6.1日志通道通过Handler对接输出目标,官方内置FileHandler(文件)、StdoutHandler(标准输出)、SocketHandler(TCP/UDP推送),SentryHandler、DatabaseHandler、Redis/KafkaHandler需自定义或扩展实现。

ThinkPHP6.1 的日志通道(Log Channel)本身不直接“支持驱动类型”,而是通过 日志处理器(Handler) 来对接不同输出目标。框架底层基于 monolog/monolog,但做了轻量封装,实际可用的输出方式取决于你配置的 handler 类及其依赖。
官方内置并稳定支持的通道类型有以下几类:
FileHandler(文件驱动)
默认通道,写入runtime/log/下按日期分片的.log文件。支持自动轮转、级别过滤、格式化模板。CRMEB 等生产项目普遍用它作基础落盘。StdoutHandler(标准输出)
将日志输出到 CLI 的stdout或 Web 服务器的错误流(如 PHP-FPM 的access.log),适合 Docker 容器环境或调试阶段实时查看。SocketHandler(TCP/UDP 日志推送)
可直连 Logstash、Fluentd 或自建日志服务端。需手动配置 host/port/protocol,TP6.1 原生支持,无需扩展包,但需确保网络可达且服务端协议兼容。SentryHandler(异常监控上报)
非官方内置,但通过think-sentry或自定义Handler可无缝集成。TP6.1 的report()方法中调用Log::channel('sentry')->error(...)即走此通道,适用于错误追踪与上下文上报。DatabaseHandler(数据库存储)
框架未自带,但可通过扩展(如topthink/think-log-db)或自定义 Handler 实现。注意:不建议在高并发写场景下作为主通道,易成性能瓶颈;更适合审计类低频日志。RedisHandler / KafkaHandler(消息队列式日志)
同样非原生,需自行实现 Handler 并注册。典型用于异步日志采集(如高频访问日志先入 Redis List,再由独立消费者落库或分析)。TP6.1 的队列机制(think-queue)可配合使用。
⚠️ 注意两点:
- 所有 Handler 必须实现
Psr\Log\LoggerInterface或继承think\log\driver\Handler抽象类; - 多通道可共存,例如同时启用
file(全量) +sentry(仅 error) +stdout(本地调试),通过config/log.php中的channels配置分别定义。
基本上就这些。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











