log4r 1.1.6 → 1.1.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.
Files changed (121) hide show
  1. data/README +3 -3
  2. data/Rakefile +2 -2
  3. data/doc/rdoc/Log4r.html +519 -0
  4. data/doc/rdoc/Log4r/BasicFormatter.html +388 -0
  5. data/doc/rdoc/Log4r/ConfigError.html +225 -0
  6. data/doc/rdoc/Log4r/Configurator.html +1068 -0
  7. data/doc/rdoc/Log4r/DateFileOutputter.html +479 -0
  8. data/doc/rdoc/Log4r/DefaultFormatter.html +223 -0
  9. data/doc/rdoc/Log4r/EmailOutputter.html +654 -0
  10. data/doc/rdoc/Log4r/FileOutputter.html +346 -0
  11. data/doc/rdoc/Log4r/Formatter.html +309 -0
  12. data/doc/rdoc/Log4r/GDC.html +346 -0
  13. data/doc/rdoc/Log4r/GDC_rb.html +80 -0
  14. data/doc/rdoc/Log4r/IOOutputter.html +410 -0
  15. data/doc/rdoc/Log4r/Log4jXmlFormatter.html +337 -0
  16. data/doc/rdoc/Log4r/Log4rConfig.html +211 -0
  17. data/doc/rdoc/Log4r/Log4rTools.html +388 -0
  18. data/doc/rdoc/Log4r/LogEvent.html +378 -0
  19. data/doc/rdoc/Log4r/LogServer.html +340 -0
  20. data/doc/rdoc/Log4r/Logger.html +1150 -0
  21. data/doc/rdoc/Log4r/Logger/LoggerFactory.html +218 -0
  22. data/doc/rdoc/Log4r/Logger/Repository.html +225 -0
  23. data/doc/rdoc/Log4r/MDC.html +424 -0
  24. data/doc/rdoc/Log4r/MDC_rb.html +83 -0
  25. data/doc/rdoc/Log4r/NDC.html +632 -0
  26. data/doc/rdoc/Log4r/NDC_rb.html +110 -0
  27. data/doc/rdoc/Log4r/ObjectFormatter.html +280 -0
  28. data/doc/rdoc/Log4r/Outputter.html +934 -0
  29. data/doc/rdoc/Log4r/Outputter/OutputterFactory.html +218 -0
  30. data/doc/rdoc/Log4r/Outputter/consoleoutputters_rb.html +57 -0
  31. data/doc/rdoc/Log4r/Outputter/datefileoutputter_rb.html +93 -0
  32. data/doc/rdoc/Log4r/Outputter/emailoutputter_rb.html +179 -0
  33. data/doc/rdoc/Log4r/Outputter/fileoutputter_rb.html +64 -0
  34. data/doc/rdoc/Log4r/Outputter/iooutputter_rb.html +59 -0
  35. data/doc/rdoc/Log4r/Outputter/outputter_rb.html +222 -0
  36. data/doc/rdoc/Log4r/Outputter/outputterfactory_rb.html +62 -0
  37. data/doc/rdoc/Log4r/Outputter/remoteoutputter_rb.html +59 -0
  38. data/doc/rdoc/Log4r/Outputter/rollingfileoutputter_rb.html +66 -0
  39. data/doc/rdoc/Log4r/Outputter/staticoutputter_rb.html +55 -0
  40. data/doc/rdoc/Log4r/Outputter/syslogoutputter_rb.html +110 -0
  41. data/doc/rdoc/Log4r/Outputter/udpoutputter_rb.html +220 -0
  42. data/doc/rdoc/Log4r/PatternFormatter.html +404 -0
  43. data/doc/rdoc/Log4r/ROMPClient.html +211 -0
  44. data/doc/rdoc/Log4r/ROMPServer.html +211 -0
  45. data/doc/rdoc/Log4r/RemoteOutputter.html +402 -0
  46. data/doc/rdoc/Log4r/RollingFileOutputter.html +551 -0
  47. data/doc/rdoc/Log4r/RootLogger.html +530 -0
  48. data/doc/rdoc/Log4r/SimpleFormatter.html +276 -0
  49. data/doc/rdoc/Log4r/StderrOutputter.html +268 -0
  50. data/doc/rdoc/Log4r/StdoutOutputter.html +268 -0
  51. data/doc/rdoc/Log4r/SyslogOutputter.html +551 -0
  52. data/doc/rdoc/Log4r/UDPOutputter.html +379 -0
  53. data/doc/rdoc/Log4r/YamlConfigurator.html +966 -0
  54. data/doc/rdoc/Log4r/base_rb.html +57 -0
  55. data/doc/rdoc/Log4r/config_rb.html +122 -0
  56. data/doc/rdoc/Log4r/configurator_rb.html +370 -0
  57. data/doc/rdoc/Log4r/formatter/formatter_rb.html +121 -0
  58. data/doc/rdoc/Log4r/formatter/log4jxmlformatter_rb.html +64 -0
  59. data/doc/rdoc/Log4r/formatter/patternformatter_rb.html +239 -0
  60. data/doc/rdoc/Log4r/lib/drbloader_rb.html +57 -0
  61. data/doc/rdoc/Log4r/lib/xmlloader_rb.html +57 -0
  62. data/doc/rdoc/Log4r/logevent_rb.html +55 -0
  63. data/doc/rdoc/Log4r/logger_rb.html +293 -0
  64. data/doc/rdoc/Log4r/loggerfactory_rb.html +66 -0
  65. data/doc/rdoc/Log4r/logserver_rb.html +161 -0
  66. data/doc/rdoc/Log4r/rdoc/GDC.html +175 -0
  67. data/doc/rdoc/Log4r/rdoc/MDC.html +178 -0
  68. data/doc/rdoc/Log4r/rdoc/NDC.html +207 -0
  69. data/doc/rdoc/Log4r/rdoc/configurator.html +462 -0
  70. data/doc/rdoc/Log4r/rdoc/emailoutputter.html +279 -0
  71. data/doc/rdoc/Log4r/rdoc/formatter.html +218 -0
  72. data/doc/rdoc/Log4r/rdoc/log4r.html +286 -0
  73. data/doc/rdoc/Log4r/rdoc/logger.html +382 -0
  74. data/doc/rdoc/Log4r/rdoc/logserver.html +265 -0
  75. data/doc/rdoc/Log4r/rdoc/outputter.html +313 -0
  76. data/doc/rdoc/Log4r/rdoc/patternformatter.html +331 -0
  77. data/doc/rdoc/Log4r/rdoc/syslogoutputter.html +197 -0
  78. data/doc/rdoc/Log4r/rdoc/win32eventoutputter.html +165 -0
  79. data/doc/rdoc/Log4r/rdoc/yamlconfigurator.html +187 -0
  80. data/doc/rdoc/Log4r/repository_rb.html +74 -0
  81. data/doc/rdoc/Log4r/staticlogger_rb.html +55 -0
  82. data/doc/rdoc/Log4r/yamlconfigurator_rb.html +95 -0
  83. data/doc/rdoc/REXML.html +211 -0
  84. data/doc/rdoc/created.rid +1 -0
  85. data/doc/rdoc/images/brick.png +0 -0
  86. data/doc/rdoc/images/brick_link.png +0 -0
  87. data/doc/rdoc/images/bug.png +0 -0
  88. data/doc/rdoc/images/bullet_black.png +0 -0
  89. data/doc/rdoc/images/bullet_toggle_minus.png +0 -0
  90. data/doc/rdoc/images/bullet_toggle_plus.png +0 -0
  91. data/doc/rdoc/images/date.png +0 -0
  92. data/doc/rdoc/images/find.png +0 -0
  93. data/doc/rdoc/images/loadingAnimation.gif +0 -0
  94. data/doc/rdoc/images/macFFBgHack.png +0 -0
  95. data/doc/rdoc/images/package.png +0 -0
  96. data/doc/rdoc/images/page_green.png +0 -0
  97. data/doc/rdoc/images/page_white_text.png +0 -0
  98. data/doc/rdoc/images/page_white_width.png +0 -0
  99. data/doc/rdoc/images/plugin.png +0 -0
  100. data/doc/rdoc/images/ruby.png +0 -0
  101. data/doc/rdoc/images/tag_green.png +0 -0
  102. data/doc/rdoc/images/wrench.png +0 -0
  103. data/doc/rdoc/images/wrench_orange.png +0 -0
  104. data/doc/rdoc/images/zoom.png +0 -0
  105. data/doc/rdoc/index.html +585 -0
  106. data/doc/rdoc/js/darkfish.js +116 -0
  107. data/doc/rdoc/js/jquery.js +32 -0
  108. data/doc/rdoc/js/quicksearch.js +114 -0
  109. data/doc/rdoc/js/thickbox-compressed.js +10 -0
  110. data/doc/rdoc/log4r-rdoc.css +696 -0
  111. data/doc/rdoc/log4r_rb.html +207 -0
  112. data/doc/rdoc/rdoc.css +696 -0
  113. data/examples/rdoc-gen +2 -0
  114. data/src/log4r.rb +2 -2
  115. data/src/log4r/formatter/patternformatter.rb +15 -15
  116. data/src/log4r/outputter/udpoutputter.rb +4 -4
  117. data/tests/testchainsaw.rb +1 -1
  118. metadata +123 -8
  119. data/src/log4r/outputter/datefileoutputter.patch +0 -24
  120. data/src/log4r/outputter/diff +0 -14
  121. data/src/log4r/outputter/new-datefileoutputter.rb +0 -117
