Class: Percy::PercyLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/percy/percylogger.rb

Constant Summary collapse

DEBUG =
0
INFO =
1
WARN =
2
ERROR =
3
FATAL =
4
UNKNOWN =
5
LEVEL =
['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL', 'UNKNOWN']

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dirpath = Pathname.new($0).dirname.join('logs').expand_path, filename = 'log.log', level = DEBUG, time_format = '%d.%m.%Y %H:%M:%S') ⇒ PercyLogger

Returns a new instance of PercyLogger.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/percy/percylogger.rb', line 16

def initialize(dirpath = Pathname.new($0).dirname.join('logs').expand_path, filename = 'log.log', level = DEBUG, time_format = '%d.%m.%Y %H:%M:%S')
  @dirpath = dirpath
  @pathname = dirpath.join(filename)
  @level = level
  @time_format = time_format
  @mutex = Mutex.new
  
  unless @pathname.exist?
    unless @dirpath.directory?
      FileUtils.mkdir_p @dirpath
    end
    
    File.new(@pathname, 'w+')
  end
  
  @file = File.open(@pathname, 'a+')
  @file.sync = true
end

Instance Attribute Details

#fileObject

Returns the value of attribute file.



14
15
16
# File 'lib/percy/percylogger.rb', line 14

def file
  @file
end

#levelObject

Returns the value of attribute level.



14
15
16
# File 'lib/percy/percylogger.rb', line 14

def level
  @level
end

#time_formatObject

Returns the value of attribute time_format.



14
15
16
# File 'lib/percy/percylogger.rb', line 14

def time_format
  @time_format
end

Instance Method Details

#debug(message) ⇒ Object



48
49
50
# File 'lib/percy/percylogger.rb', line 48

def debug(message)
  write DEBUG, message
end

#error(message) ⇒ Object



60
61
62
# File 'lib/percy/percylogger.rb', line 60

def error(message)
  write ERROR, message
end

#fatal(message) ⇒ Object



64
65
66
# File 'lib/percy/percylogger.rb', line 64

def fatal(message)
  write FATAL, message
end

#info(message) ⇒ Object



52
53
54
# File 'lib/percy/percylogger.rb', line 52

def info(message)
  write INFO, message
end

#unknown(message) ⇒ Object



68
69
70
# File 'lib/percy/percylogger.rb', line 68

def unknown(message)
  write UNKNOWN, message
end

#warn(message) ⇒ Object



56
57
58
# File 'lib/percy/percylogger.rb', line 56

def warn(message)
  write WARN, message
end

#write(severity, message) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/percy/percylogger.rb', line 35

def write(severity, message)
  begin
    if severity >= @level
      @mutex.synchronize do
        @file.puts "#{LEVEL[severity]} #{Time.now.strftime(@time_format)} #{message}"
      end
    end
  rescue => e
    puts e.message
    puts e.backtrace.join('\n')
  end
end