讲师中心 微信公众号
AI工具推荐 视频效率加速

怎么通过Logrotate工具实现Workerman stdout日志文件的自动切割?

秋静姑娘_4965

秋静姑娘_4965

发布时间:2026-05-24 23:37:07

|

941人浏览过

|

来源于php中文网

原创

必须用copytruncate,否则Workerman因不重开文件描述符会持续写入旧inode导致日志丢失;它通过复制内容后截断原文件,保持fd有效,确保日志不中断、不丢失。

怎么通过logrotate工具实现workerman stdout日志文件的自动切割?

Logrotate 配置里必须用 copytruncate,否则 Workerman 会写丢日志

Workerman 默认不重开文件描述符,它把 stdout(比如 /var/log/workerman.log)打开后就一直往里写,不会感知到 Logrotate 的 move 或 rename 操作。如果你不用 copytruncate,Logrotate 会把原文件移走再新建一个同名空文件,而 Workerman 还在往旧的 inode 里写——结果就是新日志文件永远为空,旧日志被切走后内容丢失。

正确做法是让 Logrotate 先复制一份再清空原文件,这样 Workerman 的 fd 仍有效:

/var/log/workerman.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    copytruncate
    notifempty
}

注意几点:

  • copytruncate 是关键,不能省;
  • notifempty 避免空文件被误切;
  • delaycompress 防止刚切完就压缩,方便排查问题;
  • 别加 create,Workerman 自己建的日志文件权限/属主可能被覆盖。

Workerman 启动时要确保 stdout 被重定向到具体文件,而不是管道或 /dev/null

很多人用 php start.php start -d 启动后发现日志没生成,其实是没显式重定向 stdout。Workerman 默认把 echo、var_dump 等输出打到终端,后台运行时这些输出会被丢弃,除非你主动重定向。

启动命令必须带重定向:

php start.php start -d >> /var/log/workerman.log 2>&1

或者更稳妥地,在代码里用 file_put_contents + STDOUT 替代直接 echo,但最简单可靠的方式还是 shell 层重定向。注意:

科学计算器在线使用工具代码
科学计算器在线使用工具代码

html5 css3制作在线科学计算器ui布局,3D计算器面板,加减乘除数字计算器工具特效。

下载
  • 不要只写 >> 不写 2>&1,否则错误日志(如 Notice、Warning)不会进日志文件;
  • 路径得是绝对路径,相对路径在 daemon 模式下容易指向错目录;
  • 确保运行 Workerman 的用户对 /var/log/workerman.log 有写权限(比如用 www-data 运行,就得 chown www-data:www-data /var/log/workerman.log)。

Logrotate 手动测试切割是否生效,别等自动触发才发现问题

Logrotate 默认每天凌晨触发,等一天才能验证配置是否有效,太慢。应该立刻手动跑一次:

logrotate -f /etc/logrotate.d/workerman

然后检查:

  • 原 /var/log/workerman.log 是否变为空(copytruncate 的表现);
  • 是否有类似 /var/log/workerman.log.1 的归档文件生成;
  • Workerman 进程是否还在持续写入(tail -f /var/log/workerman.log 看实时输出);
  • 如果没写入,用 lsof -p $(pgrep -f "start.php") | grep log 确认进程是否还持有旧文件句柄(正常情况应指向当前 workerman.log,不是 .1)。

避免和 Workerman 内置日志组件冲突,禁用 Worker::$logFile 或保持路径一致

有些项目启用了 Workerman 的 Worker::$logFile = '/path/to/log';,它会调用 error_log() 写文件,和 shell 重定向的 stdout 是两套机制。混用会导致日志重复、时间戳错乱、甚至因并发写同一个文件引发内容损坏。

建议统一渠道:

  • 如果用 Logrotate 管理,就关掉 Worker::$logFile(设为 null 或注释掉);
  • 如果保留 Worker::$logFile,那 Logrotate 配置目标就得改成它指定的路径,且同样必须加 copytruncate;
  • 千万别让 Worker::$logFile 和 shell 重定向指向不同文件又都开着——你会看到一半日志在 A 文件、一半在 B 文件,查问题时直接抓瞎。

Logrotate 本身不复杂,但和 Workerman 这种长期运行、不 reload fd 的进程配合时,copytruncate 是绕不开的硬约束,漏掉它,一切配置都是白搭。

热门AI工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

相关专题

更多
Workerman安装配置教程
Workerman安装配置教程

Workerman安装配置教程专题提供Workerman安装配置、WebSocket开发、TCP通信、异步编程、高并发服务搭建与PHP实时通信开发教程。

166

2026.05.20

Workerman实时通信与长连接开发教程
Workerman实时通信与长连接开发教程

WWorkerman实时通信与长连接开发教程聚合实时通信、聊天室、长连接、消息推送、AI流式输出等Workerman高并发开发内容。

202

2026.05.20

Workerman异步通信与TCP服务器开发
Workerman异步通信与TCP服务器开发

Workerman异步通信与TCP服务器开发专题整理Workerman异步通信、TCP服务、HTTP服务、WebSocket开发与高并发PHP服务器教程。

187

2026.05.20

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

80

2026.09.30

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

80

2026.09.30

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

40

2026.09.30

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

60

2026.09.29

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

280

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Conan 2 高级依赖模型介绍
Conan 2 高级依赖模型介绍

共0课时 | 0人学习

Pandas 官方文档与用户指南
Pandas 官方文档与用户指南

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn