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
113
# File 'lib/legion/data/connection.rb', line 104

def initialize(path)
  @path = path
  @closed = false
  @mutex = Mutex.new
  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
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



131
132
133
134
135
136
# File 'lib/legion/data/connection.rb', line 131

def close
  @mutex.synchronize do
    @closed = true
    @file.close unless @file.closed?
  end
end

#debug(message) ⇒ Object



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

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

#error(message) ⇒ Object



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

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

#info(message) ⇒ Object



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

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

#warn(message) ⇒ Object



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

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