log4r 1.1.6 → 1.1.7

Sign up to get free protection for your applications and to get access to all the features.
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
+