rcommons 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/COPYING +202 -0
  2. data/Changes.rdoc +4 -0
  3. data/README.rdoc +21 -0
  4. data/Rakefile +277 -0
  5. data/doc/jamis.rb +589 -0
  6. data/lib/commons.rb +44 -0
  7. data/lib/commons/io/filename_utils.rb +54 -0
  8. data/lib/commons/lang/builder/to_s_builder.rb +124 -0
  9. data/lib/commons/lang/builder/to_s_style.rb +493 -0
  10. data/lib/commons/lang/class_loader.rb +77 -0
  11. data/lib/commons/lang/class_utils.rb +50 -0
  12. data/lib/commons/lang/object_utils.rb +61 -0
  13. data/lib/commons/lang/state_error.rb +41 -0
  14. data/lib/commons/lang/system_utils.rb +113 -0
  15. data/lib/commons/lang/time/date_utils.rb +47 -0
  16. data/lib/commons/lang/time/duration_format_utils.rb +279 -0
  17. data/lib/commons/lang/time/stop_watch.rb +207 -0
  18. data/lib/commons/logging/impl/log4r_logger.rb +159 -0
  19. data/lib/commons/logging/impl/log_factory_impl.rb +253 -0
  20. data/lib/commons/logging/impl/no_op_log.rb +59 -0
  21. data/lib/commons/logging/impl/simple_log.rb +251 -0
  22. data/lib/commons/logging/log.rb +106 -0
  23. data/lib/commons/logging/log_configuration_error.rb +40 -0
  24. data/lib/commons/logging/log_factory.rb +177 -0
  25. data/lib/commons/ruby/exception.rb +46 -0
  26. data/lib/commons/ruby/log4r.rb +34 -0
  27. data/lib/commons/ruby/log4r/logger.rb +116 -0
  28. data/lib/commons/ruby/string.rb +55 -0
  29. data/lib/commons/ruby/test/unit.rb +33 -0
  30. data/lib/commons/ruby/test/unit/assertions.rb +50 -0
  31. data/lib/commons/util/properties.rb +84 -0
  32. data/test/commons/io/filename_utils_test.rb +69 -0
  33. data/test/commons/lang/builder/to_s_builder_test.rb +101 -0
  34. data/test/commons/lang/system_utils_test.rb +75 -0
  35. data/test/commons/lang/time/duration_format_utils_test.rb +261 -0
  36. data/test/commons/lang/time/stop_watch_test.rb +232 -0
  37. data/test/commons/logging/impl/log4r_logger_test.rb +133 -0
  38. data/test/commons/logging/log_factory_test.rb +80 -0
  39. data/test/commons/ruby/string_test.rb +64 -0
  40. data/test/commons/util/properties_test.rb +92 -0
  41. data/test/log4r/logger_test.rb +92 -0
  42. metadata +123 -0
