Module: Tina4::Log

Defined in:
lib/tina4/log.rb

Constant Summary collapse

LEVELS =
{
  "[TINA4_LOG_ALL]" => 0,
  "[TINA4_LOG_DEBUG]" => 0,
  "[TINA4_LOG_INFO]" => 1,
  "[TINA4_LOG_WARNING]" => 2,
  "[TINA4_LOG_ERROR]" => 3,
  "[TINA4_LOG_NONE]" => 4
}.freeze
SEVERITY_MAP =
{
  debug: 0, info: 1, warn: 2, error: 3
}.freeze
COLORS =
{
  reset: "\e[0m", red: "\e[31m", green: "\e[32m",
  yellow: "\e[33m", blue: "\e[34m", magenta: "\e[35m",
  cyan: "\e[36m", gray: "\e[90m"
}.freeze
ANSI_RE =

ANSI escape code regex for stripping from file output

/\033\[[0-9;]*m/

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.log_dirObject (readonly)

Returns the value of attribute log_dir.



31
32
33
# File 'lib/tina4/log.rb', line 31

def log_dir
  @log_dir
end

Class Method Details

.clear_request_idObject



54
55
56
# File 'lib/tina4/log.rb', line 54

def clear_request_id
  @mutex.synchronize { @request_id = nil }
end

.configure(root_dir = Dir.pwd) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/tina4/log.rb', line 33

def configure(root_dir = Dir.pwd)
  @log_dir = File.join(root_dir, "logs")
  FileUtils.mkdir_p(@log_dir)

  @max_size_mb = (ENV["TINA4_LOG_MAX_SIZE"] || "10").to_i
  @max_size = @max_size_mb * 1024 * 1024
  @keep = (ENV["TINA4_LOG_KEEP"] || "5").to_i
  @json_mode = production?
  @log_file = File.join(@log_dir, "tina4.log")

  @console_level = resolve_level
  @request_id = nil
  @current_context = {}
  @mutex = Mutex.new
  @initialized = true
end

.debug(message, context = {}) ⇒ Object



70
71
72
# File 'lib/tina4/log.rb', line 70

def debug(message, context = {})
  log(:debug, message, context)
end

.error(message, context = {}) ⇒ Object



78
79
80
# File 'lib/tina4/log.rb', line 78

def error(message, context = {})
  log(:error, message, context)
end

.get_request_idObject



58
59
60
# File 'lib/tina4/log.rb', line 58

def get_request_id
  @mutex.synchronize { @request_id }
end

.info(message, context = {}) ⇒ Object



66
67
68
# File 'lib/tina4/log.rb', line 66

def info(message, context = {})
  log(:info, message, context)
end

.json_mode?Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/tina4/log.rb', line 62

def json_mode?
  @json_mode
end

.set_request_id(id) ⇒ Object



50
51
52
# File 'lib/tina4/log.rb', line 50

def set_request_id(id)
  @mutex.synchronize { @request_id = id }
end

.warning(message, context = {}) ⇒ Object



74
75
76
# File 'lib/tina4/log.rb', line 74

def warning(message, context = {})
  log(:warn, message, context)
end