log4r 1.1.2 → 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README +2 -2
- data/Rakefile +3 -3
- data/TODO +0 -34
- data/examples/filelog.rb +25 -0
- data/examples/logs/TestSize000001.log +576 -0
- data/examples/logs/TestSize000002.log +567 -0
- data/examples/logs/TestSize000003.log +552 -0
- data/examples/logs/TestSize000004.log +552 -0
- data/examples/logs/TestSize000005.log +552 -0
- data/examples/logs/TestSize000006.log +552 -0
- data/examples/logs/TestSize000007.log +552 -0
- data/examples/logs/TestSize000008.log +552 -0
- data/examples/logs/TestSize000009.log +552 -0
- data/examples/logs/TestSize000010.log +552 -0
- data/examples/logs/TestSize000011.log +552 -0
- data/examples/logs/TestSize000012.log +552 -0
- data/examples/logs/TestSize000013.log +552 -0
- data/examples/logs/TestSize000014.log +552 -0
- data/examples/logs/TestSize000015.log +552 -0
- data/examples/logs/TestSize000016.log +552 -0
- data/examples/logs/TestSize000017.log +552 -0
- data/examples/logs/TestSize000018.log +552 -0
- data/examples/logs/TestSize000019.log +535 -0
- data/examples/logs/TestSize000020.log +534 -0
- data/examples/logs/TestSize000021.log +534 -0
- data/examples/logs/TestSize000022.log +534 -0
- data/examples/logs/TestSize000023.log +534 -0
- data/examples/logs/TestSize000024.log +534 -0
- data/examples/logs/TestSize000025.log +534 -0
- data/examples/logs/TestSize000026.log +534 -0
- data/examples/logs/TestSize000027.log +534 -0
- data/examples/logs/TestSize000028.log +534 -0
- data/examples/logs/TestSize000029.log +534 -0
- data/examples/logs/TestSize000030.log +534 -0
- data/examples/logs/TestSize000031.log +534 -0
- data/examples/logs/TestSize000032.log +534 -0
- data/examples/logs/TestSize000033.log +534 -0
- data/examples/logs/TestSize000034.log +534 -0
- data/examples/logs/TestSize000035.log +534 -0
- data/examples/logs/TestSize000036.log +534 -0
- data/examples/logs/TestSize000037.log +534 -0
- data/examples/logs/TestSize000038.log +534 -0
- data/examples/logs/TestSize000039.log +534 -0
- data/examples/logs/TestSize000040.log +534 -0
- data/examples/logs/TestSize000041.log +534 -0
- data/examples/logs/TestSize000042.log +534 -0
- data/examples/logs/TestSize000043.log +534 -0
- data/examples/logs/TestSize000044.log +534 -0
- data/examples/logs/TestSize000045.log +534 -0
- data/examples/logs/TestSize000046.log +534 -0
- data/examples/logs/TestSize000047.log +534 -0
- data/examples/logs/TestSize000048.log +534 -0
- data/examples/logs/TestSize000049.log +534 -0
- data/examples/logs/TestSize000050.log +534 -0
- data/examples/logs/TestSize000051.log +534 -0
- data/examples/logs/TestSize000052.log +534 -0
- data/examples/logs/TestSize000053.log +534 -0
- data/examples/logs/TestSize000054.log +534 -0
- data/examples/logs/TestSize000055.log +534 -0
- data/examples/logs/TestSize000056.log +534 -0
- data/examples/logs/TestSize000057.log +534 -0
- data/examples/logs/TestSize000058.log +534 -0
- data/examples/logs/TestSize000059.log +534 -0
- data/examples/logs/TestSize000060.log +534 -0
- data/examples/logs/TestSize000061.log +534 -0
- data/examples/logs/TestSize000062.log +534 -0
- data/examples/logs/TestSize000063.log +534 -0
- data/examples/logs/TestSize000064.log +534 -0
- data/examples/logs/TestSize000065.log +534 -0
- data/examples/logs/TestSize000066.log +534 -0
- data/examples/logs/TestSize000067.log +534 -0
- data/examples/logs/TestSize000068.log +534 -0
- data/examples/logs/TestSize000069.log +534 -0
- data/examples/logs/TestSize000070.log +534 -0
- data/examples/logs/TestSize000071.log +534 -0
- data/examples/logs/TestSize000072.log +534 -0
- data/examples/logs/TestSize000073.log +534 -0
- data/examples/logs/TestSize000074.log +534 -0
- data/examples/logs/TestSize000075.log +534 -0
- data/examples/logs/TestSize000076.log +534 -0
- data/examples/logs/TestSize000077.log +534 -0
- data/examples/logs/TestSize000078.log +534 -0
- data/examples/logs/TestSize000079.log +534 -0
- data/examples/logs/TestSize000080.log +534 -0
- data/examples/logs/TestSize000081.log +534 -0
- data/examples/logs/TestSize000082.log +534 -0
- data/examples/logs/TestSize000083.log +534 -0
- data/examples/logs/TestSize000084.log +534 -0
- data/examples/logs/TestSize000085.log +534 -0
- data/examples/logs/TestSize000086.log +534 -0
- data/examples/logs/TestSize000087.log +534 -0
- data/examples/logs/TestSize000088.log +534 -0
- data/examples/logs/TestSize000089.log +534 -0
- data/examples/logs/TestSize000090.log +534 -0
- data/examples/logs/TestSize000091.log +534 -0
- data/examples/logs/TestSize000092.log +534 -0
- data/examples/logs/TestSize000093.log +534 -0
- data/examples/logs/TestSize000094.log +534 -0
- data/examples/logs/TestSize000095.log +534 -0
- data/examples/logs/TestSize000096.log +534 -0
- data/examples/logs/TestSize000097.log +534 -0
- data/examples/logs/TestSize000098.log +534 -0
- data/examples/logs/TestSize000099.log +534 -0
- data/examples/logs/TestSize000100.log +534 -0
- data/examples/logs/TestSize000101.log +534 -0
- data/examples/logs/TestSize000102.log +534 -0
- data/examples/logs/TestSize000103.log +534 -0
- data/examples/logs/TestSize000104.log +534 -0
- data/examples/logs/TestSize000105.log +534 -0
- data/examples/logs/TestSize000106.log +534 -0
- data/examples/logs/TestSize000107.log +534 -0
- data/examples/logs/TestSize000108.log +534 -0
- data/examples/logs/TestSize000109.log +534 -0
- data/examples/logs/TestSize000110.log +534 -0
- data/examples/logs/TestSize000111.log +534 -0
- data/examples/logs/TestSize000112.log +534 -0
- data/examples/logs/TestSize000113.log +534 -0
- data/examples/logs/TestSize000114.log +534 -0
- data/examples/logs/TestSize000115.log +534 -0
- data/examples/logs/TestSize000116.log +534 -0
- data/examples/logs/TestSize000117.log +534 -0
- data/examples/logs/TestSize000118.log +534 -0
- data/examples/logs/TestSize000119.log +534 -0
- data/examples/logs/TestSize000120.log +534 -0
- data/examples/logs/TestSize000121.log +534 -0
- data/examples/logs/TestSize000122.log +534 -0
- data/examples/logs/TestSize000123.log +534 -0
- data/examples/logs/TestSize000124.log +534 -0
- data/examples/logs/TestSize000125.log +534 -0
- data/examples/logs/TestSize000126.log +534 -0
- data/examples/logs/TestSize000127.log +534 -0
- data/examples/logs/TestSize000128.log +534 -0
- data/examples/logs/TestSize000129.log +534 -0
- data/examples/logs/TestSize000130.log +534 -0
- data/examples/logs/TestSize000131.log +534 -0
- data/examples/logs/TestSize000132.log +534 -0
- data/examples/logs/TestSize000133.log +534 -0
- data/examples/logs/TestSize000134.log +534 -0
- data/examples/logs/TestSize000135.log +534 -0
- data/examples/logs/TestSize000136.log +534 -0
- data/examples/logs/TestSize000137.log +534 -0
- data/examples/logs/TestSize000138.log +534 -0
- data/examples/logs/TestSize000139.log +534 -0
- data/examples/logs/TestSize000140.log +534 -0
- data/examples/logs/TestSize000141.log +534 -0
- data/examples/logs/TestSize000142.log +534 -0
- data/examples/logs/TestSize000143.log +534 -0
- data/examples/logs/TestSize000144.log +534 -0
- data/examples/logs/TestSize000145.log +534 -0
- data/examples/logs/TestSize000146.log +534 -0
- data/examples/logs/TestSize000147.log +534 -0
- data/examples/logs/TestSize000148.log +534 -0
- data/examples/logs/TestSize000149.log +534 -0
- data/examples/logs/TestSize000150.log +534 -0
- data/examples/logs/TestSize000151.log +534 -0
- data/examples/logs/TestSize000152.log +534 -0
- data/examples/logs/TestSize000153.log +534 -0
- data/examples/logs/TestSize000154.log +534 -0
- data/examples/logs/TestSize000155.log +534 -0
- data/examples/logs/TestSize000156.log +534 -0
- data/examples/logs/TestSize000157.log +534 -0
- data/examples/logs/TestSize000158.log +534 -0
- data/examples/logs/TestSize000159.log +534 -0
- data/examples/logs/TestSize000160.log +534 -0
- data/examples/logs/TestSize000161.log +534 -0
- data/examples/logs/TestSize000162.log +534 -0
- data/examples/logs/TestSize000163.log +534 -0
- data/examples/logs/TestSize000164.log +534 -0
- data/examples/logs/TestSize000165.log +534 -0
- data/examples/logs/TestSize000166.log +534 -0
- data/examples/logs/TestSize000167.log +534 -0
- data/examples/logs/TestSize000168.log +534 -0
- data/examples/logs/TestSize000169.log +534 -0
- data/examples/logs/TestSize000170.log +534 -0
- data/examples/logs/TestSize000171.log +534 -0
- data/examples/logs/TestSize000172.log +534 -0
- data/examples/logs/TestSize000173.log +534 -0
- data/examples/logs/TestSize000174.log +534 -0
- data/examples/logs/TestSize000175.log +534 -0
- data/examples/logs/TestSize000176.log +534 -0
- data/examples/logs/TestSize000177.log +534 -0
- data/examples/logs/TestSize000178.log +534 -0
- data/examples/logs/TestSize000179.log +534 -0
- data/examples/logs/TestSize000180.log +534 -0
- data/examples/logs/TestSize000181.log +534 -0
- data/examples/logs/TestSize000182.log +534 -0
- data/examples/logs/TestSize000183.log +534 -0
- data/examples/logs/TestSize000184.log +534 -0
- data/examples/logs/TestSize000185.log +534 -0
- data/examples/logs/TestSize000186.log +534 -0
- data/examples/logs/TestSize000187.log +312 -0
- data/examples/logs/TestTime000001.log +11 -0
- data/examples/logs/TestTime000002.log +10 -0
- data/examples/logs/TestTime000003.log +10 -0
- data/examples/logs/TestTime000004.log +10 -0
- data/examples/logs/TestTime000005.log +10 -0
- data/examples/logs/TestTime000006.log +10 -0
- data/examples/logs/TestTime000007.log +10 -0
- data/examples/logs/TestTime000008.log +10 -0
- data/examples/logs/TestTime000009.log +10 -0
- data/examples/logs/TestTime000010.log +9 -0
- data/src/log4r.rb +5 -2
- data/src/log4r/GDC.rb +40 -0
- data/src/log4r/MDC.rb +59 -0
- data/src/log4r/NDC.rb +87 -0
- data/src/log4r/formatter/patternformatter.rb +11 -6
- data/src/log4r/outputter/bob.patch +25 -0
- data/src/log4r/outputter/emailoutputter.rb.orig +118 -0
- data/src/log4r/outputter/emailoutputter.rb.rej +46 -0
- data/src/log4r/outputter/fileoutputter.rb +12 -5
- data/src/log4r/outputter/rollingfileoutputter.rb +8 -3
- data/src/log4r/outputter/win32eventoutputter.rb +136 -0
- data/src/log4r/rdoc/GDC +14 -0
- data/src/log4r/rdoc/MDC +16 -0
- data/src/log4r/rdoc/NDC +41 -0
- data/src/log4r/rdoc/win32eventoutputter +7 -0
- data/src/log4r/repository.rb +73 -52
- data/src/log4r/yamlconfigurator.rb +0 -0
- data/tests/testGDC.rb +26 -0
- data/tests/testMDC.rb +21 -0
- data/tests/testNDC.rb +27 -0
- data/tests/testthreads.rb +23 -0
- metadata +215 -98
- data/src/doc/Log4r.html +0 -392
- data/src/doc/Log4r/BasicFormatter.html +0 -370
- data/src/doc/Log4r/ConfigError.html +0 -207
- data/src/doc/Log4r/Configurator.html +0 -1050
- data/src/doc/Log4r/DateFileOutputter.html +0 -454
- data/src/doc/Log4r/DefaultFormatter.html +0 -205
- data/src/doc/Log4r/EmailOutputter.html +0 -636
- data/src/doc/Log4r/FileOutputter.html +0 -321
- data/src/doc/Log4r/Formatter.html +0 -291
- data/src/doc/Log4r/IOOutputter.html +0 -392
- data/src/doc/Log4r/Log4rConfig.html +0 -193
- data/src/doc/Log4r/Log4rTools.html +0 -370
- data/src/doc/Log4r/LogEvent.html +0 -360
- data/src/doc/Log4r/LogServer.html +0 -322
- data/src/doc/Log4r/Logger.html +0 -1132
- data/src/doc/Log4r/Logger/LoggerFactory.html +0 -200
- data/src/doc/Log4r/Logger/Repository.html +0 -207
- data/src/doc/Log4r/ObjectFormatter.html +0 -262
- data/src/doc/Log4r/Outputter.html +0 -910
- data/src/doc/Log4r/Outputter/OutputterFactory.html +0 -200
- data/src/doc/Log4r/Outputter/consoleoutputters_rb.html +0 -57
- data/src/doc/Log4r/Outputter/datefileoutputter_rb.html +0 -93
- data/src/doc/Log4r/Outputter/emailoutputter_rb.html +0 -179
- data/src/doc/Log4r/Outputter/fileoutputter_rb.html +0 -64
- data/src/doc/Log4r/Outputter/iooutputter_rb.html +0 -59
- data/src/doc/Log4r/Outputter/outputter_rb.html +0 -222
- data/src/doc/Log4r/Outputter/outputterfactory_rb.html +0 -62
- data/src/doc/Log4r/Outputter/remoteoutputter_rb.html +0 -59
- data/src/doc/Log4r/Outputter/rollingfileoutputter_rb.html +0 -66
- data/src/doc/Log4r/Outputter/staticoutputter_rb.html +0 -55
- data/src/doc/Log4r/Outputter/syslogoutputter_rb.html +0 -110
- data/src/doc/Log4r/Outputter/tst_rb.html +0 -54
- data/src/doc/Log4r/PatternFormatter.html +0 -422
- data/src/doc/Log4r/ROMPClient.html +0 -193
- data/src/doc/Log4r/ROMPServer.html +0 -193
- data/src/doc/Log4r/RemoteOutputter.html +0 -384
- data/src/doc/Log4r/RollingFileOutputter.html +0 -528
- data/src/doc/Log4r/RootLogger.html +0 -512
- data/src/doc/Log4r/SimpleFormatter.html +0 -258
- data/src/doc/Log4r/StderrOutputter.html +0 -250
- data/src/doc/Log4r/StdoutOutputter.html +0 -250
- data/src/doc/Log4r/SyslogOutputter.html +0 -533
- data/src/doc/Log4r/YamlConfigurator.html +0 -948
- data/src/doc/Log4r/base_rb.html +0 -57
- data/src/doc/Log4r/config_rb.html +0 -76
- data/src/doc/Log4r/configurator_rb.html +0 -370
- data/src/doc/Log4r/formatter/formatter_rb.html +0 -121
- data/src/doc/Log4r/formatter/patternformatter_rb.html +0 -233
- data/src/doc/Log4r/lib/drbloader_rb.html +0 -57
- data/src/doc/Log4r/lib/xmlloader_rb.html +0 -57
- data/src/doc/Log4r/logevent_rb.html +0 -55
- data/src/doc/Log4r/logger_rb.html +0 -293
- data/src/doc/Log4r/loggerfactory_rb.html +0 -66
- data/src/doc/Log4r/logserver_rb.html +0 -161
- data/src/doc/Log4r/rdoc/configurator.html +0 -444
- data/src/doc/Log4r/rdoc/emailoutputter.html +0 -261
- data/src/doc/Log4r/rdoc/formatter.html +0 -200
- data/src/doc/Log4r/rdoc/log4r.html +0 -268
- data/src/doc/Log4r/rdoc/logger.html +0 -364
- data/src/doc/Log4r/rdoc/logserver.html +0 -247
- data/src/doc/Log4r/rdoc/outputter.html +0 -295
- data/src/doc/Log4r/rdoc/patternformatter.html +0 -313
- data/src/doc/Log4r/rdoc/syslogoutputter.html +0 -179
- data/src/doc/Log4r/rdoc/yamlconfigurator.html +0 -169
- data/src/doc/Log4r/repository_rb.html +0 -62
- data/src/doc/Log4r/staticlogger_rb.html +0 -55
- data/src/doc/Log4r/yamlconfigurator_rb.html +0 -95
- data/src/doc/REXML.html +0 -193
- data/src/doc/created.rid +0 -1
- data/src/doc/images/brick.png +0 -0
- data/src/doc/images/brick_link.png +0 -0
- data/src/doc/images/bug.png +0 -0
- data/src/doc/images/bullet_black.png +0 -0
- data/src/doc/images/bullet_toggle_minus.png +0 -0
- data/src/doc/images/bullet_toggle_plus.png +0 -0
- data/src/doc/images/date.png +0 -0
- data/src/doc/images/find.png +0 -0
- data/src/doc/images/loadingAnimation.gif +0 -0
- data/src/doc/images/macFFBgHack.png +0 -0
- data/src/doc/images/package.png +0 -0
- data/src/doc/images/page_green.png +0 -0
- data/src/doc/images/page_white_text.png +0 -0
- data/src/doc/images/page_white_width.png +0 -0
- data/src/doc/images/plugin.png +0 -0
- data/src/doc/images/ruby.png +0 -0
- data/src/doc/images/tag_green.png +0 -0
- data/src/doc/images/wrench.png +0 -0
- data/src/doc/images/wrench_orange.png +0 -0
- data/src/doc/images/zoom.png +0 -0
- data/src/doc/index.html +0 -384
- data/src/doc/js/darkfish.js +0 -116
- data/src/doc/js/jquery.js +0 -32
- data/src/doc/js/quicksearch.js +0 -114
- data/src/doc/js/thickbox-compressed.js +0 -10
- data/src/doc/rdoc.css +0 -696
- data/src/log4r/outputter/tst.rb +0 -8
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
2
|
# :nodoc:
|
3
|
-
# Version:: $Id: rollingfileoutputter.rb,v 1.
|
3
|
+
# Version:: $Id: rollingfileoutputter.rb,v 1.2 2009/09/29 18:13:13 colbygk Exp $
|
4
4
|
|
5
5
|
require "log4r/outputter/fileoutputter"
|
6
6
|
require "log4r/staticlogger"
|
@@ -18,7 +18,7 @@ module Log4r
|
|
18
18
|
|
19
19
|
def initialize(_name, hash={})
|
20
20
|
@count = 0
|
21
|
-
super(_name, hash)
|
21
|
+
super( _name, hash.merge({:create => false}) )
|
22
22
|
if hash.has_key?(:maxsize) || hash.has_key?('maxsize')
|
23
23
|
_maxsize = (hash[:maxsize] or hash['maxsize']).to_i
|
24
24
|
if _maxsize.class != Fixnum
|
@@ -85,7 +85,12 @@ module Log4r
|
|
85
85
|
# roll the file
|
86
86
|
def roll
|
87
87
|
begin
|
88
|
-
|
88
|
+
# If @baseFilename == @filename, then this method is about to
|
89
|
+
# try to close out a file that is not actually opened because
|
90
|
+
# fileoutputter has been called with the parameter roll=true
|
91
|
+
if ( @baseFilename != @filename ) then
|
92
|
+
@out.close
|
93
|
+
end
|
89
94
|
rescue
|
90
95
|
Logger.log_internal {
|
91
96
|
"RollingFileOutputter '#{@name}' could not close #{@filename}"
|
@@ -0,0 +1,136 @@
|
|
1
|
+
# :include: ../rdoc/win32eventoutputter
|
2
|
+
#
|
3
|
+
# Version:: $Id: syslogoutputter.rb,v 1.5 2009/09/25 20:33:33 colbygk Exp $
|
4
|
+
# Author:: Colby Gutierrez-Kraybill
|
5
|
+
#
|
6
|
+
# NOTE: THIS IS A DEVELOPMENT VERSION AND IS NOT READY FOR USE
|
7
|
+
# INFACT, IT MAY NEVER BE READY FOR USE, AS TRYING TO INTERACT
|
8
|
+
# WITH THE WIN32 EVENTLOG API REQUIRES USER INTERVENTION TO LOOKUP
|
9
|
+
# event_id AND category CODES THAT THIS LIBRARY CANNOT KNOW A PRIORI
|
10
|
+
#
|
11
|
+
# I have added this to the cvs tree to keep as a work in flight
|
12
|
+
# It is presently UNUSABLE
|
13
|
+
#
|
14
|
+
|
15
|
+
require 'log4r/formatter/formatter'
|
16
|
+
require 'log4r/outputter/outputter'
|
17
|
+
require 'log4r/configurator'
|
18
|
+
require 'win32/eventlog'
|
19
|
+
|
20
|
+
module Log4r
|
21
|
+
include Win32
|
22
|
+
|
23
|
+
class Win32EventLogOutputter < Outputter
|
24
|
+
|
25
|
+
# maps default log4r levels to win32 event priorities
|
26
|
+
# (logevents never see ALL and OFF)
|
27
|
+
# WIN32EVENTLOG Levels are:
|
28
|
+
# "SUCCESS" => EVENTLOG_SUCCESS
|
29
|
+
# "AUDIT_SUCCESS" => AUDIT_SUCCESS
|
30
|
+
# "INFO" => EVENTLOG_INFO
|
31
|
+
# "WARN" => EVENTLOG_WARN
|
32
|
+
# "ERROR" => EVENTLOG_ERROR
|
33
|
+
# "AUDIT_FAILURE" => AUDIT_FAILURE
|
34
|
+
WIN32EVENTLOG_LEVELS_MAP = {
|
35
|
+
"SUCCESS" => EVENTLOG_SUCCESS,
|
36
|
+
"AUDIT_SUCCESS" => AUDIT_SUCCESS,
|
37
|
+
"INFO" => EVENTLOG_INFO,
|
38
|
+
"WARN" => EVENTLOG_WARN,
|
39
|
+
"ERROR" => EVENTLOG_ERROR,
|
40
|
+
"AUDIT_FAILURE" => AUDIT_FAILURE
|
41
|
+
}
|
42
|
+
|
43
|
+
# mapping from Log4r default levels to win32 eventlog, by string name
|
44
|
+
# "DEBUG" => "INFO" # by default DEBUG is not in win32 eventlog
|
45
|
+
# "INFO" => "INFO"
|
46
|
+
# "WARN" => "WARN"
|
47
|
+
# "ERROR" => "ERROR"
|
48
|
+
# "FATAL" => "ERROR" # by default FATAL is not in win32 eventlog
|
49
|
+
# "SUCCESS" => "SUCCESS" # by default SUCCESS is not in log4r
|
50
|
+
# "AUDIT_SUCCESS" => "AUDIT_SUCCESS" # by default AUDIT_SUCCESS is not in log4r
|
51
|
+
# "AUDIT_FAILURE" => "AUDIT_FAILURE" # by default AUDIT_FATAL is not in log4r
|
52
|
+
WIN32EVENTLOG_LOG4R_MAP = {
|
53
|
+
"DEBUG" => "INFO",
|
54
|
+
"INFO" => "INFO",
|
55
|
+
"WARN" => "WARN",
|
56
|
+
"ERROR" => "ERROR",
|
57
|
+
"FATAL" => "ERROR",
|
58
|
+
"SUCCESS" => "SUCCESS",
|
59
|
+
"AUDIT_SUCCESS" => "AUDIT_SUCCESS",
|
60
|
+
"AUDIT_FAILURE" => "AUDIT_FAILURE"
|
61
|
+
}
|
62
|
+
|
63
|
+
@levels_map = WIN32EVENTLOG_LOG4R_MAP
|
64
|
+
|
65
|
+
# There are 3 hash arguments
|
66
|
+
#
|
67
|
+
# [<tt>:registry_source</tt>] eventlog registry source, defaults to "Application"
|
68
|
+
# [<tt>:source</tt>] eventlog source, defaults to _name
|
69
|
+
def initialize(_name, hash={})
|
70
|
+
super(_name, hash)
|
71
|
+
registry_source = (hash[:registry_source] or hash['registry_source'] or "Application")
|
72
|
+
@source = (hash[:source] or hash['source'] or _name)
|
73
|
+
logopt = (hash[:logopt] or hash['logopt'] or LOG_PID | LOG_CONS).to_i
|
74
|
+
facility = (hash[:facility] or hash['facility'] or LOG_USER).to_i
|
75
|
+
map_levels_by_name_to_eventlog()
|
76
|
+
if ( Syslog.opened? ) then
|
77
|
+
Logger.log_internal { "Syslog already initialized, to alter, " +
|
78
|
+
"you must close first"}
|
79
|
+
end
|
80
|
+
# @syslog = ( Syslog.opened? ) ? Syslog : Syslog.open(ident, logopt, facility)
|
81
|
+
end
|
82
|
+
|
83
|
+
def closed?
|
84
|
+
return true # !@syslog.opened?
|
85
|
+
end
|
86
|
+
|
87
|
+
def close
|
88
|
+
#@syslog.close unless @syslog.nil?
|
89
|
+
#@level = OFF
|
90
|
+
OutputterFactory.create_methods(self)
|
91
|
+
Logger.log_internal {"Outputter '#{@name}' closed Syslog and set to OFF"}
|
92
|
+
end
|
93
|
+
|
94
|
+
# A single hash argument that maps custom names to eventlog names
|
95
|
+
#
|
96
|
+
# [<tt>levels_map</tt>] A map that will create a linkage between levels
|
97
|
+
# in a hash and underlying eventlog levels.
|
98
|
+
# By default, these are direct mapping of the log4r
|
99
|
+
# levels (e.g. "DEBUG" => "DEBUG")
|
100
|
+
# If you have defined your own custom levels, you
|
101
|
+
# should provide this underlying mapping, otherwise
|
102
|
+
# all messages will be mapped to the underlying eventlog
|
103
|
+
# level of INFO by default.
|
104
|
+
# e.g.
|
105
|
+
# You have created custom levels called:
|
106
|
+
# <tt>Configurator.custom_levels "HIGH", "MEDIUM", "LOW"</tt>
|
107
|
+
# To map these to 'equivilent' eventlog levels, after instantiatin
|
108
|
+
# a eventlogoutputter:
|
109
|
+
# <tt>EventLogOutputter.map_levels_by_name_to_eventlog(
|
110
|
+
# { "HIGH" => "ALERT", "MEDIUM" => "WARN", "LOW" => "INFO" }
|
111
|
+
# )</tt>
|
112
|
+
def map_levels_by_name_to_eventlog( lmap = WIN32EVENTLOG_LOG4R_MAP )
|
113
|
+
@levels_map = lmap
|
114
|
+
end
|
115
|
+
|
116
|
+
def get_levels_map()
|
117
|
+
return @levels_map
|
118
|
+
end
|
119
|
+
|
120
|
+
private
|
121
|
+
|
122
|
+
def canonical_log(logevent)
|
123
|
+
pri = SYSLOG_LEVELS_MAP[@levels_map[LNAMES[logevent.level]]] rescue pri = LOG_INFO
|
124
|
+
o = format(logevent)
|
125
|
+
if o.kind_of? Exception then
|
126
|
+
msg = "#{o.class} at (#{o.backtrace[0]}): #{o.message}"
|
127
|
+
elsif o.respond_to? :to_str then
|
128
|
+
msg = o.to_str
|
129
|
+
else
|
130
|
+
msg = o.inspect
|
131
|
+
end
|
132
|
+
|
133
|
+
# @syslog.log(pri, '%s', msg)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
data/src/log4r/rdoc/GDC
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
= GDC
|
2
|
+
|
3
|
+
The GDC class implements a copy of the Global Diagnostic Context, which
|
4
|
+
is not part of the Apache Log4j library, as of this writing (10 Jan 2009).
|
5
|
+
|
6
|
+
The GDC is like the NDC and MDC classes, only it is global to the
|
7
|
+
application (see NDC and MDC for details on those classes).
|
8
|
+
|
9
|
+
The GDC is local to the main thread, and any new threads will return
|
10
|
+
the value of the current GDC set in the main thread.
|
11
|
+
|
12
|
+
Only the main thread can set the GDC, any other threads that
|
13
|
+
attempt to will raise an exception.
|
14
|
+
|
data/src/log4r/rdoc/MDC
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
= MDC
|
2
|
+
|
3
|
+
The MDC class implements a copy of the Mapped Diagnostic Context, which
|
4
|
+
is part of the Apache Log4j library. See the NDC documentation for
|
5
|
+
more details. MDCs are much like NDCs, but instead of a stack context
|
6
|
+
it uses a map for holding this information.
|
7
|
+
|
8
|
+
This allows for selection of information out of the map when
|
9
|
+
the log message is being created.
|
10
|
+
|
11
|
+
MDCs are thread safe, and are unique to each thread.
|
12
|
+
|
13
|
+
An important difference between MDCs in Log4r vs Log4j is that they
|
14
|
+
only inherit from the main thread. Ruby treats all new threads as
|
15
|
+
being the children of the main thread, even if they are started
|
16
|
+
from a thread that is not main.
|
data/src/log4r/rdoc/NDC
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
= NDC
|
2
|
+
|
3
|
+
The NDC class implements a copy of the Nested Diagnostic Context, which
|
4
|
+
is part of the Apache Log4j library. Nested Diagnostic Contexts were
|
5
|
+
derived from Neil Harrison's article on "Patterns for Logging
|
6
|
+
Diagnostic Messages", part of the book "Pattern Languages of Program
|
7
|
+
Design 3" edited by Martin et al.
|
8
|
+
|
9
|
+
NDCs in Log4r are thread safe.
|
10
|
+
|
11
|
+
NDCs in log4r are close enough to NDCs in Log4j that I include its
|
12
|
+
documentation directly:
|
13
|
+
|
14
|
+
...
|
15
|
+
A Nested Diagnostic Context, or NDC in short, is an instrument to
|
16
|
+
distinguish interleaved log output from different sources. Log output
|
17
|
+
is typically interleaved when a server handles multiple clients
|
18
|
+
near-simultaneously.
|
19
|
+
|
20
|
+
Interleaved log output can still be meaningful if each log entry from
|
21
|
+
different contexts had a distinctive stamp. This is where NDCs come into
|
22
|
+
play.
|
23
|
+
|
24
|
+
Note that NDCs are managed on a per thread basis. NDC operations such as
|
25
|
+
push, pop(), clear(), getDepth() and setMaxDepth(int) affect the NDC of
|
26
|
+
the current thread only. NDCs of other threads remain unaffected.
|
27
|
+
...
|
28
|
+
|
29
|
+
An important difference between NDCs in Log4r vs Log4j is that you
|
30
|
+
do not have to called NDC.remove() when exiting a thread.
|
31
|
+
|
32
|
+
This class will automatically create Thread specific storage for the
|
33
|
+
current thread on the first call to any of its methods, i.e.
|
34
|
+
|
35
|
+
NDC.push( "client accept" );
|
36
|
+
|
37
|
+
New threads may inherit the NDC of the parent thread by making use of
|
38
|
+
the clone_stack() and inherit() methods. By default, the NDC is not
|
39
|
+
inherited automatically. This is unlike MDCs, which will inherit from
|
40
|
+
the main thread.
|
41
|
+
|
@@ -0,0 +1,7 @@
|
|
1
|
+
= Win32EventOutputter
|
2
|
+
|
3
|
+
THIS IS A DEVELOPMENT VERSION AND IS NOT READY FOR USE
|
4
|
+
INFACT, IT MAY NEVER BE READY FOR USE, AS TRYING TO INTERACT
|
5
|
+
WITH THE WIN32 EVENTLOG API REQUIRES USER INTERVENTION TO LOOKUP
|
6
|
+
event_id AND category CODES THAT THIS LIBRARY CANNOT KNOW A PRIORI
|
7
|
+
|
data/src/log4r/repository.rb
CHANGED
@@ -1,65 +1,86 @@
|
|
1
1
|
# :nodoc:
|
2
|
-
# Version:: $Id: repository.rb,v 1.
|
2
|
+
# Version:: $Id: repository.rb,v 1.2 2009/09/29 02:34:05 colbygk Exp $
|
3
|
+
#
|
4
|
+
# Using Thread.exclusive seems to be more efficient than using
|
5
|
+
# a class wide instance of Sync.synchronize in ruby 1.8.6 - Colby
|
6
|
+
#
|
7
|
+
# Using Sync.synchronize, 5000 iterations:
|
8
|
+
# real 3m55.493s user 3m45.557s sys 0m3.478s
|
9
|
+
#
|
10
|
+
# Using Thread.exclusive, 5000 iterations:
|
11
|
+
# real 2m35.859s user 2m33.951s sys 0m1.224s
|
12
|
+
#
|
3
13
|
|
4
14
|
require "singleton"
|
5
15
|
|
6
16
|
module Log4r
|
7
|
-
class Logger
|
17
|
+
class Logger
|
8
18
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
class Repository # :nodoc:
|
16
|
-
include Singleton
|
17
|
-
attr_reader :loggers
|
18
|
-
|
19
|
-
def initialize
|
20
|
-
@loggers = Hash.new
|
21
|
-
end
|
19
|
+
# The repository stores a Hash of loggers keyed to their fullnames and
|
20
|
+
# provides a few functions to reduce the code bloat in log4r/logger.rb.
|
21
|
+
# This class is supposed to be transparent to end users, hence it is
|
22
|
+
# a class within Logger. If anyone knows how to make this private,
|
23
|
+
# let me know.
|
22
24
|
|
23
|
-
|
24
|
-
|
25
|
-
|
25
|
+
class Repository # :nodoc:
|
26
|
+
include Singleton
|
27
|
+
attr_reader :loggers
|
26
28
|
|
27
|
-
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
# Retrieves all children of a parent
|
32
|
-
def self.all_children(parent)
|
33
|
-
# children have the parent name + delimiter in their fullname
|
34
|
-
daddy = parent.name + Private::Config::LoggerPathDelimiter
|
35
|
-
for fullname, logger in instance.loggers
|
36
|
-
yield logger if parent.is_root? || fullname =~ /#{daddy}/
|
29
|
+
def initialize
|
30
|
+
@loggers = Hash.new
|
37
31
|
end
|
38
|
-
end
|
39
32
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
for fullname, logger in instance.loggers
|
45
|
-
next if logger.is_root?
|
46
|
-
logger.parent = parent if logger.path =~ /^#{parent.fullname}$/
|
33
|
+
def self.[](fullname)
|
34
|
+
Thread.exclusive do
|
35
|
+
instance.loggers[fullname]
|
36
|
+
end # exclusive
|
47
37
|
end
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
38
|
+
|
39
|
+
def self.[]=(fullname, logger)
|
40
|
+
Thread.exclusive do
|
41
|
+
instance.loggers[fullname] = logger
|
42
|
+
end # exclusive
|
43
|
+
end
|
44
|
+
|
45
|
+
# Retrieves all children of a parent
|
46
|
+
def self.all_children(parent)
|
47
|
+
# children have the parent name + delimiter in their fullname
|
48
|
+
daddy = parent.name + Private::Config::LoggerPathDelimiter
|
49
|
+
Thread.exclusive do
|
50
|
+
for fullname, logger in instance.loggers
|
51
|
+
yield logger if parent.is_root? || fullname =~ /#{daddy}/
|
52
|
+
end
|
53
|
+
end # exclusive
|
54
|
+
end
|
55
|
+
|
56
|
+
# when new loggers are introduced, they may get inserted into
|
57
|
+
# an existing inheritance tree. this method
|
58
|
+
# updates the children of a logger to link their new parent
|
59
|
+
def self.reassign_any_children(parent)
|
60
|
+
Thread.exclusive do
|
61
|
+
for fullname, logger in instance.loggers
|
62
|
+
next if logger.is_root?
|
63
|
+
logger.parent = parent if logger.path =~ /^#{parent.fullname}$/
|
64
|
+
end
|
65
|
+
end # exclusive
|
66
|
+
end
|
67
|
+
|
68
|
+
# looks for the first defined logger in a child's path
|
69
|
+
# or nil if none found (which will then be rootlogger)
|
70
|
+
def self.find_ancestor(path)
|
71
|
+
arr = path.split Log4rConfig::LoggerPathDelimiter
|
72
|
+
logger = nil
|
73
|
+
Thread.exclusive do
|
74
|
+
while arr.size > 0 do
|
75
|
+
logger = Repository[arr.join(Log4rConfig::LoggerPathDelimiter)]
|
76
|
+
break unless logger.nil?
|
77
|
+
arr.pop
|
78
|
+
end
|
79
|
+
end # exclusive
|
80
|
+
logger
|
59
81
|
end
|
60
|
-
logger
|
61
|
-
end
|
62
82
|
|
63
|
-
|
64
|
-
end
|
65
|
-
end
|
83
|
+
end # class Repository
|
84
|
+
end # class Logger
|
85
|
+
end # Module Log4r
|
86
|
+
|
Binary file
|
data/tests/testGDC.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
$: << File.join("..","src")
|
2
|
+
require "test/unit"
|
3
|
+
require "log4r"
|
4
|
+
include Log4r
|
5
|
+
|
6
|
+
class TestGDC < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_gdc_default
|
9
|
+
assert(GDC.get() == "testGDC.rb", "Expected 'testGDC.rb' got '#{GDC.get()}'" )
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_gdc_set
|
13
|
+
assert_nothing_raised() { GDC.set("testGDCset") }
|
14
|
+
assert(GDC.get() == "testGDCset", "Expected 'testGDCset' got '#{GDC.get()}'" )
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_gdc_threaded
|
18
|
+
assert_nothing_raised() { GDC.set("testGDCset") }
|
19
|
+
t = Thread.new("test GDC thread") do |name|
|
20
|
+
assert_raise(RuntimeError) { GDC.set("somethingelse") }
|
21
|
+
end
|
22
|
+
t.join
|
23
|
+
assert(GDC.get() == "testGDCset", "Expected 'testGDCset' got '#{GDC.get()}'" )
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
data/tests/testMDC.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
$: << File.join("..","src")
|
2
|
+
require "test/unit"
|
3
|
+
require "log4r"
|
4
|
+
include Log4r
|
5
|
+
|
6
|
+
class TestMDC < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_multithread_copy
|
9
|
+
Log4r::MDC.put("user","colbygk")
|
10
|
+
t = Thread.new("test first copy") do |name|
|
11
|
+
assert(Log4r::MDC.get("user") == "colbygk",
|
12
|
+
"Did not get back expected value, '#{MDC.get("user")}'")
|
13
|
+
Log4r::MDC.put("user","unique")
|
14
|
+
assert(Log4r::MDC.get("user") == "unique",
|
15
|
+
"Did not get back expected value, '#{MDC.get("user")}'")
|
16
|
+
end
|
17
|
+
t.join
|
18
|
+
assert(Log4r::MDC.get("user") == "colbygk",
|
19
|
+
"Did not get back expected value, '#{MDC.get("user")}'")
|
20
|
+
end
|
21
|
+
end
|
data/tests/testNDC.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
$: << File.join("..","src")
|
2
|
+
require "test/unit"
|
3
|
+
require "log4r"
|
4
|
+
include Log4r
|
5
|
+
|
6
|
+
class TestNDC < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_ndc_remove_push
|
9
|
+
NDC.remove()
|
10
|
+
NDC.push("ndc")
|
11
|
+
assert(Log4r::NDC.get() == "ndc", "Expected 'ndc' got '#{NDC.get()}'" )
|
12
|
+
NDC.push("ndc")
|
13
|
+
assert(Log4r::NDC.get() == "ndc ndc", "Expected 'ndc ndc' got '#{NDC.get()}'" )
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_ndc_remove_push_clone_and_inherit
|
17
|
+
NDC.remove()
|
18
|
+
NDC.push("ndc")
|
19
|
+
NDC.push("ndc")
|
20
|
+
a = NDC.clone_stack()
|
21
|
+
NDC.remove()
|
22
|
+
assert(NDC.get() == "", "Expected '' got '#{NDC.get()}'" )
|
23
|
+
NDC.inherit(a)
|
24
|
+
assert(NDC.get() == "ndc ndc", "Expected 'ndc ndc' got '#{NDC.get()}'" )
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|