@@ -0,0 +1,207 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+ <head>
7
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
8
+
9
+ <title>File: NDC [1.1.7 Log4r API]</title>
10
+
11
+ <link type="text/css" media="screen" href="../../rdoc.css" rel="stylesheet" />
12
+
13
+ <script src="../../js/jquery.js" type="text/javascript"
14
+ charset="utf-8"></script>
15
+ <script src="../../js/thickbox-compressed.js" type="text/javascript"
16
+ charset="utf-8"></script>
17
+ <script src="../../js/quicksearch.js" type="text/javascript"
18
+ charset="utf-8"></script>
19
+ <script src="../../js/darkfish.js" type="text/javascript"
20
+ charset="utf-8"></script>
21
+ </head>
22
+
23
+ <body class="file">
24
+ <div id="metadata">
25
+ <div id="project-metadata">
26
+
27
+
28
+ <div id="fileindex-section" class="section project-section">
29
+ <h3 class="section-header">Files</h3>
30
+ <ul>
31
+
32
+ <li class="file"><a href="../../log4r/rdoc/GDC.html">GDC</a></li>
33
+
34
+ <li class="file"><a href="../../log4r/rdoc/MDC.html">MDC</a></li>
35
+
36
+ <li class="file"><a href="../../log4r/rdoc/NDC.html">NDC</a></li>
37
+
38
+ <li class="file"><a href="../../log4r/rdoc/configurator.html">configurator</a></li>
39
+
40
+ <li class="file"><a href="../../log4r/rdoc/emailoutputter.html">emailoutputter</a></li>
41
+
42
+ <li class="file"><a href="../../log4r/rdoc/formatter.html">formatter</a></li>
43
+
44
+ <li class="file"><a href="../../log4r/rdoc/log4r.html">log4r</a></li>
45
+
46
+ <li class="file"><a href="../../log4r/rdoc/logger.html">logger</a></li>
47
+
48
+ <li class="file"><a href="../../log4r/rdoc/logserver.html">logserver</a></li>
49
+
50
+ <li class="file"><a href="../../log4r/rdoc/outputter.html">outputter</a></li>
51
+
52
+ <li class="file"><a href="../../log4r/rdoc/patternformatter.html">patternformatter</a></li>
53
+
54
+ <li class="file"><a href="../../log4r/rdoc/syslogoutputter.html">syslogoutputter</a></li>
55
+
56
+ <li class="file"><a href="../../log4r/rdoc/win32eventoutputter.html">win32eventoutputter</a></li>
57
+
58
+ <li class="file"><a href="../../log4r/rdoc/yamlconfigurator.html">yamlconfigurator</a></li>
59
+
60
+ </ul>
61
+ </div>
62
+
63
+
64
+ <div id="classindex-section" class="section project-section">
65
+ <h3 class="section-header">Class Index
66
+ <span class="search-toggle"><img src="../../images/find.png"
67
+ height="16" width="16" alt="[+]"
68
+ title="show/hide quicksearch" /></span></h3>
69
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
70
+ <fieldset>
71
+ <legend>Quicksearch</legend>
72
+ <input type="text" name="quicksearch" value=""
73
+ class="quicksearch-field" />
74
+ </fieldset>
75
+ </form>
76
+
77
+ <ul class="link-list">
78
+
79
+ <li><a href="../../Log4r.html">Log4r</a></li>
80
+
81
+ <li><a href="../../Log4r/BasicFormatter.html">Log4r::BasicFormatter</a></li>
82
+
83
+ <li><a href="../../Log4r/ConfigError.html">Log4r::ConfigError</a></li>
84
+
85
+ <li><a href="../../Log4r/Configurator.html">Log4r::Configurator</a></li>
86
+
87
+ <li><a href="../../Log4r/DateFileOutputter.html">Log4r::DateFileOutputter</a></li>
88
+
89
+ <li><a href="../../Log4r/DefaultFormatter.html">Log4r::DefaultFormatter</a></li>
90
+
91
+ <li><a href="../../Log4r/EmailOutputter.html">Log4r::EmailOutputter</a></li>
92
+
93
+ <li><a href="../../Log4r/FileOutputter.html">Log4r::FileOutputter</a></li>
94
+
95
+ <li><a href="../../Log4r/Formatter.html">Log4r::Formatter</a></li>
96
+
97
+ <li><a href="../../Log4r/GDC.html">Log4r::GDC</a></li>
98
+
99
+ <li><a href="../../Log4r/IOOutputter.html">Log4r::IOOutputter</a></li>
100
+
101
+ <li><a href="../../Log4r/Log4jXmlFormatter.html">Log4r::Log4jXmlFormatter</a></li>
102
+
103
+ <li><a href="../../Log4r/Log4rTools.html">Log4r::Log4rTools</a></li>
104
+
105
+ <li><a href="../../Log4r/LogEvent.html">Log4r::LogEvent</a></li>
106
+
107
+ <li><a href="../../Log4r/LogServer.html">Log4r::LogServer</a></li>
108
+
109
+ <li><a href="../../Log4r/Logger.html">Log4r::Logger</a></li>
110
+
111
+ <li><a href="../../Log4r/MDC.html">Log4r::MDC</a></li>
112
+
113
+ <li><a href="../../Log4r/NDC.html">Log4r::NDC</a></li>
114
+
115
+ <li><a href="../../Log4r/ObjectFormatter.html">Log4r::ObjectFormatter</a></li>
116
+
117
+ <li><a href="../../Log4r/Outputter.html">Log4r::Outputter</a></li>
118
+
119
+ <li><a href="../../Log4r/PatternFormatter.html">Log4r::PatternFormatter</a></li>
120
+
121
+ <li><a href="../../Log4r/RemoteOutputter.html">Log4r::RemoteOutputter</a></li>
122
+
123
+ <li><a href="../../Log4r/RollingFileOutputter.html">Log4r::RollingFileOutputter</a></li>
124
+
125
+ <li><a href="../../Log4r/RootLogger.html">Log4r::RootLogger</a></li>
126
+
127
+ <li><a href="../../Log4r/SimpleFormatter.html">Log4r::SimpleFormatter</a></li>
128
+
129
+ <li><a href="../../Log4r/StderrOutputter.html">Log4r::StderrOutputter</a></li>
130
+
131
+ <li><a href="../../Log4r/StdoutOutputter.html">Log4r::StdoutOutputter</a></li>
132
+
133
+ <li><a href="../../Log4r/SyslogOutputter.html">Log4r::SyslogOutputter</a></li>
134
+
135
+ <li><a href="../../Log4r/UDPOutputter.html">Log4r::UDPOutputter</a></li>
136
+
137
+ <li><a href="../../Log4r/YamlConfigurator.html">Log4r::YamlConfigurator</a></li>
138
+
139
+ </ul>
140
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
141
+ </div>
142
+
143
+
144
+ </div>
145
+ </div>
146
+
147
+ <div id="documentation">
148
+ <h1>NDC</h1>
149
+ <p>
150
+ The NDC class implements a copy of the Nested Diagnostic Context, which is
151
+ part of the Apache Log4j library. Nested Diagnostic Contexts were derived
152
+ from Neil Harrison&#8217;s article on &#8220;Patterns for Logging
153
+ Diagnostic Messages&#8221;, part of the book &#8220;Pattern Languages of
154
+ Program Design 3&#8221; edited by Martin et al.
155
+ </p>
156
+ <p>
157
+ NDCs in <a href="../../Log4r.html">Log4r</a> are thread safe.
158
+ </p>
159
+ <p>
160
+ NDCs in log4r are close enough to NDCs in Log4j that I include its
161
+ documentation directly:
162
+ </p>
163
+ <p>
164
+ &#8230; A Nested Diagnostic Context, or NDC in short, is an instrument to
165
+ distinguish interleaved log output from different sources. Log output is
166
+ typically interleaved when a server handles multiple clients
167
+ near-simultaneously.
168
+ </p>
169
+ <p>
170
+ Interleaved log output can still be meaningful if each log entry from
171
+ different contexts had a distinctive stamp. This is where NDCs come into
172
+ play.
173
+ </p>
174
+ <p>
175
+ Note that NDCs are managed on a per thread basis. NDC operations such as
176
+ push, pop(), clear(), getDepth() and setMaxDepth(int) affect the NDC of the
177
+ current thread only. NDCs of other threads remain unaffected. &#8230;
178
+ </p>
179
+ <p>
180
+ An important difference between NDCs in <a
181
+ href="../../Log4r.html">Log4r</a> vs Log4j is that you do not have to
182
+ called NDC.remove() when exiting a thread.
183
+ </p>
184
+ <p>
185
+ This class will automatically create Thread specific storage for the
186
+ current thread on the first call to any of its methods, i.e.
187
+ </p>
188
+ <pre>
189
+ NDC.push( &quot;client accept&quot; );
190
+ </pre>
191
+ <p>
192
+ New threads may inherit the NDC of the parent thread by making use of the
193
+ clone_stack() and inherit() methods. By default, the NDC is not inherited
194
+ automatically. This is unlike MDCs, which will inherit from the main
195
+ thread.
196
+ </p>
197
+
198
+ </div>
199
+
200
+ <div id="validator-badges">
201
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
202
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
203
+ Rdoc Generator</a> 1.1.6</small>.</p>
204
+ </div>
205
+ </body>
206
+ </html>
207
+
@@ -0,0 +1,462 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+ <head>
7
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
8
+
9
+ <title>File: configurator [1.1.7 Log4r API]</title>
10
+
11
+ <link type="text/css" media="screen" href="../../rdoc.css" rel="stylesheet" />
12
+
13
+ <script src="../../js/jquery.js" type="text/javascript"
14
+ charset="utf-8"></script>
15
+ <script src="../../js/thickbox-compressed.js" type="text/javascript"
16
+ charset="utf-8"></script>
17
+ <script src="../../js/quicksearch.js" type="text/javascript"
18
+ charset="utf-8"></script>
19
+ <script src="../../js/darkfish.js" type="text/javascript"
20
+ charset="utf-8"></script>
21
+ </head>
22
+
23
+ <body class="file">
24
+ <div id="metadata">
25
+ <div id="project-metadata">
26
+
27
+
28
+ <div id="fileindex-section" class="section project-section">
29
+ <h3 class="section-header">Files</h3>
30
+ <ul>
31
+
32
+ <li class="file"><a href="../../log4r/rdoc/GDC.html">GDC</a></li>
33
+
34
+ <li class="file"><a href="../../log4r/rdoc/MDC.html">MDC</a></li>
35
+
36
+ <li class="file"><a href="../../log4r/rdoc/NDC.html">NDC</a></li>
37
+
38
+ <li class="file"><a href="../../log4r/rdoc/configurator.html">configurator</a></li>
39
+
40
+ <li class="file"><a href="../../log4r/rdoc/emailoutputter.html">emailoutputter</a></li>
41
+
42
+ <li class="file"><a href="../../log4r/rdoc/formatter.html">formatter</a></li>
43
+
44
+ <li class="file"><a href="../../log4r/rdoc/log4r.html">log4r</a></li>
45
+
46
+ <li class="file"><a href="../../log4r/rdoc/logger.html">logger</a></li>
47
+
48
+ <li class="file"><a href="../../log4r/rdoc/logserver.html">logserver</a></li>
49
+
50
+ <li class="file"><a href="../../log4r/rdoc/outputter.html">outputter</a></li>
51
+
52
+ <li class="file"><a href="../../log4r/rdoc/patternformatter.html">patternformatter</a></li>
53
+
54
+ <li class="file"><a href="../../log4r/rdoc/syslogoutputter.html">syslogoutputter</a></li>
55
+
56
+ <li class="file"><a href="../../log4r/rdoc/win32eventoutputter.html">win32eventoutputter</a></li>
57
+
58
+ <li class="file"><a href="../../log4r/rdoc/yamlconfigurator.html">yamlconfigurator</a></li>
59
+
60
+ </ul>
61
+ </div>
62
+
63
+
64
+ <div id="classindex-section" class="section project-section">
65
+ <h3 class="section-header">Class Index
66
+ <span class="search-toggle"><img src="../../images/find.png"
67
+ height="16" width="16" alt="[+]"
68
+ title="show/hide quicksearch" /></span></h3>
69
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
70
+ <fieldset>
71
+ <legend>Quicksearch</legend>
72
+ <input type="text" name="quicksearch" value=""
73
+ class="quicksearch-field" />
74
+ </fieldset>
75
+ </form>
76
+
77
+ <ul class="link-list">
78
+
79
+ <li><a href="../../Log4r.html">Log4r</a></li>
80
+
81
+ <li><a href="../../Log4r/BasicFormatter.html">Log4r::BasicFormatter</a></li>
82
+
83
+ <li><a href="../../Log4r/ConfigError.html">Log4r::ConfigError</a></li>
84
+
85
+ <li><a href="../../Log4r/Configurator.html">Log4r::Configurator</a></li>
86
+
87
+ <li><a href="../../Log4r/DateFileOutputter.html">Log4r::DateFileOutputter</a></li>
88
+
89
+ <li><a href="../../Log4r/DefaultFormatter.html">Log4r::DefaultFormatter</a></li>
90
+
91
+ <li><a href="../../Log4r/EmailOutputter.html">Log4r::EmailOutputter</a></li>
92
+
93
+ <li><a href="../../Log4r/FileOutputter.html">Log4r::FileOutputter</a></li>
94
+
95
+ <li><a href="../../Log4r/Formatter.html">Log4r::Formatter</a></li>
96
+
97
+ <li><a href="../../Log4r/GDC.html">Log4r::GDC</a></li>
98
+
99
+ <li><a href="../../Log4r/IOOutputter.html">Log4r::IOOutputter</a></li>
100
+
101
+ <li><a href="../../Log4r/Log4jXmlFormatter.html">Log4r::Log4jXmlFormatter</a></li>
102
+
103
+ <li><a href="../../Log4r/Log4rTools.html">Log4r::Log4rTools</a></li>
104
+
105
+ <li><a href="../../Log4r/LogEvent.html">Log4r::LogEvent</a></li>
106
+
107
+ <li><a href="../../Log4r/LogServer.html">Log4r::LogServer</a></li>
108
+
109
+ <li><a href="../../Log4r/Logger.html">Log4r::Logger</a></li>
110
+
111
+ <li><a href="../../Log4r/MDC.html">Log4r::MDC</a></li>
112
+
113
+ <li><a href="../../Log4r/NDC.html">Log4r::NDC</a></li>
114
+
115
+ <li><a href="../../Log4r/ObjectFormatter.html">Log4r::ObjectFormatter</a></li>
116
+
117
+ <li><a href="../../Log4r/Outputter.html">Log4r::Outputter</a></li>
118
+
119
+ <li><a href="../../Log4r/PatternFormatter.html">Log4r::PatternFormatter</a></li>
120
+
121
+ <li><a href="../../Log4r/RemoteOutputter.html">Log4r::RemoteOutputter</a></li>
122
+
123
+ <li><a href="../../Log4r/RollingFileOutputter.html">Log4r::RollingFileOutputter</a></li>
124
+
125
+ <li><a href="../../Log4r/RootLogger.html">Log4r::RootLogger</a></li>
126
+
127
+ <li><a href="../../Log4r/SimpleFormatter.html">Log4r::SimpleFormatter</a></li>
128
+
129
+ <li><a href="../../Log4r/StderrOutputter.html">Log4r::StderrOutputter</a></li>
130
+
131
+ <li><a href="../../Log4r/StdoutOutputter.html">Log4r::StdoutOutputter</a></li>
132
+
133
+ <li><a href="../../Log4r/SyslogOutputter.html">Log4r::SyslogOutputter</a></li>
134
+
135
+ <li><a href="../../Log4r/UDPOutputter.html">Log4r::UDPOutputter</a></li>
136
+
137
+ <li><a href="../../Log4r/YamlConfigurator.html">Log4r::YamlConfigurator</a></li>
138
+
139
+ </ul>
140
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
141
+ </div>
142
+
143
+
144
+ </div>
145
+ </div>
146
+
147
+ <div id="documentation">
148
+ <h1>Configuring <a href="../../Log4r.html">Log4r</a> with <a href="../../Log4r/Configurator.html">Log4r::Configurator</a></h1>
149
+ <p>
150
+ The Configurator class allows one to set up <a
151
+ href="../../Log4r.html">Log4r</a> via XML. Additionally, Configurator
152
+ contains methods to configure any <a href="../../Log4r.html">Log4r</a>
153
+ defaults. In particular, Configurator provides a method to customize the
154
+ logging levels.
155
+ </p>
156
+ <p>
157
+ <a href="../../Log4r.html">Log4r</a> is also configurable using YAML. For
158
+ that, there is a class similar to Configurator called <a
159
+ href="../../Log4r/YamlConfigurator.html">Log4r::YamlConfigurator</a>.
160
+ Please see <a
161
+ href="../yamlconfigurator_rb.html">log4r/yamlconfigurator.rb</a> for
162
+ details.
163
+ </p>
164
+ <p>
165
+ REXML is required for XML configuration. Get REXML at <a
166
+ href="http://www.ruby-lang.org/en/raa-list.rhtml?name=REXML">www.ruby-lang.org/en/raa-list.rhtml?name=REXML</a>
167
+ </p>
168
+ <p>
169
+ To use the Configurator class,
170
+ </p>
171
+ <pre>
172
+ require 'log4r/configurator'
173
+ </pre>
174
+ <h2>Custom Levels</h2>
175
+ <p>
176
+ Suppose you want the following levels and ranks:
177
+ </p>
178
+ <pre>
179
+ Foo &lt; Bar &lt; Baz
180
+ </pre>
181
+ <p>
182
+ This is easily accomplished:
183
+ </p>
184
+ <pre>
185
+ Configurator.custom_levels('Foo', 'Bar', :Baz)
186
+ </pre>
187
+ <p>
188
+ The method accepts strings or symbols. However, custom levels must have
189
+ names that are valid for Ruby constants. Also, custom levels should be set
190
+ before anything else is done with <a href="../../Log4r.html">Log4r</a>,
191
+ otherwise the default levels will be loaded.
192
+ </p>
193
+ <p>
194
+ You can set custom levels in XML. That&#8217;s covered in the following
195
+ section.
196
+ </p>
197
+ <h2>XML Configuration</h2>
198
+ <p>
199
+ If you have REXML, you can configure <a href="../../Log4r.html">Log4r</a>
200
+ with XML. To do this, first write an XML configuration (which you can learn
201
+ by studying this document and the examples provided in the distribution)
202
+ and then load up the XML from within your program as follows:
203
+ </p>
204
+ <pre>
205
+ Configurator.load_xml_file('/path/to/file.xml')
206
+ </pre>
207
+ <p>
208
+ The <a href="../../Log4r.html">Log4r</a> XML configuration system is very
209
+ flexible and powerful. In fact, it is somewhat preferable to configuring <a
210
+ href="../../Log4r.html">Log4r</a> in Ruby. In order to take full advantage
211
+ of this feature, there are several concepts one must know. They are covered
212
+ in the following three sections.
213
+ </p>
214
+ <h3>Concept: XML Directives</h3>
215
+ <p>
216
+ The expressive power of Ruby has enabled a feature I call <em>XML
217
+ directives</em>. An XML directive is a name-value pair belonging to some
218
+ element. It may be represented as an attribute (name=&#8220;value&#8221;)
219
+ of the element, or as a child (<name>value</name>) of the element.
220
+ Therefore, you are free to specify information about an object as either an
221
+ attribute or an element. An example should clarify:
222
+ </p>
223
+ <pre>
224
+ &lt;object data=&quot;value&quot;/&gt;
225
+ </pre>
226
+ <p>
227
+ Is equivalent to:
228
+ </p>
229
+ <pre>
230
+ &lt;object&gt;
231
+ &lt;data&gt;value&lt;/data&gt;
232
+ &lt;/object&gt;
233
+ </pre>
234
+ <p>
235
+ You can assume this behavior except where noted elsewhere in the API.
236
+ </p>
237
+ <h3>Concept: XML Parameters</h3>
238
+ <p>
239
+ A scheme which I call <em>XML parameters</em> enables one to utilize the
240
+ XML configuratin system for custom Outputters and Formatters. This requires
241
+ <b>no</b> extra work on your part, so long as your objects are set up using
242
+ hash arguments and can decode string values. That is, once you&#8217;ve
243
+ written a custom Outputter, it is automatically configurable in XML without
244
+ having to write any extra code.
245
+ </p>
246
+ <p>
247
+ An XML parameter is analogous to a hash argument to some object&#8217;s
248
+ <tt>new</tt> method. Consider these hash arguments to FileOutputter:
249
+ </p>
250
+ <pre>
251
+ :filename =&gt; '/path/to/logs/my.log'
252
+ :trunc =&gt; 'true'
253
+ </pre>
254
+ <p>
255
+ We can specify them in XML like this:
256
+ </p>
257
+ <pre>
258
+ &lt;outputter type=&quot;FileOutputter&quot; trunc=&quot;true&quot;&gt;
259
+ &lt;filename&gt;/path/to/logs/my.log&lt;/filename&gt;
260
+ ...
261
+ </pre>
262
+ <p>
263
+ The name of the element/attribute is just the name of the parameter. Note
264
+ that the input will be a string, thus it&#8217;s wise to convert the data
265
+ in from strings in any custom classes (to_i for integers, etc). Now
266
+ let&#8217;s suppose you have defined a custom Outputter named MyOutputter
267
+ with the following additional hash args:
268
+ </p>
269
+ <pre>
270
+ :myarg1 =&gt; 'foo'
271
+ :myarg2 =&gt; 123
272
+ </pre>
273
+ <p>
274
+ Automagically, you can configure your Outputter like so:
275
+ </p>
276
+ <pre>
277
+ &lt;outputter type=&quot;MyOutputter&quot; myarg2=&quot;123&quot;&gt;
278
+ &lt;myarg1&gt;foo&lt;/myarg1&gt;
279
+ ...
280
+ </pre>
281
+ <p>
282
+ Isn&#8217;t that nice? <tt>:-)</tt>
283
+ </p>
284
+ <h3>Concept: Variable Substitution</h3>
285
+ <p>
286
+ To kill the need for preprocessors, Configurator provides a means of
287
+ variable substitution for XML parameters at runtime. If you specify
288
+ <tt>#{foo}</tt> in an XML parameter value, Configurator will replace it
289
+ with the value of &#8216;foo&#8217; in its parameter hashtable. The primary
290
+ idea is that you can figure stuff out in your program, say the log path,
291
+ and relay that information to the XML while it&#8217;s being loaded.
292
+ Secondarily, it is a way to have aliases within an XML document.
293
+ </p>
294
+ <p>
295
+ There are two ways to tell Configurator about these variables. The first
296
+ method we&#8217;ll cover is done within a Ruby program with Configurator[].
297
+ </p>
298
+ <pre>
299
+ Configurator['logpath'] = '/path/to/logs'
300
+ </pre>
301
+ <p>
302
+ Thereafter, any occurence of <tt>#{logpath}</tt> in each and every XML
303
+ parameter will be substituted with &#8216;/path/to/logs&#8217;. For
304
+ example:
305
+ </p>
306
+ <pre>
307
+ &lt;filename&gt;#{logpath}/mylog.log&lt;/filename&gt;
308
+ </pre>
309
+ <p>
310
+ Becomes,
311
+ </p>
312
+ <pre>
313
+ &lt;filename&gt;/path/to/logs/mylog.log&lt;/filename&gt;
314
+ </pre>
315
+ <p>
316
+ Aside from Configurator[], another way to define XML parameter variables is
317
+ to define <tt>parameters</tt> under the <tt>&lt;pre_config&gt;</tt> element
318
+ of an XML configuration:
319
+ </p>
320
+ <pre>
321
+ &lt;pre_config&gt;
322
+ &lt;parameter name=&quot;logpath&quot; value=&quot;/path/to/logs'/&gt;
323
+ &lt;parameter name=&quot;other&quot; value=&quot;somethingelse'/&gt;
324
+ ...
325
+ &lt;/pre_config&gt;
326
+ </pre>
327
+ <p>
328
+ Alternatively,
329
+ </p>
330
+ <pre>
331
+ &lt;pre_config&gt;
332
+ &lt;parameters&gt;
333
+ &lt;logpath&gt;/path/to/logs&lt;/logpath&gt;
334
+ &lt;other&gt;somethingelse&lt;/other&gt;
335
+ ...
336
+ &lt;/parameters&gt;
337
+ ...
338
+ </pre>
339
+ <p>
340
+ The end result is the same as using Configurator[]. However, this method is
341
+ not dynamic. Configurator[] should be used when you want to set variables
342
+ from within Ruby.
343
+ </p>
344
+ <h1>XML Grammar</h1>
345
+ <p>
346
+ And now, here&#8217;s the XML grammar we use to configure <a
347
+ href="../../Log4r.html">Log4r</a>.
348
+ </p>
349
+ <h2>Root Element</h2>
350
+ <p>
351
+ The root element is <tt>&lt;log4r_config&gt;</tt>. It can be embedded as a
352
+ node of any other element in an XML file. For instance:
353
+ </p>
354
+ <pre>
355
+ &lt;my-xml-thing&gt;
356
+ &lt;customize-libraries&gt;
357
+ &lt;log4r_config&gt;
358
+ &lt;!-- log4r configuratin goes here --&gt;
359
+ &lt;/log4r_config&gt;
360
+ ...
361
+ </pre>
362
+ <h2>Pre-config element</h2>
363
+ <p>
364
+ The pre_config element is a child of log4r_config and contains:
365
+ </p>
366
+ <ul>
367
+ <li>&#8216;custom_levels&#8217; element
368
+
369
+ </li>
370
+ <li>&#8216;global&#8217; element
371
+
372
+ </li>
373
+ <li>&#8216;parameters&#8217; element
374
+
375
+ </li>
376
+ <li>any number of &#8216;parameter&#8217; elements
377
+
378
+ </li>
379
+ </ul>
380
+ <h3>Pre_config: Custom Levels</h3>
381
+ <p>
382
+ The custom_levels element is not an <em>XML directive</em> of pre_config.
383
+ It <b>must</b> be specified like this:
384
+ </p>
385
+ <pre>
386
+ &lt;custom_levels&gt;Foo, Bar, Baz&lt;/custom_levels&gt;
387
+ </pre>
388
+ <p>
389
+ And <b>not</b> like this:
390
+ </p>
391
+ <pre>
392
+ &lt;!-- NOT SUPPORTED --&gt;
393
+ &lt;custom_levels levels=&quot;Foo, Bar, Baz&quot;/&gt;
394
+ </pre>
395
+ <h3>Pre_config: Global Level</h3>
396
+ <pre>
397
+ &lt;global level=&quot;DEBUG&quot;/&gt;
398
+ </pre>
399
+ <p>
400
+ or
401
+ </p>
402
+ <pre>
403
+ &lt;global&gt;&lt;level&gt;DEBUG&lt;/level&gt;&lt;/global&gt;
404
+ </pre>
405
+ <p>
406
+ Here, level is an XML directive of global.
407
+ </p>
408
+ <h3>Pre_config: Parameters</h3>
409
+ <p>
410
+ Parameters are variables that will be substituted later on. Please see the
411
+ <b>Concept: Variable Substitution</b> section above. Parameters are <em>XML
412
+ Directives</em>, which means they can be expressed using elements or
413
+ attributes. Here is an example:
414
+ </p>
415
+ <pre>
416
+ &lt;parameter name=&quot;param name 1&quot; value=&quot;param value 1&quot;&gt;
417
+ &lt;parameter name=&quot;param name 2&quot; value=&quot;param value 2&quot;&gt;
418
+ ...
419
+ &lt;parameters&gt;
420
+ &lt;param3&gt;value3&lt;/param3&gt;
421
+ &lt;param4&gt;value3&lt;/param4&gt;
422
+ ...
423
+ </pre>
424
+ <h3>Pre_config: Complete Example</h3>
425
+ <pre>
426
+ &lt;log4r_config&gt;
427
+
428
+ &lt;pre_config&gt;
429
+ &lt;custom_levels&gt;
430
+ Foo,Bar, Baz
431
+ &lt;/custom_levels&gt;
432
+ &lt;global level=&quot;Bar&quot;/&gt;
433
+ &lt;parameters&gt;
434
+ &lt;logpath&gt;/var/log/foo&lt;/logpath&gt;
435
+ &lt;mypattern&gt;%l [%d] %m&lt;/mypattern&gt;
436
+ &lt;/parameters&gt;
437
+ &lt;/pre_config&gt;
438
+
439
+ &lt;!-- define some outputters and loggers --&gt;
440
+
441
+ &lt;/log4r_config&gt;
442
+ </pre>
443
+ <h2>Configuring <a href="../../Log4r.html">Log4r</a> Objects</h2>
444
+ <p>
445
+ The XML configuration grammar for Loggers, Outputters and the like are
446
+ covered in the usage guidelines for those classes.
447
+ </p>
448
+ <h2>Order Doesn&#8217;t Matter</h2>
449
+ <p>
450
+ You can (it is hoped) define any of the XML objects in any order desired.
451
+ </p>
452
+
453
+ </div>
454
+
455
+ <div id="validator-badges">
456
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
457
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
458
+ Rdoc Generator</a> 1.1.6</small>.</p>
459
+ </div>
460
+ </body>
461
+ </html>
462
+