在 FreeBSD 中,有一个实用程序支持循环日志文件,称为阻塞。
这对于避免维护某些服务的日志(在 systemd 及其日志之外)非常有趣。
有没有其他方法可以在 linux 和/或 rsyslog 中执行相同的操作?
答案1
有一些工具可以做同样的事情两个都自由BSD和Linux,除此之外还有其他操作系统。
制作自动旋转的严格尺寸限制的原木
以下工具在指定的目录中维护严格限制大小、自动轮换、可按需轮换的日志文件集。
- 丹·伯恩斯坦的
multilog
从守护进程工具,或布鲁斯·冈特的multilog
从daemontools-encore,或者 Adam Sampsonmultilog
的弗里特 - 洛朗·贝尔科特
s6-log
从s6 - 格里特·佩普的
svlogd
从运行 - 韦恩·马歇尔的
tinylog
从罪犯 - 我的
cyclog
从开胃菜
用法非常简单:以正常方式通过管道将要记录的进程的标准输出和标准错误发送到其标准输入:
./要记录的内容 2>&1 |自行车日志/
cyclog
将 TAI64N 时间戳添加到行中作为标准。对于已经带有时间戳的内容时的无时间戳处理,请使用 s multilog
、s6-log
或之一svlogd
,其中每个时间戳添加都是非默认选项。
替代系统日志
你所指的是修改 FreeBSDsyslog
本身,使用 2001 年的补丁,现在可能无法完全应用,以拥有另一种输出文件机制。
另一种方法是完全替换 syslog 守护进程,同时配置更多服务以简单地记录到标准错误(在将标准错误传送到日志记录服务的服务管理下),而不是首先使用 syslog。
例如: nosh 工具集提供了几个这样的替代品,它们分解了 syslog 的工作并生成适合通过上述日志记录工具之一的标准输入提供的输出:
klogd
运行一个名为的简单程序的服务klog-read
读取/proc/kmsg
该日志流并将其写入其标准错误。local-syslog-read
运行名为的程序的服务syslog-read
/dev/log
从(/run/log
在 BSD 上) 读取数据报并简单地将日志流写入其标准错误。udp-syslog-read
运行上述服务的服务syslog-read
程序侦听 UDP 系统日志端口并简单地将日志流写入其标准错误。local-priv-syslog-read
运行上述服务的服务syslog-read
程序读取数据报/run/logpriv
并简单地将日志流写入其标准错误。
进一步阅读
- 乔纳森·德博因·波拉德 (2015)。 ”记录”。守护进程工具家族。经常给出的答案。
- 乔纳森·德博因·波拉德 (2016)。在本世纪不要使用 logrotate 或 newsyslog。。经常给出的答案。
- 乔纳森·德博因·波拉德 (2016)。 ”记录”。 小吃指南。软件。
- https://unix.stackexchange.com/a/294206/5132
- https://unix.stackexchange.com/a/326166/5132
- https://unix.stackexchange.com/a/340631/5132