Rog*_*ger 10 ruby-on-rails syslog
我想在我的rails应用程序中使用syslog.此博客文章概述了该过程:
gem 'SyslogLogger'你的Gemfilerequire 'syslog_logger'到顶部config/environments/production.rbconfig.logger =同一文件中的行.在生产箱中,我有4个使用乘客运行的轨道应用程序.如果我为所有4个应用程序切换到使用syslogger,那么我担心来自所有4个应用程序的日志消息将转到单个文件,并且日志消息将交错.当然,我可以使用splunk,但首先我想检查是否有可能为我的每个rails应用程序获取一个日志文件.这对我的情况来说是可取的.
那可能吗?
@ cite的答案涵盖了区分应用程序的一个选项.但是,系统日志消息框架实际上有2个字段,使其更容易:hostname和tag(更常见的并用作程序名称).
hostname系统syslog守护程序在将消息转发到集中式服务器之前设置.它对于同一系统上的所有应用程序都是相同的,但是当您经过1台服务器时可能会很方便.
更有趣的是tag.您的应用程序定义tag它何时实例化SyslogLogger.例如:
SyslogLogger.new('app1')
Run Code Online (Sandbox Code Playgroud)
logger类将作为syslogd发送到系统app1,并且出现在本地日志文件和任何远程syslog目标中(无需修改日志消息本身).默认是rails.所有现代syslog守护进程都可以基于tag; 请参阅program()syslog-ng和$programnamersyslog.
另外,值得注意的SyslogLogger是基本上包装C openlog()和syslog()函数,所以基本上所有的日志后配置都发生在系统守护进程上.通常这是可取的,但有时您可能希望您的Rails应用程序直接登录到特定目标(例如,简化自动部署,更改不允许的属性syslog(),或在无法访问系统守护程序的环境中运行).
我们遇到了几个这样的情况,并做了一个直接Logger替换,自己生成UDP数据包.该remote_syslog_logger宝石是在GitHub上.
是的,默认情况下,几乎所有 Unix都会将或工具syslogds中给出的消息写入同一文件中。但是,据我所知,您可以在每个设施的基础上指定日志文件,因此您可以将第一个应用程序日志记录到,将第二个应用程序日志记录到userlocal*syslogdlocal1.*local2.*依此类推。
此外,较新的系统日志守护程序syslog-ng允许通过根据正则表达式评估消息(将railsapp_1其中包含的日志字符串写入/var/log/railsapp_1.log等等)来将消息拆分到不同的文件。
因此,进行syslogd适当的配置即可完成(如果您的系统手册页无法帮助您执行此操作,则应在serverfault.com上询问更改该配置的具体细节。)
| 归档时间: |
|
| 查看次数: |
6152 次 |
| 最近记录: |