logeasy 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/example/easylog.css +39 -0
- data/lib/example/example.rb +12 -6
- data/lib/logeasy/appender.rb +47 -28
- data/lib/logeasy/formatters.rb +15 -7
- metadata +3 -2
@@ -0,0 +1,39 @@
|
|
1
|
+
/*
|
2
|
+
Simple css file for HTML logs.
|
3
|
+
While selecting a font, choose one that is mono-spaced.
|
4
|
+
Using white-space: pre; is strongly recommended since the log level is aligned using spaces.
|
5
|
+
*/
|
6
|
+
|
7
|
+
/* Recommend using a mono-spaced font. */
|
8
|
+
body {
|
9
|
+
font-family: "Consolas", sans-serif;
|
10
|
+
font-size: 1em;
|
11
|
+
}
|
12
|
+
|
13
|
+
body.log {
|
14
|
+
font-size: 85%;
|
15
|
+
}
|
16
|
+
|
17
|
+
/* Recommended. Ensures that the log levels (and unformatted messages) are properly aligned. */
|
18
|
+
span {
|
19
|
+
white-space: pre;
|
20
|
+
}
|
21
|
+
|
22
|
+
span.time {
|
23
|
+
font-family: "Courier New", sans-serif;
|
24
|
+
}
|
25
|
+
|
26
|
+
span.WARN {
|
27
|
+
background-color: #ff6600;
|
28
|
+
color: #ffffff;
|
29
|
+
}
|
30
|
+
|
31
|
+
span.ERROR {
|
32
|
+
background-color: #ff0000;
|
33
|
+
color: #ffffff;
|
34
|
+
}
|
35
|
+
|
36
|
+
span.FATAL {
|
37
|
+
background-color:#660000;
|
38
|
+
color: #ffffff;
|
39
|
+
}
|
data/lib/example/example.rb
CHANGED
@@ -31,12 +31,14 @@ end
|
|
31
31
|
|
32
32
|
file_appender_2 = LogEasy::FileAppender.new("easylog_example.log") # Simple file logger.
|
33
33
|
file_appender_2.min_level = LogEasy::Level::INFO # Specific level of INFO for the appender. The logger's level will not be applied to this appender now.
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
|
35
|
+
console_appender_1 = LogEasy::ConsoleAppender.new # Simple console appender.
|
36
|
+
console_appender_1.formatter = custom_formatter
|
37
|
+
|
38
|
+
file_appender_3 = LogEasy::HTMLFileAppender.new("easylog_example.html", "w", "easylog.css") # New HTML appender. Uses the STYLED_HTML_FORMATTER by default.
|
39
|
+
|
38
40
|
root_logger = LogEasy::Logger.root_logger # Get the handle to the root logger. The root logger's default level is ALL.
|
39
|
-
root_logger.add_appender(
|
41
|
+
root_logger.add_appender(console_appender_1) # Add the appenders to the root logger.
|
40
42
|
root_logger.add_appender(file_appender_2)
|
41
43
|
root_logger.add_appender(file_appender_3)
|
42
44
|
|
@@ -51,12 +53,16 @@ custom_logger.info("INFO message")
|
|
51
53
|
custom_logger.warn("WARN message")
|
52
54
|
custom_logger.error("ERROR message")
|
53
55
|
custom_logger.fatal("FATAL message")
|
54
|
-
custom_logger << "UNFORMATTED message"
|
56
|
+
custom_logger << "UNFORMATTED message\nIt has multiple lines.\n\tAnd tabs.\nAnd <escaped> characters."
|
55
57
|
|
56
58
|
# Adding a custom level.
|
57
59
|
custom_level = LogEasy::Level.new("FINER", 500) # ALL < FINER < FINE
|
58
60
|
custom_logger.log(custom_level, "Custom level message")
|
59
61
|
|
62
|
+
# Turn off parent appenders.
|
63
|
+
custom_logger.use_parent_logger = false
|
64
|
+
custom_logger.error("Not sent to parent.")
|
65
|
+
|
60
66
|
file_appender_1.close
|
61
67
|
file_appender_2.close
|
62
68
|
file_appender_3.close
|
data/lib/logeasy/appender.rb
CHANGED
@@ -80,18 +80,22 @@ module LogEasy
|
|
80
80
|
|
81
81
|
attr_reader :file
|
82
82
|
attr_reader :file_path
|
83
|
+
attr_reader :mode
|
83
84
|
|
84
85
|
# Creates a new file appender.
|
85
|
-
#
|
86
|
-
def initialize(file_path)
|
86
|
+
# By default, existing files are overwritten. Use the mode argument to control this.
|
87
|
+
def initialize(file_path, mode = "w")
|
87
88
|
super()
|
89
|
+
|
88
90
|
@file_path = file_path
|
91
|
+
@mode = mode
|
92
|
+
|
89
93
|
create_file
|
90
94
|
end
|
91
95
|
|
92
96
|
# Default create file will overwrite existing files.
|
93
97
|
def create_file
|
94
|
-
@file = File.open(file_path,
|
98
|
+
@file = File.open(file_path, mode)
|
95
99
|
end
|
96
100
|
|
97
101
|
# Writes the message to the file.
|
@@ -102,32 +106,29 @@ module LogEasy
|
|
102
106
|
|
103
107
|
end
|
104
108
|
|
105
|
-
# A
|
106
|
-
class ConcatFileAppender < FileAppender
|
107
|
-
|
108
|
-
private
|
109
|
-
|
110
|
-
# Overrides default create file. This will use an existing file.
|
111
|
-
def create_file
|
112
|
-
@file = File.open(file_path, "a")
|
113
|
-
end
|
114
|
-
|
115
|
-
end
|
116
|
-
|
109
|
+
# A simple HTML file appender.
|
117
110
|
class HTMLFileAppender < FileAppender
|
118
111
|
|
119
112
|
# Close the file.
|
120
113
|
def close
|
121
|
-
|
122
|
-
|
114
|
+
file.puts("</body>")
|
115
|
+
file.puts("\n</html>")
|
116
|
+
|
123
117
|
# Close the file.
|
124
118
|
super
|
125
119
|
end
|
126
120
|
|
127
|
-
#
|
121
|
+
# Write this log item. Since this is an HTML appender, even unformatted logs are sent to the formatter.
|
122
|
+
# If this appender's level is higher than the log item's level, this method will return immediately.
|
123
|
+
#
|
124
|
+
# 'log_item' - The log to write.
|
128
125
|
def do_log(log_item)
|
129
|
-
log_item.
|
130
|
-
|
126
|
+
return if log_item.level < min_level
|
127
|
+
# Escape characters before formatting it.
|
128
|
+
escape(log_item)
|
129
|
+
# Format the message and log it.
|
130
|
+
message = formatter.call(log_item)
|
131
|
+
write(message)
|
131
132
|
end
|
132
133
|
|
133
134
|
private
|
@@ -135,20 +136,38 @@ module LogEasy
|
|
135
136
|
attr_reader :external_css
|
136
137
|
|
137
138
|
# New HTML appender. Use in conjunction with a STYLED_HTML_FORMATTER for best results.
|
138
|
-
|
139
|
+
# STYLED_HTML_FORMATTER is the default formatter.
|
140
|
+
#
|
141
|
+
# By default the style sheet referenced is named log.css. Use the external_css argument to control this.
|
142
|
+
# By default existing files are overwritten. Use the mode argument to control this.
|
143
|
+
def initialize(file_path, mode = "w", external_css = "log.css")
|
139
144
|
@external_css = external_css
|
140
145
|
# Create the appender.
|
141
|
-
super(file_path)
|
146
|
+
super(file_path, mode)
|
147
|
+
# The default formatter is the Styled HTML Formatter.
|
148
|
+
self.formatter = Formatters::STYLED_HTML_FORMATTER
|
142
149
|
end
|
143
150
|
|
144
151
|
# Create the file. Adds the header details.
|
145
152
|
def create_file
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
153
|
+
# Create the file.
|
154
|
+
super
|
155
|
+
|
156
|
+
file.puts("<html>")
|
157
|
+
file.puts("<head><link rel=\"stylesheet\" href=\"#{external_css}\"></head>")
|
158
|
+
file.puts("\n<body class=\"log\">")
|
159
|
+
end
|
160
|
+
|
161
|
+
# Escapes all '<' and '>' characters.
|
162
|
+
def escape(log_item)
|
163
|
+
log_item.message = log_item.message.gsub(/<|>/) do |match|
|
164
|
+
case match
|
165
|
+
when "<"
|
166
|
+
next "<"
|
167
|
+
when ">"
|
168
|
+
next ">"
|
169
|
+
end
|
170
|
+
end
|
152
171
|
end
|
153
172
|
|
154
173
|
end
|
data/lib/logeasy/formatters.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
# 24-02-2011
|
4
4
|
#
|
5
5
|
|
6
|
+
require "logeasy/level"
|
7
|
+
|
6
8
|
module LogEasy
|
7
9
|
|
8
10
|
# Pre-defined formatter procs.
|
@@ -39,14 +41,20 @@ module LogEasy
|
|
39
41
|
# The level is wrapped in a <span class="level"> tag.
|
40
42
|
# The logger name is wrapped in a <span class="logger"> tag.
|
41
43
|
# The message is wrapped in a <span class="message"> tag.
|
44
|
+
#
|
45
|
+
# Unformatted messages are wrapped in a <span class="UNF"> tag, irrespective of the level they were logged at.
|
42
46
|
STYLED_HTML_FORMATTER = proc do |log_item|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
if log_item.unformatted
|
48
|
+
level_str = Level::UNFORMATTED.to_s
|
49
|
+
"<span class=\"#{level_str}\">#{log_item.message}</span><br />"
|
50
|
+
else
|
51
|
+
level_str = log_item.level.to_s
|
52
|
+
logger_name = "<span class=\"logger\">(#{log_item.logger.name})</span>"
|
53
|
+
level = "<span class=\"level\">#{("%-5s" % level_str)}</span>"
|
54
|
+
message = "<span class=\"message\">#{log_item.message}</span>"
|
55
|
+
timestamp = "<span class=\"time\">[#{log_item.timestamp.strftime(LOG_TIMESTAMP)}]</span>"
|
56
|
+
"<span class=\"#{level_str}\">#{timestamp} #{level} -- #{logger_name} #{message}</span><br />"
|
57
|
+
end
|
50
58
|
end
|
51
59
|
|
52
60
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logeasy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-02-
|
12
|
+
date: 2011-02-26 00:00:00.000000000 +05:30
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
description: Hierarchical logger for Ruby. The loggers are arranged in a tree. Output
|
@@ -26,6 +26,7 @@ files:
|
|
26
26
|
- lib/logeasy/log.rb
|
27
27
|
- lib/logeasy/logger.rb
|
28
28
|
- lib/example/example.rb
|
29
|
+
- lib/example/easylog.css
|
29
30
|
has_rdoc: true
|
30
31
|
homepage: http://rubyforge.org/projects/logeasy/
|
31
32
|
licenses: []
|