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

时间:2012-09-25 18:19:46

标签: bash logging syslog

如何使用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库创建我自己的logger命令并从我的bash脚本中调用它,但我想已经有一个众所周知的解决方案为shell脚本提供了类似的行为?

1 个答案:

答案 0 :(得分: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)上查看许多其他选项,例如通过电子邮件发送日志文件,在旋转时执行命令,在文件达到特定大小时旋转等等。

相关问题