Class: Ruil::Logger

Inherits:
Object
  • Object
show all
Defined in:
lib/ruil/logger.rb

Overview

Logger store records as lines in a file. Each line is coded in JSON format.

Constant Summary collapse

@@file_name =
nil
@@log_file =
nil

Instance Method Summary collapse

Constructor Details

#initialize(app, dir) ⇒ Logger

Create a new logger.



15
16
17
18
# File 'lib/ruil/logger.rb', line 15

def initialize(app, dir)
  @app        = app
  @dir        = dir
end

Instance Method Details

#call(env) ⇒ Object

Call the logger.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/ruil/logger.rb', line 32

def call(env)
  request = Rack::Request.new(env)
  status, header, body = @app.call(env)
  log_entry = {
    'timestamp'  => Time.now.to_i,
    'status'     => status,
    'path_info'  => request.path_info,
    'params'     => request.params,
    'url'        => request.url,
    'remote_ip'  => request.ip,
    'user_agent' => request.user_agent,
    'session_id' => request.session_options[:id]
  }
  unless request.session[:user].nil?
    log_entry['user_id'] = request.session[:user][:oid]
  end
  log_file << log_entry.to_json + "\n"
  [status, header, body]
end

#log_fileObject

Set the log_file using the current date.



21
22
23
24
25
26
27
28
29
# File 'lib/ruil/logger.rb', line 21

def log_file
  file_name = Time.now.strftime(File.join(@dir, '%Y-%m-%d.log'))
  unless @@file_name == file_name
    @@file_name = file_name
    @@log_file.close unless @@log_file.nil?
    @@log_file = File.new(@@file_name , 'a+')
  end
  @@log_file
end