1

如何从 bash 脚本将消息记录到特定路径中的日志文件?

一个天真的实现将是如下命令:

echo My message >>/my/custom/path/to/my_script.log

但这可能有很多缺点(例如没有日志轮换)。我可以使用“logger”命令,但据我所知,它不支持自定义路径中的日志,并且如果您有很多可以使用自定义日志文件的 bash 脚本,则配置起来并不容易。

在像 Ruby 这样的脚本语言中,这一切都非常简单:https ://github.com/rudionrails/yell/wiki/101-the-datefile-adapter 我还可以基于这个 ruby​​ 库制作自己的记录器命令并从我的 bash 脚本,但我想已经有一个众所周知的解决方案可以为 shell 脚本提供类似的行为?

4

1 回答 1

5

您可以通过这种方式简单地将文本从 bash 脚本附加到日志文件:

echo "My message" >> /my/custom/path/to/my_script.log

旋转由 logrotate 处理,您只需将设置添加到 /etc/logrotate.conf 中的 .conf 即可。该配置非常易于解释,手册页也很有帮助,但简而言之,如果您想每周轮换并以压缩格式保留 4 周的日志并在轮换最后一个时创建一个新的空日志,您只需放入.conf:

/my/custom/path/to/my_script.log {
    rotate 4
    weekly
    create
    compress
    endscript
}

您可以在手册页 (man logrotate) 中查看许多其他选项,例如通过电子邮件发送日志文件、执行轮换命令、文件达到特定大小时轮换等。

于 2012-09-25T21:36:31.787 回答