当前位置:  开发笔记 > 后端 > 正文

如何使用ruby以JSON格式记录系统状态

如何解决《如何使用ruby以JSON格式记录系统状态》经验,为你挑选了1个好方法。

我有一个ruby脚本,我使用GET方法记录系统状态,在日志中返回的输出是这样的:

1.2.3.111 - - [00/Jan/2016:08:21:24 +0000] "GET /service/sys/status HTTP/1.1" 200 15 0.0006 

我想以JSON格式记录这些.有没有办法可以做到这一点,虽然我知道这可以通过网络服务器以某种方式完成,但我不知道如何做到这一点.



1> Aleksei Mati..:

使用自定义Logger::Formatter:

require 'logger'
logger = Logger.new(STDOUT) # or retrieve the default application logger
logger.formatter = proc do |severity, datetime, progname, msg|
  %Q|{timestamp: "#{datetime.to_s}", message: "#{msg}"}\n|
end
logger.info "Hello, world!"
#? {timestamp: "2016-01-06 10:48:13 +0100", message: "Hello, world!"}

无论您希望消息都有双引号,最好将jsoning委托给专家(来自@aidan):

require 'json'
require 'logger'
logger = Logger.new(STDOUT) # or retrieve the default application logger
logger.formatter = proc do |severity, datetime, progname, msg|
  JSON.dump(timestamp: "#{datetime.to_s}", message: msg)
end
logger.info "Hello, world!"
#? {timestamp: "2016-01-06 10:48:13 +0100", message: "Hello, world!"}


不要尝试自己进行序列化.消息中的双引号将破坏编码.请改用`{timestamp:datetime,message:msg} .to_json`.当然,你需要包含`JSON`宝石.
推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有