Car*_*ing 7 ruby-on-rails rsyslog
我在Debian服务器上运行了几个Rails 3.0站点.目前所有日志都进入RAILS_ROOT/log/production.log(每个站点的RAILS_ROOT)
我想改变这一点,以便所有日志记录都通过rsyslog进行,并放在:
/var/log/rails/site1.log
/var/log/rails/site2.log
etc.
Run Code Online (Sandbox Code Playgroud)
并且每天都要自动旋转这些日志.
这是怎么做到的?
/ Carsten
Fre*_*ung 15
在过去,我已经使用了syslog-logger宝石
您可以在初始化程序中进行设置:
config.logger = Logger::Syslog.new("site1", Syslog::LOG_LOCAL5)
Run Code Online (Sandbox Code Playgroud)
在最近的ruby版本中,syslog/logger标准库中也存在- 使用情况几乎相同.
开始记录到syslog而不是默认文本文件.接下来发生的是系统日志配置 - 您需要创建定义数据所在位置的rsyslog规则
最简单的事情就是这样
!site1 /var/log/site1.log
Run Code Online (Sandbox Code Playgroud)
使用程序名称"site1"(Logger :: Syslog的第一个参数)指向所有内容.
您可以执行更多操作,例如,您可以将日志消息转发到中央日志记录服务器,将它们全部聚合到一个文件中,这样您就不会在每个应用程序实例的一个日志文件中使用Iook.
对于日志轮换我使用logrotate - 我相信rsyslog实际上可以在内部处理那种东西,但我不知道细节.