logeasy 0.0.6 → 0.0.7
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/example.rb +10 -0
- data/lib/logeasy/appender.rb +43 -24
- data/lib/logeasy/formatters.rb +54 -0
- data/lib/logeasy/log.rb +5 -5
- data/lib/logeasy/logger.rb +1 -0
- metadata +3 -2
data/lib/example/example.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
# 19-02-2011
|
4
4
|
#
|
5
5
|
|
6
|
+
$LOAD_PATH << "../"
|
7
|
+
|
6
8
|
require "logeasy"
|
7
9
|
|
8
10
|
# Configuring the self logger. The self logger will log internal logger messages.
|
@@ -31,9 +33,13 @@ file_appender_2 = LogEasy::FileAppender.new("easylog_example.log") # Simple file
|
|
31
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.
|
32
34
|
console_appender_2 = LogEasy::ConsoleAppender.new # Simple console appender.
|
33
35
|
console_appender_2.formatter = custom_formatter
|
36
|
+
file_appender_3 = LogEasy::HTMLFileAppender.new("easylog_example.html", "easylog.css")
|
37
|
+
file_appender_3.formatter = LogEasy::Formatters::STYLED_HTML_FORMATTER
|
34
38
|
root_logger = LogEasy::Logger.root_logger # Get the handle to the root logger. The root logger's default level is ALL.
|
35
39
|
root_logger.add_appender(console_appender_2) # Add the appenders to the root logger.
|
36
40
|
root_logger.add_appender(file_appender_2)
|
41
|
+
root_logger.add_appender(file_appender_3)
|
42
|
+
|
37
43
|
|
38
44
|
# Logging to a child logger, sends messages to the parent loggers too (by default).
|
39
45
|
custom_logger = LogEasy::Logger.get_logger("Parent::Child") # Creates a logger. The '::' or '.' characters can be used to separate logger names.
|
@@ -50,3 +56,7 @@ custom_logger << "UNFORMATTED message"
|
|
50
56
|
# Adding a custom level.
|
51
57
|
custom_level = LogEasy::Level.new("FINER", 500) # ALL < FINER < FINE
|
52
58
|
custom_logger.log(custom_level, "Custom level message")
|
59
|
+
|
60
|
+
file_appender_1.close
|
61
|
+
file_appender_2.close
|
62
|
+
file_appender_3.close
|
data/lib/logeasy/appender.rb
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
#
|
5
5
|
|
6
6
|
require "time"
|
7
|
+
require "logeasy/formatters"
|
7
8
|
|
8
9
|
module LogEasy
|
9
10
|
|
@@ -12,29 +13,6 @@ module LogEasy
|
|
12
13
|
# A simple console logger and file logger are provided.
|
13
14
|
class Appender
|
14
15
|
|
15
|
-
# Timestamp format for use by log formatters.
|
16
|
-
LOG_TIMESTAMP = "%d-%m-%Y %H:%M:%S.%L %z"
|
17
|
-
|
18
|
-
# Default formatter that prints messages in the format [TIMESTAMP] [LEVEL] -- [LOGGER] - [MESSAGE]
|
19
|
-
DEFAULT_FORMATTER = proc do |log_item|
|
20
|
-
logger_name = log_item.logger.name
|
21
|
-
level = log_item.level
|
22
|
-
message = log_item.message
|
23
|
-
timestamp = log_item.timestamp.strftime(LOG_TIMESTAMP)
|
24
|
-
|
25
|
-
"[#{timestamp}] %-5s -- (%s) - %s\n" % [level, logger_name, message]
|
26
|
-
end
|
27
|
-
|
28
|
-
# Custom formatter that prints messages in the format [TIMESTAMP] [LEVEL] -- [LOGGER_FULL_NAME] - [MESSAGE]
|
29
|
-
FULL_LOGGER_NAME_FORMATTER = proc do |log_item|
|
30
|
-
logger_name = log_item.logger.full_name
|
31
|
-
level = log_item.level
|
32
|
-
message = log_item.message
|
33
|
-
timestamp = log_item.timestamp.strftime(LOG_TIMESTAMP)
|
34
|
-
|
35
|
-
"[#{timestamp}] %-5s -- (%s) - %s\n" % [level, logger_name, message]
|
36
|
-
end
|
37
|
-
|
38
16
|
attr_accessor :formatter
|
39
17
|
attr_accessor :logger
|
40
18
|
attr_accessor :min_level
|
@@ -56,7 +34,7 @@ module LogEasy
|
|
56
34
|
|
57
35
|
# Creates a new appender.
|
58
36
|
def initialize
|
59
|
-
@formatter = DEFAULT_FORMATTER
|
37
|
+
@formatter = Formatters::DEFAULT_FORMATTER
|
60
38
|
@allow_unformatted_messages = true
|
61
39
|
end
|
62
40
|
|
@@ -127,6 +105,8 @@ module LogEasy
|
|
127
105
|
# A file appender that writes to the end of the file if it exists.
|
128
106
|
class ConcatFileAppender < FileAppender
|
129
107
|
|
108
|
+
private
|
109
|
+
|
130
110
|
# Overrides default create file. This will use an existing file.
|
131
111
|
def create_file
|
132
112
|
@file = File.open(file_path, "a")
|
@@ -134,4 +114,43 @@ module LogEasy
|
|
134
114
|
|
135
115
|
end
|
136
116
|
|
117
|
+
class HTMLFileAppender < FileAppender
|
118
|
+
|
119
|
+
# Close the file.
|
120
|
+
def close
|
121
|
+
@file.puts("</body>")
|
122
|
+
@file.puts("</html>")
|
123
|
+
# Close the file.
|
124
|
+
super
|
125
|
+
end
|
126
|
+
|
127
|
+
# Override do_log to add a line feed to the end of an unformatted message.
|
128
|
+
def do_log(log_item)
|
129
|
+
log_item.message += "<br />" if log_item.unformatted
|
130
|
+
super
|
131
|
+
end
|
132
|
+
|
133
|
+
private
|
134
|
+
|
135
|
+
attr_reader :external_css
|
136
|
+
|
137
|
+
# New HTML appender. Use in conjunction with a STYLED_HTML_FORMATTER for best results.
|
138
|
+
def initialize(file_path, external_css = "log.css")
|
139
|
+
@external_css = external_css
|
140
|
+
# Create the appender.
|
141
|
+
super(file_path)
|
142
|
+
end
|
143
|
+
|
144
|
+
# Create the file. Adds the header details.
|
145
|
+
def create_file
|
146
|
+
@file = File.open(file_path, "w")
|
147
|
+
@file.puts("<html>")
|
148
|
+
@file.puts("<head>")
|
149
|
+
@file.puts("<link rel=\"stylesheet\" href=\"#{external_css}\">")
|
150
|
+
@file.puts("</head>")
|
151
|
+
@file.puts("<body>")
|
152
|
+
end
|
153
|
+
|
154
|
+
end
|
155
|
+
|
137
156
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#
|
2
|
+
# Suraj Vijayakumar
|
3
|
+
# 24-02-2011
|
4
|
+
#
|
5
|
+
|
6
|
+
module LogEasy
|
7
|
+
|
8
|
+
# Pre-defined formatter procs.
|
9
|
+
module Formatters
|
10
|
+
|
11
|
+
# Timestamp format for use by log formatters.
|
12
|
+
LOG_TIMESTAMP = "%d-%m-%Y %H:%M:%S.%L %z"
|
13
|
+
|
14
|
+
# Default formatter that prints messages in the format [TIMESTAMP] [LEVEL] -- [LOGGER] - [MESSAGE]
|
15
|
+
DEFAULT_FORMATTER = proc do |log_item|
|
16
|
+
logger_name = log_item.logger.name
|
17
|
+
level = log_item.level
|
18
|
+
message = log_item.message
|
19
|
+
timestamp = log_item.timestamp.strftime(LOG_TIMESTAMP)
|
20
|
+
|
21
|
+
"[#{timestamp}] %-5s -- (%s) - %s\n" % [level, logger_name, message]
|
22
|
+
end
|
23
|
+
|
24
|
+
# Custom formatter that prints messages in the format [TIMESTAMP] [LEVEL] -- [LOGGER_FULL_NAME] - [MESSAGE]
|
25
|
+
FULL_LOGGER_NAME_FORMATTER = proc do |log_item|
|
26
|
+
logger_name = log_item.logger.full_name
|
27
|
+
level = log_item.level
|
28
|
+
message = log_item.message
|
29
|
+
timestamp = log_item.timestamp.strftime(LOG_TIMESTAMP)
|
30
|
+
|
31
|
+
"[#{timestamp}] %-5s -- (%s) - %s\n" % [level, logger_name, message]
|
32
|
+
end
|
33
|
+
|
34
|
+
# Styled HTML formatter. Allows the logs to be formatted easily using a CSS.
|
35
|
+
#
|
36
|
+
# Each element is applied a class name.
|
37
|
+
# The whole log message is wrapped in a <span class="<LEVEL>"> tag.
|
38
|
+
# The timestamp is wrapped in a <span class="time"> tag.
|
39
|
+
# The level is wrapped in a <span class="level"> tag.
|
40
|
+
# The logger name is wrapped in a <span class="logger"> tag.
|
41
|
+
# The message is wrapped in a <span class="message"> tag.
|
42
|
+
STYLED_HTML_FORMATTER = proc do |log_item|
|
43
|
+
level_str = log_item.level.to_s
|
44
|
+
logger_name = "<span class=\"logger\">(#{log_item.logger.name})</span>"
|
45
|
+
level = "<span class=\"level\">#{("%-5s" % level_str).gsub(" ", " ")}</span>"
|
46
|
+
message = "<span class=\"message\">#{log_item.message}</span>"
|
47
|
+
timestamp = "<span class=\"time\">[#{log_item.timestamp.strftime(LOG_TIMESTAMP)}]</span>"
|
48
|
+
|
49
|
+
"<span class=\"#{log_item.level}\">#{timestamp} #{level} -- #{logger_name} #{message}</span><br />"
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
data/lib/logeasy/log.rb
CHANGED
@@ -8,11 +8,11 @@ module LogEasy
|
|
8
8
|
# Represents the actual log message. Simply a wrapper for the log information (i.e. level, logger, timestamp, message, etc...).
|
9
9
|
class Log
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
attr_accessor :logger
|
12
|
+
attr_accessor :level
|
13
|
+
attr_accessor :message
|
14
|
+
attr_accessor :timestamp
|
15
|
+
attr_accessor :unformatted
|
16
16
|
|
17
17
|
# New log item.
|
18
18
|
#
|
data/lib/logeasy/logger.rb
CHANGED
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.7
|
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-24 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
|
@@ -21,6 +21,7 @@ extra_rdoc_files: []
|
|
21
21
|
files:
|
22
22
|
- lib/logeasy.rb
|
23
23
|
- lib/logeasy/appender.rb
|
24
|
+
- lib/logeasy/formatters.rb
|
24
25
|
- lib/logeasy/level.rb
|
25
26
|
- lib/logeasy/log.rb
|
26
27
|
- lib/logeasy/logger.rb
|