Class: ThinkingData::TDLoggerConsumer

Inherits:
Object
  • Object
show all
Defined in:
lib/thinkingdata-ruby/td_logger_consumer.rb

Overview

Write data to file, it works with LogBus

Instance Method Summary collapse

Constructor Details

#initialize(log_path = '.', mode = 'daily', prefix: 'te.log') ⇒ TDLoggerConsumer

Init logger consumer

@param log_path: log file's path
@param mode: file rotate mode
@param prefix: file prefix


30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/thinkingdata-ruby/td_logger_consumer.rb', line 30

def initialize(log_path='.', mode='daily', prefix:'te.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)
  @log_path = log_path
  @full_prefix = "#{log_path}/#{prefix}"
  TDLog.info("TDLoggerConsumer init success. LogPath: #{log_path}")
  _reset
end

Instance Method Details

#add(msg) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/thinkingdata-ruby/td_logger_consumer.rb', line 49

def add(msg)
  unless Time.now.strftime(@suffix_mode) == @current_suffix
    @logger.close
    @current_suffix = Time.now.strftime(@suffix_mode)
    _reset
  end
  msg_json_str = msg.to_json
  TDLog.info("Write data to file: #{msg_json_str}")
  @logger.info(msg_json_str)
end

#closeObject



60
61
62
63
# File 'lib/thinkingdata-ruby/td_logger_consumer.rb', line 60

def close
  @logger.close
  TDLog.info("TDLoggerConsumer close.")
end