class TDAnalytics::LoggerConsumer
将数据写入本地文件, 需配合 LogBus 将数据上传到服务器 由于 LogBus 有完善的失败重传机制,因此建议用户首先考虑此方案
Public Class Methods
new(log_path='.', mode='daily', prefix:'tda.log')
click to toggle source
LoggerConsumer
构造函数
log_path: 日志文件存放目录 mode: 日志文件切分模式,可选 daily/hourly prefix: 日志文件前缀,默认为 'tda.log', 日志文件名格式为: tda.log.2019-11-15
# File lib/thinkingdata-ruby/logger_consumer.rb, line 12 def initialize(log_path='.', mode='daily', prefix:'tda.log') case mode when 'hourly' @suffix_mode = '%Y-%m-%d-%H' when 'daily' @suffix_mode = '%Y-%m-%d' else raise IllegalParameterError.new("#{mode} is unsupported for LoggerConsumer. Replaced it by daily or hourly") end raise IllegalParameterError.new("prefix couldn't be empty") if prefix.nil? || prefix.length == 0 @current_suffix = Time.now.strftime(@suffix_mode) @full_prefix = "#{log_path}/#{prefix}." _reset end
Public Instance Methods
add(msg)
click to toggle source
# File lib/thinkingdata-ruby/logger_consumer.rb, line 31 def add(msg) unless Time.now.strftime(@suffix_mode) == @current_suffix @logger.close @current_suffix = Time.now.strftime(@suffix_mode) _reset end @logger.info(msg.to_json) end
close()
click to toggle source
关闭 logger
# File lib/thinkingdata-ruby/logger_consumer.rb, line 41 def close @logger.close end
Private Instance Methods
_reset()
click to toggle source
重新创建 logger 对象. LogBus 判断新文件会同时考虑文件名和 inode,因此默认的切分方式会导致数据重传
# File lib/thinkingdata-ruby/logger_consumer.rb, line 48 def _reset @logger = Logger.new("#{@full_prefix}#{@current_suffix}") @logger.level = Logger::INFO @logger.formatter = proc do |severity, datetime, progname, msg| "#{msg}\n" end end