【发布时间】:2012-09-25 18:19:45
【问题描述】:
如何将消息从 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 脚本提供类似的行为?
【问题讨论】:
-
logger只是将数据发送到系统日志。您的系统日志配置可以处理将其拆分为您选择的日志文件。 Syslog 不会轮换日志,这通常由 logrotate 完成,可以配置为在任何文件上使用。 -
我想知道是否存在一个解决方案,您可以运行类似“simply_log -f ~/log/foo.log My message”之类的东西,它将消息记录到该文件并在必要时轮换该日志文件。 (即类似于现代脚本语言中记录命令的行为)。
-
IMO 最好使用系统范围的 logrotate 程序,除非您仅限于服务器上的用户帐户。尤其是当最受欢迎的日志库之一有 catastrophic bugs
-
那么,如果您的 ~/bin/ 目录中有数十个个人自定义脚本可以真正使用一些日志记录,那么最好将其记录到 syslog 中?
-
这真的取决于他们在做什么。您可以将日期附加到日志文件名,而不必担心轮换。