我使用gem“Lograge”0.3.6和Rails 4.2。我在我的config/environments/development.rb文件中配置了这个
config.lograge.enabled = true
config.lograge.formatter = CustomLogstash.new
但是,我注意到log/development.log文件中的输出并不包含每行前面的日期/时间。如何配置lograge(或者只是我的Rails日志记录器)?)在文件的每一行前面加上日期和时间?
4条答案
按热度按时间suzh9iv81#
根据document,lograge gem提供了以下日志格式化程序。
默认情况下,lograge gem使用
Lograge::Formatters::KeyValue.new
作为日志。您可以通过使用
CustomLogStash
类进行一些更改来定制它并使其通用。同样,您可以使用任何
Lograge::Formatters
类并将自定义格式应用于日志。现在将下面的代码添加到
config/initializers/lograge.rb
文件中。现在重新启动服务器并在浏览器中加载页面。您将看到类似下面的日志:
已编辑
如果您正在查找类似x1c 0d1x的日志
那么你不需要任何宝石。您可以通过在首选的开发/生产/测试环境中添加以下行来实现此目的
如果您想在所有环境中应用此功能,请将上面的行添加到
config/application.rb
文件中。js5cn81o2#
如果有帮助的话,你可以在配置中添加以下内容吗?
它会给予你如下的输出
mpgws1up3#
是否可以粘贴CustomLogstash类的内容?从docs来看,该类应该响应call方法,返回Hash。
这对我很有效:
上面的示例输出:
svmlkihl4#
根据
lograge
的official documentation,您可以使用custom_options
编辑1:custom_options使用
time: Time.now
或time:event.time
注意:使用logstash输出时,需要添加额外的gem logstash-event。您可以简单地将其添加到Gemfile中,如下所示
编辑2:根据评论更新custom_options使用
:time => event.time
或以下自定义选项,该选项是使用**
time: event.time.to_s(:db)
**记录的lograge issue to ensure both日期和时间中的修复或者您可以使用此Custom logger
对于Rails4.2,不要忘记添加ActiveSupport::TaggedLogging,以便能够像调用默认的rails logger一样调用自定义logger
ActiveSupport::TaggedLogging用于 Package 任何标准日志记录器示例,以便向日志语句添加“标记”。在这种情况下,一个“标记”通常描述一个子域,默认的Rails.logger使用它来允许您用子域、请求id等标记日志语句。在多用户、多示例生产应用程序中。
Formatter
类。