我尝试遵循两个自述文件:logrange gem和logstash-logger gem都没有成功。
第一次尝试是使用一个简单的Ruby文件:
require 'logstash-logger'
logger = LogStashLogger.new(
type: :tcp,
host: 'abcdxxtr',
port: 3332,
verify_hostname: false
)
logger.debug message: 'hello-draft', foo: 'bar'
logger.info 'hello-draft => test'
从终端以ruby logstash_logger.rb
身份运行时,这是我得到的错误:
E, [2018-08-14T14:43:37.848226 #11853] ERROR -- : [LogStashLogger::Device::TCP] SocketError - getaddrinfo: nodename nor servname provided, or not known
与Rails API应用程序一起使用时,它似乎也没有发送任何东西。
Gemfile
中添加了以下宝石:
group :development do
gem 'lograge', '~> 0.10.0'
gem 'logstash-event', '~> 1.2'
gem 'logstash-logger', '~> 0.26.1'
end
config/environments/development.rb
中添加了以下几行:
config.lograge.enabled = true
config.lograge.base_controller_class = 'ActionController::API'
config.lograge.formatter = Lograge::Formatters::Logstash.new
config.lograge.logger = LogStashLogger.new(uri: ENV['logstash_uri'])
config.lograge.custom_options = lambda do |event|
{ name: "store-development" }
end
这是怎么了?我已经尝试使用另一种语法来初始化LogStashLogger
:
config.lograge.logger = LogStashLogger.new(type: :tcp, host: ENV['logstash_host'], port: ENV['logstash_port'])
不幸的是,仍然没有成功。
答案 0 :(得分:0)
使用类似的配置,我在某些Rails项目中遇到了类似的错误,而在其他项目中却没有:
type: :multi_delegator,
outputs: [
{ type: :file, path: 'log/test.log' },
{ type: :udp, host: 'localhost', port: 5228 },
{ type: :io, io: io }
]
在测试环境中可以将日志发送到多个位置。
原来是这个错误
getaddrinfo: nodename nor servname provided, or not known
是无法解析DNS时得到的。对我来说,那些没用的东西是由Sidekiq运行的,从localhost更改为127.0.0.1解决了这个问题。