2012-09-25 17 views
1

如何将消息从bash脚本记录到特定路径中的日志文件?如何从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脚本提供了类似的行为?

+0

'logger'只是将数据发送到syslog。您的系统日志配置可以处理将其分成您选择的日志文件。系统日志不会轮转日志,通常由logrotate完成,可以配置为在任何文件上使用。 – jordanm

+0

我想知道是否存在一个解决方案,在该解决方案中运行'simply_log -f〜/ log/foo.log我的消息',它将消息记录到该文件并在必要时旋转该日志文件。 (即与现代脚本语言中记录命令类似的行为)。 – Erik

+0

IMO使用系统范围的logrotate程序是首选,除非您仅限于服务器上的用户帐户。特别是当最流行的日志记录库之一[灾难性错误](http://juliusdavies.ca/logging.html#rotate) – jordanm

回答

5

您可以简单地从一个bash脚本以这种方式文本追加到一个日志文件:

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

旋转由logrotate的处理,你只需要在设置添加到.conf文件在/ etc/logrotate的.conf文件。这个配置非常自我解释,手册页也很有帮助,但是总之如果你想每周轮换一次,并且保持4周的压缩格式日志并且创建一个新的空日志,那么它就会简单放在.conf文件:

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

还有很多其他的选项,你可以在手册页(man logrotate的),如通过电子邮件发送日志文件,在旋转执行命令检查,旋转当文件达到一定规模等等。

+0

+ 1谢谢。你的回答非常简单明了。 – shgnInc

相关问题