Class: Legion::Data::Connection::QueryFileLogger

Inherits:
Object
  • Object
show all
Includes:
Logging::Helper
Defined in:
lib/legion/data/connection.rb

Overview

File-based query logger that writes all SQL to a dedicated log file. Isolated from the main Legion::Logging domain.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Logging::Helper

#handle_exception

Constructor Details

#initialize(path) ⇒ QueryFileLogger

Returns a new instance of QueryFileLogger.



104
105
106
107
108
109
110
111
112
# File 'lib/legion/data/connection.rb', line 104

def initialize(path)
  @path = path
  dir = File.dirname(path)
  FileUtils.mkdir_p(dir)
  FileUtils.chmod(0o700, dir) if File.directory?(dir)
  @file = File.open(path, File::WRONLY | File::APPEND | File::CREAT, 0o600)
  @file.sync = true
  @mutex = Mutex.new
end

Instance Attribute Details

#pathObject (readonly)

Returns the value of attribute path.



102
103
104
# File 'lib/legion/data/connection.rb', line 102

def path
  @path
end

Instance Method Details

#closeObject



130
131
132
# File 'lib/legion/data/connection.rb', line 130

def close
  @mutex.synchronize { @file.close unless @file.closed? }
end

#debug(message) ⇒ Object



114
115
116
# File 'lib/legion/data/connection.rb', line 114

def debug(message)
  write('DEBUG', message)
end

#error(message) ⇒ Object



126
127
128
# File 'lib/legion/data/connection.rb', line 126

def error(message)
  write('ERROR', message)
end

#info(message) ⇒ Object



118
119
120
# File 'lib/legion/data/connection.rb', line 118

def info(message)
  write('INFO', message)
end

#warn(message) ⇒ Object



122
123
124
# File 'lib/legion/data/connection.rb', line 122

def warn(message)
  write('WARN', message)
end