lapis 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lapis.rb +33 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8bb0850e11a2e937e6f7b3fb28cd4f01e525d7c7
|
4
|
+
data.tar.gz: 1a7d57ce4c871b8c794ba5d673ca7733d592c8a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 834af6d35e9aa5243521b805e8b5fbdc08aea51b3f44259f2d52d7e06ca48083d7c6e3762b84ab8d2bf392d8b384c475473b60c5b889fea7cfc8c0f4bf2ea40f
|
7
|
+
data.tar.gz: 530f1ea24b6adc23ddbb764b28289bc1af2e2a2908221b6f305d85ab0b8092bb156bf3adee624e113a2a425ec3d2409466804e703c9688f5a8e7a1bd88df105e
|
data/lib/lapis.rb
CHANGED
@@ -1,7 +1,16 @@
|
|
1
1
|
module Lapis
|
2
2
|
|
3
|
-
VERSION = '0.2.
|
3
|
+
VERSION = '0.2.4'
|
4
4
|
|
5
|
+
# +Lapis::Logger+ is a simple, lightweight logging utility. It is fully
|
6
|
+
# customizable; in particular, you can customize the following:
|
7
|
+
# * +levels+ -- An array of symbols, which determines the valid levels. See
|
8
|
+
# its' documentation for more info.
|
9
|
+
# * +formatter+ -- A lambda, used for formatting output. Upon a call to log,
|
10
|
+
# this will be called with the severity of the message and the message
|
11
|
+
# itself (in that order).
|
12
|
+
# * +output_channel+ -- An IO object, representing the destination for all
|
13
|
+
# output.
|
5
14
|
class Logger
|
6
15
|
|
7
16
|
# Special levels that will be sent to +@levels+ as method calls.
|
@@ -9,15 +18,19 @@ module Lapis
|
|
9
18
|
|
10
19
|
# An array of all valid severity levels. Each levels' offset in this array
|
11
20
|
# determines its relative importance.
|
21
|
+
# @return [Array<Symbol>]
|
12
22
|
attr_accessor :levels
|
13
23
|
|
14
24
|
# The minimum severity level required for printing
|
25
|
+
# @return [Symbol]
|
15
26
|
attr_reader :level
|
16
27
|
|
17
28
|
# A lambda, used to format the output
|
29
|
+
# @return [Lambda]
|
18
30
|
attr_accessor :formatter
|
19
31
|
|
20
32
|
# The IO channel to output to
|
33
|
+
# @return [IO]
|
21
34
|
attr_reader :output_channel
|
22
35
|
|
23
36
|
def initialize(out = $stdout, level = :info,
|
@@ -31,6 +44,10 @@ module Lapis
|
|
31
44
|
end
|
32
45
|
end
|
33
46
|
|
47
|
+
# A factory method for logging to files. Functions exactly as the regular
|
48
|
+
# +new+ method, expect instead of expecting an IO object, it expects the
|
49
|
+
# name of a file.
|
50
|
+
# @param file [String] the name of the file to log output to
|
34
51
|
def self.open(file, level = :info,
|
35
52
|
levels = [:debug, :info, :warn, :error, :fatal])
|
36
53
|
new(File.open(file, "w"), level, levels)
|
@@ -46,23 +63,38 @@ module Lapis
|
|
46
63
|
end
|
47
64
|
end
|
48
65
|
|
66
|
+
# Determine if the specified severity level is important (i.e., will be
|
67
|
+
# printed when that level is called).
|
68
|
+
# @param severity [Symbol] the severity level to check
|
69
|
+
# @return [Boolean] whether the specified severity is important
|
49
70
|
def important?(severity)
|
50
71
|
@levels.index(severity) >= @levels.index(@level) if @levels.index(severity)
|
51
72
|
end
|
52
73
|
|
74
|
+
# Determine if we're logging to a file.
|
53
75
|
def file?
|
54
76
|
@output_channel.is_a? File
|
55
77
|
end
|
56
78
|
|
79
|
+
# Log a message. +severity+ is expected to be the name of a severity level,
|
80
|
+
# and +msg+ is a string denoting the message to be logged. If we're logging
|
81
|
+
# to a file, the file's buffer will be flushed immediately after logging.
|
82
|
+
# @param severity [Symbol] how severe the message is
|
83
|
+
# @param msg [String] the message to be logged
|
84
|
+
# @return [void]
|
57
85
|
def log(severity, msg)
|
58
86
|
@formatter.call(severity, msg) if important?(severity)
|
59
87
|
output_channel.flush if file?
|
60
88
|
end
|
89
|
+
|
90
|
+
private
|
61
91
|
|
92
|
+
# @api private
|
62
93
|
def respond_to_missing?(name, include_private = false)
|
63
94
|
@levels.include?(name) || super
|
64
95
|
end
|
65
96
|
|
97
|
+
# @api private
|
66
98
|
def method_missing(name, *args)
|
67
99
|
return super unless @levels.include?(name)
|
68
100
|
if args.length == 1
|