@@ -0,0 +1,59 @@
1
+ # = No Operation Logger
2
+ #
3
+ #--
4
+ # Ruby version 1.8
5
+ #
6
+ # == Authors
7
+ # * Yomei Komiya
8
+ #
9
+ # == Copyright
10
+ # 2008 the original author or authors.
11
+ #
12
+ # == License
13
+ # Apache License 2.0
14
+ #
15
+ # Licensed under the Apache License, Version 2.0 (the "License");
16
+ # you may not use this file except in compliance with the License.
17
+ # You may obtain a copy of the License at
18
+ #
19
+ # http://www.apache.org/licenses/LICENSE-2.0
20
+ #
21
+ # Unless required by applicable law or agreed to in writing, software
22
+ # distributed under the License is distributed on an "AS IS" BASIS,
23
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24
+ # See the License for the specific language governing permissions and
25
+ # limitations under the License.
26
+ #++
27
+ # == Version
28
+ # SVN: $Id: no_op_log.rb 77 2008-10-12 12:07:49Z whitestar $
29
+ #
30
+ # == Since
31
+ # File available since Release 0.8.0
32
+
33
+ require 'commons/logging/log'
34
+
35
+ module Commons
36
+ module Logging
37
+ module Impl
38
+
39
+ class NoOpLog
40
+ include Commons::Logging::Log
41
+
42
+ def initialize(name = nil)
43
+ # do nothing.
44
+ end
45
+
46
+
47
+ def log(level, message, exception = nil)
48
+ # do nothing.
49
+ end
50
+
51
+
52
+ def enabled_for?(level)
53
+ return false
54
+ end
55
+ end
56
+
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,251 @@
1
+ # = Simple Log
2
+ #
3
+ #--
4
+ # Ruby version 1.8
5
+ #
6
+ # == Authors
7
+ # * Yomei Komiya
8
+ #
9
+ # == Copyright
10
+ # 2008 the original author or authors.
11
+ #
12
+ # == License
13
+ # Apache License 2.0
14
+ #
15
+ # Licensed under the Apache License, Version 2.0 (the "License");
16
+ # you may not use this file except in compliance with the License.
17
+ # You may obtain a copy of the License at
18
+ #
19
+ # http://www.apache.org/licenses/LICENSE-2.0
20
+ #
21
+ # Unless required by applicable law or agreed to in writing, software
22
+ # distributed under the License is distributed on an "AS IS" BASIS,
23
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24
+ # See the License for the specific language governing permissions and
25
+ # limitations under the License.
26
+ #++
27
+ # == Version
28
+ # SVN: $Id: simple_log.rb 77 2008-10-12 12:07:49Z whitestar $
29
+ #
30
+ # == Since
31
+ # File available since Release 0.8.0
32
+
33
+ require 'commons/ruby/exception'
34
+
35
+ require 'commons/lang/system_utils'
36
+ require 'commons/logging/log'
37
+ require 'commons/logging/impl/no_op_log'
38
+ require 'commons/util/properties'
39
+
40
+ module Commons
41
+ module Logging
42
+ module Impl
43
+
44
+ class SimpleLog < NoOpLog
45
+ include Commons::Logging::Log
46
+
47
+ SYSTEM_PREFIX = 'commons.logging.simplelog.'
48
+
49
+ DEFAULT_DATE_TIME_FORMAT = '%Y/%m/%d %H:%M:%S %Z'
50
+
51
+ LOG_LEVEL_ALL = 0
52
+
53
+ LOG_LEVEL_TRACE = 1
54
+
55
+ LOG_LEVEL_DEBUG = 2
56
+
57
+ LOG_LEVEL_INFO = 3
58
+
59
+ LOG_LEVEL_WARN = 4
60
+
61
+ LOG_LEVEL_ERROR = 5
62
+
63
+ LOG_LEVEL_FATAL = 6
64
+
65
+ LOG_LEVEL_OFF = 7
66
+
67
+ @@simple_log_props = nil
68
+
69
+ @@show_log_name = false
70
+
71
+ @@show_short_name = true
72
+
73
+ @@show_date_time = false
74
+
75
+ @@date_time_format = DEFAULT_DATE_TIME_FORMAT
76
+
77
+
78
+ def self.get_string_property(name, default = nil)
79
+ prop = nil;
80
+ prop = ENV[name]
81
+ prop = prop == nil ? @@simple_log_props.get_property(name) : prop
82
+ return prop == nil ? default : prop
83
+ end
84
+
85
+
86
+ def self.get_boolean_property(name, default)
87
+ prop = get_string_property(name)
88
+ prop.upcase! unless prop == nil
89
+ return prop == nil ? default : prop == 'TRUE'
90
+ end
91
+ class << self
92
+ private :get_boolean_property
93
+ end
94
+
95
+
96
+ def self.static_initialize
97
+ @@simple_log_props = Commons::Util::Properties.new
98
+
99
+ # Add props from the resource simplelog.properties
100
+ props_path = Commons::Lang::ClassLoader.get_resource('simplelog.properties')
101
+ File.open(props_path, 'r') {|file|
102
+ @@simple_log_props.load(file)
103
+ }
104
+
105
+ @@show_log_name = get_boolean_property(
106
+ SYSTEM_PREFIX + 'show_log_name', @@show_log_name)
107
+ @@show_short_name = get_boolean_property(
108
+ SYSTEM_PREFIX + 'show_short_name', @@show_short_name)
109
+ @@show_date_time = get_boolean_property(
110
+ SYSTEM_PREFIX + 'show_date_time', @@show_date_time)
111
+ end
112
+ class << self
113
+ protected :static_initialize
114
+ end
115
+ self.static_initialize
116
+
117
+
118
+ attr_accessor :stderr, :log_name, :current_log_level
119
+
120
+ protected :stderr, :log_name, :current_log_level
121
+
122
+
123
+ def initialize(name = nil)
124
+ super(name)
125
+
126
+ @stderr = false
127
+
128
+ @log_name = name
129
+
130
+ @current_log_level
131
+
132
+ @short_log_name = nil
133
+
134
+ # Set log level from properties
135
+ lvl = self.class.get_string_property(SYSTEM_PREFIX + 'log.' + @log_name)
136
+ i = name == nil ? -1 : name.rindex('::')
137
+ while lvl == nil && i > -1
138
+ name = name[0 ... i]
139
+ lvl = self.class.get_string_property(SYSTEM_PREFIX + 'log.' + name)
140
+ i = name.rindex('::')
141
+ end
142
+
143
+ if lvl == nil
144
+ lvl = self.class.get_string_property(SYSTEM_PREFIX + 'default_log')
145
+ end
146
+
147
+ lvl = lvl.upcase
148
+ case lvl
149
+ when 'ALL' then set_level(LOG_LEVEL_ALL)
150
+ when 'TRACE' then set_level(LOG_LEVEL_TRACE)
151
+ when 'DEBUG' then set_level(LOG_LEVEL_DEBUG)
152
+ when 'INFO' then set_level(LOG_LEVEL_INFO)
153
+ when 'WARN' then set_level(LOG_LEVEL_WARN)
154
+ when 'ERROR' then set_level(LOG_LEVEL_ERROR)
155
+ when 'FATAL' then set_level(LOG_LEVEL_FATAL)
156
+ when 'OFF' then set_level(LOG_LEVEL_OFF)
157
+ else set_level(LOG_LEVEL_INFO)
158
+ end
159
+ end
160
+
161
+
162
+ def set_level(current_log_level)
163
+ @current_log_level = current_log_level
164
+ end
165
+
166
+
167
+ def get_level
168
+ return @current_log_level
169
+ end
170
+
171
+
172
+ def log(level, message, exception = nil)
173
+ if message == nil
174
+ message = '<null>'
175
+ end
176
+
177
+ buf = ''
178
+
179
+ if @@show_date_time
180
+ now = Time.now
181
+ buf.concat(
182
+ now.strftime(@@date_time_format) + ' +' + now.usec.to_s)
183
+ buf.concat(' ')
184
+ end
185
+
186
+ case level
187
+ when TRACE then buf.concat('[TRACE] ')
188
+ when DEBUG then buf.concat('[DEBUG] ')
189
+ when INFO then buf.concat('[INFO] ')
190
+ when WARN then buf.concat('[WARN] ')
191
+ when ERROR then buf.concat('[ERROR] ')
192
+ when FATAL then buf.concat('[FATAL] ')
193
+ end
194
+
195
+ if @@show_short_name
196
+ if @short_log_name == nil
197
+ # Cut all but the last component of the name
198
+ delim_rindex = @log_name.rindex('::')
199
+ if delim_rindex != nil
200
+ @short_log_name = @log_name[delim_rindex + 2 .. -1]
201
+ end
202
+ end
203
+ buf.concat(@short_log_name).concat(' - ')
204
+ elsif @@show_log_name
205
+ buf.concat(@log_name).concat(' - ')
206
+ end
207
+
208
+ buf.concat(message.to_s)
209
+
210
+ # Append stack trace if not null
211
+ if exception != nil
212
+ buf.concat(
213
+ ' <' + exception.class.name + ': ' + exception.message.to_s + '; ' \
214
+ + exception.stack_trace_string + '> ')
215
+ end
216
+
217
+ write(buf);
218
+ end
219
+
220
+
221
+ def write(buffer)
222
+ $stderr.write(buffer.to_s + Commons::Lang::SystemUtils.line_separator)
223
+ end
224
+ protected :write
225
+
226
+
227
+ def enabled_for?(level)
228
+ case level
229
+ when TRACE
230
+ level = LOG_LEVEL_TRACE
231
+ when DEBUG
232
+ level = LOG_LEVEL_DEBUG
233
+ when INFO
234
+ level = LOG_LEVEL_INFO
235
+ when WARN
236
+ level = LOG_LEVEL_WARN
237
+ when ERROR
238
+ level = LOG_LEVEL_ERROR
239
+ when FATAL
240
+ level = LOG_LEVEL_FATAL
241
+ else
242
+ level = LOG_LEVEL_OFF
243
+ end
244
+
245
+ return (level >= @current_log_level)
246
+ end
247
+ end
248
+
249
+ end
250
+ end
251
+ end
@@ -0,0 +1,106 @@
1
+ # = Log
2
+ #
3
+ #--
4
+ # Ruby version 1.8
5
+ #
6
+ # == Authors
7
+ # * Yomei Komiya
8
+ #
9
+ # == Copyright
10
+ # 2008 the original author or authors.
11
+ #
12
+ # == License
13
+ # Apache License 2.0
14
+ #
15
+ # Licensed under the Apache License, Version 2.0 (the "License");
16
+ # you may not use this file except in compliance with the License.
17
+ # You may obtain a copy of the License at
18
+ #
19
+ # http://www.apache.org/licenses/LICENSE-2.0
20
+ #
21
+ # Unless required by applicable law or agreed to in writing, software
22
+ # distributed under the License is distributed on an "AS IS" BASIS,
23
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24
+ # See the License for the specific language governing permissions and
25
+ # limitations under the License.
26
+ #++
27
+ # == Version
28
+ # SVN: $Id: log.rb 77 2008-10-12 12:07:49Z whitestar $
29
+ #
30
+ # == Since
31
+ # File available since Release 0.8.0
32
+
33
+ module Commons
34
+ module Logging
35
+
36
+ module Log
37
+ TRACE = :TRACE
38
+ DEBUG = :DEBUG
39
+ INFO = :INFO
40
+ WARN = :WARN
41
+ ERROR = :ERROR
42
+ FATAL = :FATAL
43
+
44
+
45
+ def trace(message, exception = nil)
46
+ log(TRACE, message, exception)
47
+ end
48
+
49
+
50
+ def debug(message, exception = nil)
51
+ log(DEBUG, message, exception)
52
+ end
53
+
54
+
55
+ def info(message, exception = nil)
56
+ log(INFO, message, exception)
57
+ end
58
+
59
+
60
+ def warn(message, exception = nil)
61
+ log(WARN, message, exception)
62
+ end
63
+
64
+
65
+ def error(message, exception = nil)
66
+ log(ERROR, message, exception)
67
+ end
68
+
69
+
70
+ def fatal(message, exception = nil)
71
+ log(FATAL, message, exception)
72
+ end
73
+
74
+
75
+ def trace?
76
+ return enabled_for?(TRACE)
77
+ end
78
+
79
+
80
+ def debug?
81
+ return enabled_for?(DEBUG)
82
+ end
83
+
84
+
85
+ def info?
86
+ return enabled_for?(INFO)
87
+ end
88
+
89
+
90
+ def warn?
91
+ return enabled_for?(WARN)
92
+ end
93
+
94
+
95
+ def error?
96
+ return enabled_for?(ERROR)
97
+ end
98
+
99
+
100
+ def fatal?
101
+ return enabled_for?(FATAL)
102
+ end
103
+ end
104
+
105
+ end
106
+ end
@@ -0,0 +1,40 @@
1
+ # = Log Configuration Error
2
+ #
3
+ #--
4
+ # Ruby version 1.8
5
+ #
6
+ # == Authors
7
+ # * Yomei Komiya
8
+ #
9
+ # == Copyright
10
+ # 2008 the original author or authors.
11
+ #
12
+ # == License
13
+ # Apache License 2.0
14
+ #
15
+ # Licensed under the Apache License, Version 2.0 (the "License");
16
+ # you may not use this file except in compliance with the License.
17
+ # You may obtain a copy of the License at
18
+ #
19
+ # http://www.apache.org/licenses/LICENSE-2.0
20
+ #
21
+ # Unless required by applicable law or agreed to in writing, software
22
+ # distributed under the License is distributed on an "AS IS" BASIS,
23
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24
+ # See the License for the specific language governing permissions and
25
+ # limitations under the License.
26
+ #++
27
+ # == Version
28
+ # SVN: $Id: log_configuration_error.rb 77 2008-10-12 12:07:49Z whitestar $
29
+ #
30
+ # == Since
31
+ # File available since Release 0.8.0
32
+
33
+ module Commons
34
+ module Logging
35
+
36
+ class LogConfigurationError < RuntimeError
37
+ end
38
+
39
+ end
40
+ end