log4r 1.1.1 → 1.1.2

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 (107) hide show
  1. data/README +3 -3
  2. data/Rakefile +3 -3
  3. data/doc/rdoc-log4r.css +696 -0
  4. data/examples/syslogcustom.rb +6 -1
  5. data/src/doc/Log4r.html +392 -0
  6. data/src/doc/Log4r/BasicFormatter.html +370 -0
  7. data/src/doc/Log4r/ConfigError.html +207 -0
  8. data/src/doc/Log4r/Configurator.html +1050 -0
  9. data/src/doc/Log4r/DateFileOutputter.html +454 -0
  10. data/src/doc/Log4r/DefaultFormatter.html +205 -0
  11. data/src/doc/Log4r/EmailOutputter.html +636 -0
  12. data/src/doc/Log4r/FileOutputter.html +321 -0
  13. data/src/doc/Log4r/Formatter.html +291 -0
  14. data/src/doc/Log4r/IOOutputter.html +392 -0
  15. data/src/doc/Log4r/Log4rConfig.html +193 -0
  16. data/src/doc/Log4r/Log4rTools.html +370 -0
  17. data/src/doc/Log4r/LogEvent.html +360 -0
  18. data/src/doc/Log4r/LogServer.html +322 -0
  19. data/src/doc/Log4r/Logger.html +1132 -0
  20. data/src/doc/Log4r/Logger/LoggerFactory.html +200 -0
  21. data/src/doc/Log4r/Logger/Repository.html +207 -0
  22. data/src/doc/Log4r/ObjectFormatter.html +262 -0
  23. data/src/doc/Log4r/Outputter.html +910 -0
  24. data/src/doc/Log4r/Outputter/OutputterFactory.html +200 -0
  25. data/src/doc/Log4r/Outputter/consoleoutputters_rb.html +57 -0
  26. data/src/doc/Log4r/Outputter/datefileoutputter_rb.html +93 -0
  27. data/src/doc/Log4r/Outputter/emailoutputter_rb.html +179 -0
  28. data/src/doc/Log4r/Outputter/fileoutputter_rb.html +64 -0
  29. data/src/doc/Log4r/Outputter/iooutputter_rb.html +59 -0
  30. data/src/doc/Log4r/Outputter/outputter_rb.html +222 -0
  31. data/src/doc/Log4r/Outputter/outputterfactory_rb.html +62 -0
  32. data/src/doc/Log4r/Outputter/remoteoutputter_rb.html +59 -0
  33. data/src/doc/Log4r/Outputter/rollingfileoutputter_rb.html +66 -0
  34. data/src/doc/Log4r/Outputter/staticoutputter_rb.html +55 -0
  35. data/src/doc/Log4r/Outputter/syslogoutputter_rb.html +110 -0
  36. data/src/doc/Log4r/Outputter/tst_rb.html +54 -0
  37. data/src/doc/Log4r/PatternFormatter.html +422 -0
  38. data/src/doc/Log4r/ROMPClient.html +193 -0
  39. data/src/doc/Log4r/ROMPServer.html +193 -0
  40. data/src/doc/Log4r/RemoteOutputter.html +384 -0
  41. data/src/doc/Log4r/RollingFileOutputter.html +528 -0
  42. data/src/doc/Log4r/RootLogger.html +512 -0
  43. data/src/doc/Log4r/SimpleFormatter.html +258 -0
  44. data/src/doc/Log4r/StderrOutputter.html +250 -0
  45. data/src/doc/Log4r/StdoutOutputter.html +250 -0
  46. data/src/doc/Log4r/SyslogOutputter.html +533 -0
  47. data/src/doc/Log4r/YamlConfigurator.html +948 -0
  48. data/src/doc/Log4r/base_rb.html +57 -0
  49. data/src/doc/Log4r/config_rb.html +76 -0
  50. data/src/doc/Log4r/configurator_rb.html +370 -0
  51. data/src/doc/Log4r/formatter/formatter_rb.html +121 -0
  52. data/src/doc/Log4r/formatter/patternformatter_rb.html +233 -0
  53. data/src/doc/Log4r/lib/drbloader_rb.html +57 -0
  54. data/src/doc/Log4r/lib/xmlloader_rb.html +57 -0
  55. data/src/doc/Log4r/logevent_rb.html +55 -0
  56. data/src/doc/Log4r/logger_rb.html +293 -0
  57. data/src/doc/Log4r/loggerfactory_rb.html +66 -0
  58. data/src/doc/Log4r/logserver_rb.html +161 -0
  59. data/src/doc/Log4r/rdoc/configurator.html +444 -0
  60. data/src/doc/Log4r/rdoc/emailoutputter.html +261 -0
  61. data/src/doc/Log4r/rdoc/formatter.html +200 -0
  62. data/src/doc/Log4r/rdoc/log4r.html +268 -0
  63. data/src/doc/Log4r/rdoc/logger.html +364 -0
  64. data/src/doc/Log4r/rdoc/logserver.html +247 -0
  65. data/src/doc/Log4r/rdoc/outputter.html +295 -0
  66. data/src/doc/Log4r/rdoc/patternformatter.html +313 -0
  67. data/src/doc/Log4r/rdoc/syslogoutputter.html +179 -0
  68. data/src/doc/Log4r/rdoc/yamlconfigurator.html +169 -0
  69. data/src/doc/Log4r/repository_rb.html +62 -0
  70. data/src/doc/Log4r/staticlogger_rb.html +55 -0
  71. data/src/doc/Log4r/yamlconfigurator_rb.html +95 -0
  72. data/src/doc/REXML.html +193 -0
  73. data/src/doc/created.rid +1 -0
  74. data/src/doc/images/brick.png +0 -0
  75. data/src/doc/images/brick_link.png +0 -0
  76. data/src/doc/images/bug.png +0 -0
  77. data/src/doc/images/bullet_black.png +0 -0
  78. data/src/doc/images/bullet_toggle_minus.png +0 -0
  79. data/src/doc/images/bullet_toggle_plus.png +0 -0
  80. data/src/doc/images/date.png +0 -0
  81. data/src/doc/images/find.png +0 -0
  82. data/src/doc/images/loadingAnimation.gif +0 -0
  83. data/src/doc/images/macFFBgHack.png +0 -0
  84. data/src/doc/images/package.png +0 -0
  85. data/src/doc/images/page_green.png +0 -0
  86. data/src/doc/images/page_white_text.png +0 -0
  87. data/src/doc/images/page_white_width.png +0 -0
  88. data/src/doc/images/plugin.png +0 -0
  89. data/src/doc/images/ruby.png +0 -0
  90. data/src/doc/images/tag_green.png +0 -0
  91. data/src/doc/images/wrench.png +0 -0
  92. data/src/doc/images/wrench_orange.png +0 -0
  93. data/src/doc/images/zoom.png +0 -0
  94. data/src/doc/index.html +384 -0
  95. data/src/doc/js/darkfish.js +116 -0
  96. data/src/doc/js/jquery.js +32 -0
  97. data/src/doc/js/quicksearch.js +114 -0
  98. data/src/doc/js/thickbox-compressed.js +10 -0
  99. data/src/doc/rdoc.css +696 -0
  100. data/src/log4r.rb +2 -2
  101. data/src/log4r/formatter/patternformatter.rb +18 -2
  102. data/src/log4r/logger.rb +2 -2
  103. data/src/log4r/outputter/emailoutputter.rb +2 -0
  104. data/src/log4r/outputter/syslogoutputter.rb +29 -9
  105. data/src/log4r/outputter/tst.rb +8 -0
  106. metadata +99 -3
  107. data/examples/logs/simple.log +0 -1
@@ -0,0 +1,444 @@
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.2 Log4r API Documentation]</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/configurator.html">configurator</a></li>
33
+
34
+ <li class="file"><a href="../../log4r/rdoc/emailoutputter.html">emailoutputter</a></li>
35
+
36
+ <li class="file"><a href="../../log4r/rdoc/formatter.html">formatter</a></li>
37
+
38
+ <li class="file"><a href="../../log4r/rdoc/log4r.html">log4r</a></li>
39
+
40
+ <li class="file"><a href="../../log4r/rdoc/logger.html">logger</a></li>
41
+
42
+ <li class="file"><a href="../../log4r/rdoc/logserver.html">logserver</a></li>
43
+
44
+ <li class="file"><a href="../../log4r/rdoc/outputter.html">outputter</a></li>
45
+
46
+ <li class="file"><a href="../../log4r/rdoc/patternformatter.html">patternformatter</a></li>
47
+
48
+ <li class="file"><a href="../../log4r/rdoc/syslogoutputter.html">syslogoutputter</a></li>
49
+
50
+ <li class="file"><a href="../../log4r/rdoc/yamlconfigurator.html">yamlconfigurator</a></li>
51
+
52
+ </ul>
53
+ </div>
54
+
55
+
56
+ <div id="classindex-section" class="section project-section">
57
+ <h3 class="section-header">Class Index
58
+ <span class="search-toggle"><img src="../../images/find.png"
59
+ height="16" width="16" alt="[+]"
60
+ title="show/hide quicksearch" /></span></h3>
61
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
62
+ <fieldset>
63
+ <legend>Quicksearch</legend>
64
+ <input type="text" name="quicksearch" value=""
65
+ class="quicksearch-field" />
66
+ </fieldset>
67
+ </form>
68
+
69
+ <ul class="link-list">
70
+
71
+ <li><a href="../../Log4r.html">Log4r</a></li>
72
+
73
+ <li><a href="../../Log4r/BasicFormatter.html">Log4r::BasicFormatter</a></li>
74
+
75
+ <li><a href="../../Log4r/ConfigError.html">Log4r::ConfigError</a></li>
76
+
77
+ <li><a href="../../Log4r/Configurator.html">Log4r::Configurator</a></li>
78
+
79
+ <li><a href="../../Log4r/DateFileOutputter.html">Log4r::DateFileOutputter</a></li>
80
+
81
+ <li><a href="../../Log4r/DefaultFormatter.html">Log4r::DefaultFormatter</a></li>
82
+
83
+ <li><a href="../../Log4r/EmailOutputter.html">Log4r::EmailOutputter</a></li>
84
+
85
+ <li><a href="../../Log4r/FileOutputter.html">Log4r::FileOutputter</a></li>
86
+
87
+ <li><a href="../../Log4r/Formatter.html">Log4r::Formatter</a></li>
88
+
89
+ <li><a href="../../Log4r/IOOutputter.html">Log4r::IOOutputter</a></li>
90
+
91
+ <li><a href="../../Log4r/Log4rTools.html">Log4r::Log4rTools</a></li>
92
+
93
+ <li><a href="../../Log4r/LogEvent.html">Log4r::LogEvent</a></li>
94
+
95
+ <li><a href="../../Log4r/LogServer.html">Log4r::LogServer</a></li>
96
+
97
+ <li><a href="../../Log4r/Logger.html">Log4r::Logger</a></li>
98
+
99
+ <li><a href="../../Log4r/ObjectFormatter.html">Log4r::ObjectFormatter</a></li>
100
+
101
+ <li><a href="../../Log4r/Outputter.html">Log4r::Outputter</a></li>
102
+
103
+ <li><a href="../../Log4r/PatternFormatter.html">Log4r::PatternFormatter</a></li>
104
+
105
+ <li><a href="../../Log4r/RemoteOutputter.html">Log4r::RemoteOutputter</a></li>
106
+
107
+ <li><a href="../../Log4r/RollingFileOutputter.html">Log4r::RollingFileOutputter</a></li>
108
+
109
+ <li><a href="../../Log4r/RootLogger.html">Log4r::RootLogger</a></li>
110
+
111
+ <li><a href="../../Log4r/SimpleFormatter.html">Log4r::SimpleFormatter</a></li>
112
+
113
+ <li><a href="../../Log4r/StderrOutputter.html">Log4r::StderrOutputter</a></li>
114
+
115
+ <li><a href="../../Log4r/StdoutOutputter.html">Log4r::StdoutOutputter</a></li>
116
+
117
+ <li><a href="../../Log4r/SyslogOutputter.html">Log4r::SyslogOutputter</a></li>
118
+
119
+ <li><a href="../../Log4r/YamlConfigurator.html">Log4r::YamlConfigurator</a></li>
120
+
121
+ </ul>
122
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
123
+ </div>
124
+
125
+
126
+ </div>
127
+ </div>
128
+
129
+ <div id="documentation">
130
+ <h1>Configuring <a href="../../Log4r.html">Log4r</a> with <a href="../../Log4r/Configurator.html">Log4r::Configurator</a></h1>
131
+ <p>
132
+ The Configurator class allows one to set up <a
133
+ href="../../Log4r.html">Log4r</a> via XML. Additionally, Configurator
134
+ contains methods to configure any <a href="../../Log4r.html">Log4r</a>
135
+ defaults. In particular, Configurator provides a method to customize the
136
+ logging levels.
137
+ </p>
138
+ <p>
139
+ <a href="../../Log4r.html">Log4r</a> is also configurable using YAML. For
140
+ that, there is a class similar to Configurator called <a
141
+ href="../../Log4r/YamlConfigurator.html">Log4r::YamlConfigurator</a>.
142
+ Please see <a
143
+ href="../yamlconfigurator_rb.html">log4r/yamlconfigurator.rb</a> for
144
+ details.
145
+ </p>
146
+ <p>
147
+ REXML is required for XML configuration. Get REXML at <a
148
+ href="http://www.ruby-lang.org/en/raa-list.rhtml?name=REXML">www.ruby-lang.org/en/raa-list.rhtml?name=REXML</a>
149
+ </p>
150
+ <p>
151
+ To use the Configurator class,
152
+ </p>
153
+ <pre>
154
+ require 'log4r/configurator'
155
+ </pre>
156
+ <h2>Custom Levels</h2>
157
+ <p>
158
+ Suppose you want the following levels and ranks:
159
+ </p>
160
+ <pre>
161
+ Foo &lt; Bar &lt; Baz
162
+ </pre>
163
+ <p>
164
+ This is easily accomplished:
165
+ </p>
166
+ <pre>
167
+ Configurator.custom_levels('Foo', 'Bar', :Baz)
168
+ </pre>
169
+ <p>
170
+ The method accepts strings or symbols. However, custom levels must have
171
+ names that are valid for Ruby constants. Also, custom levels should be set
172
+ before anything else is done with <a href="../../Log4r.html">Log4r</a>,
173
+ otherwise the default levels will be loaded.
174
+ </p>
175
+ <p>
176
+ You can set custom levels in XML. That&#8217;s covered in the following
177
+ section.
178
+ </p>
179
+ <h2>XML Configuration</h2>
180
+ <p>
181
+ If you have REXML, you can configure <a href="../../Log4r.html">Log4r</a>
182
+ with XML. To do this, first write an XML configuration (which you can learn
183
+ by studying this document and the examples provided in the distribution)
184
+ and then load up the XML from within your program as follows:
185
+ </p>
186
+ <pre>
187
+ Configurator.load_xml_file('/path/to/file.xml')
188
+ </pre>
189
+ <p>
190
+ The <a href="../../Log4r.html">Log4r</a> XML configuration system is very
191
+ flexible and powerful. In fact, it is somewhat preferable to configuring <a
192
+ href="../../Log4r.html">Log4r</a> in Ruby. In order to take full advantage
193
+ of this feature, there are several concepts one must know. They are covered
194
+ in the following three sections.
195
+ </p>
196
+ <h3>Concept: XML Directives</h3>
197
+ <p>
198
+ The expressive power of Ruby has enabled a feature I call <em>XML
199
+ directives</em>. An XML directive is a name-value pair belonging to some
200
+ element. It may be represented as an attribute (name=&#8220;value&#8221;)
201
+ of the element, or as a child (<name>value</name>) of the element.
202
+ Therefore, you are free to specify information about an object as either an
203
+ attribute or an element. An example should clarify:
204
+ </p>
205
+ <pre>
206
+ &lt;object data=&quot;value&quot;/&gt;
207
+ </pre>
208
+ <p>
209
+ Is equivalent to:
210
+ </p>
211
+ <pre>
212
+ &lt;object&gt;
213
+ &lt;data&gt;value&lt;/data&gt;
214
+ &lt;/object&gt;
215
+ </pre>
216
+ <p>
217
+ You can assume this behavior except where noted elsewhere in the API.
218
+ </p>
219
+ <h3>Concept: XML Parameters</h3>
220
+ <p>
221
+ A scheme which I call <em>XML parameters</em> enables one to utilize the
222
+ XML configuratin system for custom Outputters and Formatters. This requires
223
+ <b>no</b> extra work on your part, so long as your objects are set up using
224
+ hash arguments and can decode string values. That is, once you&#8217;ve
225
+ written a custom Outputter, it is automatically configurable in XML without
226
+ having to write any extra code.
227
+ </p>
228
+ <p>
229
+ An XML parameter is analogous to a hash argument to some object&#8217;s
230
+ <tt>new</tt> method. Consider these hash arguments to FileOutputter:
231
+ </p>
232
+ <pre>
233
+ :filename =&gt; '/path/to/logs/my.log'
234
+ :trunc =&gt; 'true'
235
+ </pre>
236
+ <p>
237
+ We can specify them in XML like this:
238
+ </p>
239
+ <pre>
240
+ &lt;outputter type=&quot;FileOutputter&quot; trunc=&quot;true&quot;&gt;
241
+ &lt;filename&gt;/path/to/logs/my.log&lt;/filename&gt;
242
+ ...
243
+ </pre>
244
+ <p>
245
+ The name of the element/attribute is just the name of the parameter. Note
246
+ that the input will be a string, thus it&#8217;s wise to convert the data
247
+ in from strings in any custom classes (to_i for integers, etc). Now
248
+ let&#8217;s suppose you have defined a custom Outputter named MyOutputter
249
+ with the following additional hash args:
250
+ </p>
251
+ <pre>
252
+ :myarg1 =&gt; 'foo'
253
+ :myarg2 =&gt; 123
254
+ </pre>
255
+ <p>
256
+ Automagically, you can configure your Outputter like so:
257
+ </p>
258
+ <pre>
259
+ &lt;outputter type=&quot;MyOutputter&quot; myarg2=&quot;123&quot;&gt;
260
+ &lt;myarg1&gt;foo&lt;/myarg1&gt;
261
+ ...
262
+ </pre>
263
+ <p>
264
+ Isn&#8217;t that nice? <tt>:-)</tt>
265
+ </p>
266
+ <h3>Concept: Variable Substitution</h3>
267
+ <p>
268
+ To kill the need for preprocessors, Configurator provides a means of
269
+ variable substitution for XML parameters at runtime. If you specify
270
+ <tt>#{foo}</tt> in an XML parameter value, Configurator will replace it
271
+ with the value of &#8216;foo&#8217; in its parameter hashtable. The primary
272
+ idea is that you can figure stuff out in your program, say the log path,
273
+ and relay that information to the XML while it&#8217;s being loaded.
274
+ Secondarily, it is a way to have aliases within an XML document.
275
+ </p>
276
+ <p>
277
+ There are two ways to tell Configurator about these variables. The first
278
+ method we&#8217;ll cover is done within a Ruby program with Configurator[].
279
+ </p>
280
+ <pre>
281
+ Configurator['logpath'] = '/path/to/logs'
282
+ </pre>
283
+ <p>
284
+ Thereafter, any occurence of <tt>#{logpath}</tt> in each and every XML
285
+ parameter will be substituted with &#8216;/path/to/logs&#8217;. For
286
+ example:
287
+ </p>
288
+ <pre>
289
+ &lt;filename&gt;#{logpath}/mylog.log&lt;/filename&gt;
290
+ </pre>
291
+ <p>
292
+ Becomes,
293
+ </p>
294
+ <pre>
295
+ &lt;filename&gt;/path/to/logs/mylog.log&lt;/filename&gt;
296
+ </pre>
297
+ <p>
298
+ Aside from Configurator[], another way to define XML parameter variables is
299
+ to define <tt>parameters</tt> under the <tt>&lt;pre_config&gt;</tt> element
300
+ of an XML configuration:
301
+ </p>
302
+ <pre>
303
+ &lt;pre_config&gt;
304
+ &lt;parameter name=&quot;logpath&quot; value=&quot;/path/to/logs'/&gt;
305
+ &lt;parameter name=&quot;other&quot; value=&quot;somethingelse'/&gt;
306
+ ...
307
+ &lt;/pre_config&gt;
308
+ </pre>
309
+ <p>
310
+ Alternatively,
311
+ </p>
312
+ <pre>
313
+ &lt;pre_config&gt;
314
+ &lt;parameters&gt;
315
+ &lt;logpath&gt;/path/to/logs&lt;/logpath&gt;
316
+ &lt;other&gt;somethingelse&lt;/other&gt;
317
+ ...
318
+ &lt;/parameters&gt;
319
+ ...
320
+ </pre>
321
+ <p>
322
+ The end result is the same as using Configurator[]. However, this method is
323
+ not dynamic. Configurator[] should be used when you want to set variables
324
+ from within Ruby.
325
+ </p>
326
+ <h1>XML Grammar</h1>
327
+ <p>
328
+ And now, here&#8217;s the XML grammar we use to configure <a
329
+ href="../../Log4r.html">Log4r</a>.
330
+ </p>
331
+ <h2>Root Element</h2>
332
+ <p>
333
+ The root element is <tt>&lt;log4r_config&gt;</tt>. It can be embedded as a
334
+ node of any other element in an XML file. For instance:
335
+ </p>
336
+ <pre>
337
+ &lt;my-xml-thing&gt;
338
+ &lt;customize-libraries&gt;
339
+ &lt;log4r_config&gt;
340
+ &lt;!-- log4r configuratin goes here --&gt;
341
+ &lt;/log4r_config&gt;
342
+ ...
343
+ </pre>
344
+ <h2>Pre-config element</h2>
345
+ <p>
346
+ The pre_config element is a child of log4r_config and contains:
347
+ </p>
348
+ <ul>
349
+ <li>&#8216;custom_levels&#8217; element
350
+
351
+ </li>
352
+ <li>&#8216;global&#8217; element
353
+
354
+ </li>
355
+ <li>&#8216;parameters&#8217; element
356
+
357
+ </li>
358
+ <li>any number of &#8216;parameter&#8217; elements
359
+
360
+ </li>
361
+ </ul>
362
+ <h3>Pre_config: Custom Levels</h3>
363
+ <p>
364
+ The custom_levels element is not an <em>XML directive</em> of pre_config.
365
+ It <b>must</b> be specified like this:
366
+ </p>
367
+ <pre>
368
+ &lt;custom_levels&gt;Foo, Bar, Baz&lt;/custom_levels&gt;
369
+ </pre>
370
+ <p>
371
+ And <b>not</b> like this:
372
+ </p>
373
+ <pre>
374
+ &lt;!-- NOT SUPPORTED --&gt;
375
+ &lt;custom_levels levels=&quot;Foo, Bar, Baz&quot;/&gt;
376
+ </pre>
377
+ <h3>Pre_config: Global Level</h3>
378
+ <pre>
379
+ &lt;global level=&quot;DEBUG&quot;/&gt;
380
+ </pre>
381
+ <p>
382
+ or
383
+ </p>
384
+ <pre>
385
+ &lt;global&gt;&lt;level&gt;DEBUG&lt;/level&gt;&lt;/global&gt;
386
+ </pre>
387
+ <p>
388
+ Here, level is an XML directive of global.
389
+ </p>
390
+ <h3>Pre_config: Parameters</h3>
391
+ <p>
392
+ Parameters are variables that will be substituted later on. Please see the
393
+ <b>Concept: Variable Substitution</b> section above. Parameters are <em>XML
394
+ Directives</em>, which means they can be expressed using elements or
395
+ attributes. Here is an example:
396
+ </p>
397
+ <pre>
398
+ &lt;parameter name=&quot;param name 1&quot; value=&quot;param value 1&quot;&gt;
399
+ &lt;parameter name=&quot;param name 2&quot; value=&quot;param value 2&quot;&gt;
400
+ ...
401
+ &lt;parameters&gt;
402
+ &lt;param3&gt;value3&lt;/param3&gt;
403
+ &lt;param4&gt;value3&lt;/param4&gt;
404
+ ...
405
+ </pre>
406
+ <h3>Pre_config: Complete Example</h3>
407
+ <pre>
408
+ &lt;log4r_config&gt;
409
+
410
+ &lt;pre_config&gt;
411
+ &lt;custom_levels&gt;
412
+ Foo,Bar, Baz
413
+ &lt;/custom_levels&gt;
414
+ &lt;global level=&quot;Bar&quot;/&gt;
415
+ &lt;parameters&gt;
416
+ &lt;logpath&gt;/var/log/foo&lt;/logpath&gt;
417
+ &lt;mypattern&gt;%l [%d] %m&lt;/mypattern&gt;
418
+ &lt;/parameters&gt;
419
+ &lt;/pre_config&gt;
420
+
421
+ &lt;!-- define some outputters and loggers --&gt;
422
+
423
+ &lt;/log4r_config&gt;
424
+ </pre>
425
+ <h2>Configuring <a href="../../Log4r.html">Log4r</a> Objects</h2>
426
+ <p>
427
+ The XML configuration grammar for Loggers, Outputters and the like are
428
+ covered in the usage guidelines for those classes.
429
+ </p>
430
+ <h2>Order Doesn&#8217;t Matter</h2>
431
+ <p>
432
+ You can (it is hoped) define any of the XML objects in any order desired.
433
+ </p>
434
+
435
+ </div>
436
+
437
+ <div id="validator-badges">
438
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
439
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
440
+ Rdoc Generator</a> 1.1.6</small>.</p>
441
+ </div>
442
+ </body>
443
+ </html>
444
+
@@ -0,0 +1,261 @@
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: emailoutputter [1.1.2 Log4r API Documentation]</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/configurator.html">configurator</a></li>
33
+
34
+ <li class="file"><a href="../../log4r/rdoc/emailoutputter.html">emailoutputter</a></li>
35
+
36
+ <li class="file"><a href="../../log4r/rdoc/formatter.html">formatter</a></li>
37
+
38
+ <li class="file"><a href="../../log4r/rdoc/log4r.html">log4r</a></li>
39
+
40
+ <li class="file"><a href="../../log4r/rdoc/logger.html">logger</a></li>
41
+
42
+ <li class="file"><a href="../../log4r/rdoc/logserver.html">logserver</a></li>
43
+
44
+ <li class="file"><a href="../../log4r/rdoc/outputter.html">outputter</a></li>
45
+
46
+ <li class="file"><a href="../../log4r/rdoc/patternformatter.html">patternformatter</a></li>
47
+
48
+ <li class="file"><a href="../../log4r/rdoc/syslogoutputter.html">syslogoutputter</a></li>
49
+
50
+ <li class="file"><a href="../../log4r/rdoc/yamlconfigurator.html">yamlconfigurator</a></li>
51
+
52
+ </ul>
53
+ </div>
54
+
55
+
56
+ <div id="classindex-section" class="section project-section">
57
+ <h3 class="section-header">Class Index
58
+ <span class="search-toggle"><img src="../../images/find.png"
59
+ height="16" width="16" alt="[+]"
60
+ title="show/hide quicksearch" /></span></h3>
61
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
62
+ <fieldset>
63
+ <legend>Quicksearch</legend>
64
+ <input type="text" name="quicksearch" value=""
65
+ class="quicksearch-field" />
66
+ </fieldset>
67
+ </form>
68
+
69
+ <ul class="link-list">
70
+
71
+ <li><a href="../../Log4r.html">Log4r</a></li>
72
+
73
+ <li><a href="../../Log4r/BasicFormatter.html">Log4r::BasicFormatter</a></li>
74
+
75
+ <li><a href="../../Log4r/ConfigError.html">Log4r::ConfigError</a></li>
76
+
77
+ <li><a href="../../Log4r/Configurator.html">Log4r::Configurator</a></li>
78
+
79
+ <li><a href="../../Log4r/DateFileOutputter.html">Log4r::DateFileOutputter</a></li>
80
+
81
+ <li><a href="../../Log4r/DefaultFormatter.html">Log4r::DefaultFormatter</a></li>
82
+
83
+ <li><a href="../../Log4r/EmailOutputter.html">Log4r::EmailOutputter</a></li>
84
+
85
+ <li><a href="../../Log4r/FileOutputter.html">Log4r::FileOutputter</a></li>
86
+
87
+ <li><a href="../../Log4r/Formatter.html">Log4r::Formatter</a></li>
88
+
89
+ <li><a href="../../Log4r/IOOutputter.html">Log4r::IOOutputter</a></li>
90
+
91
+ <li><a href="../../Log4r/Log4rTools.html">Log4r::Log4rTools</a></li>
92
+
93
+ <li><a href="../../Log4r/LogEvent.html">Log4r::LogEvent</a></li>
94
+
95
+ <li><a href="../../Log4r/LogServer.html">Log4r::LogServer</a></li>
96
+
97
+ <li><a href="../../Log4r/Logger.html">Log4r::Logger</a></li>
98
+
99
+ <li><a href="../../Log4r/ObjectFormatter.html">Log4r::ObjectFormatter</a></li>
100
+
101
+ <li><a href="../../Log4r/Outputter.html">Log4r::Outputter</a></li>
102
+
103
+ <li><a href="../../Log4r/PatternFormatter.html">Log4r::PatternFormatter</a></li>
104
+
105
+ <li><a href="../../Log4r/RemoteOutputter.html">Log4r::RemoteOutputter</a></li>
106
+
107
+ <li><a href="../../Log4r/RollingFileOutputter.html">Log4r::RollingFileOutputter</a></li>
108
+
109
+ <li><a href="../../Log4r/RootLogger.html">Log4r::RootLogger</a></li>
110
+
111
+ <li><a href="../../Log4r/SimpleFormatter.html">Log4r::SimpleFormatter</a></li>
112
+
113
+ <li><a href="../../Log4r/StderrOutputter.html">Log4r::StderrOutputter</a></li>
114
+
115
+ <li><a href="../../Log4r/StdoutOutputter.html">Log4r::StdoutOutputter</a></li>
116
+
117
+ <li><a href="../../Log4r/SyslogOutputter.html">Log4r::SyslogOutputter</a></li>
118
+
119
+ <li><a href="../../Log4r/YamlConfigurator.html">Log4r::YamlConfigurator</a></li>
120
+
121
+ </ul>
122
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
123
+ </div>
124
+
125
+
126
+ </div>
127
+ </div>
128
+
129
+ <div id="documentation">
130
+ <h1>EmailOutputter</h1>
131
+ <p>
132
+ This is an experimental class that sends a number of formatted log events
133
+ as an RFC 822 email. It should work fine if Net:SMTP doesn&#8217;t cause
134
+ any problems. Just in case, create a logger named &#8216;log4r&#8217; and
135
+ give it an outputter to see the logging statements made by this class. If
136
+ it fails to send email, it will set itself to OFF and stop logging.
137
+ </p>
138
+ <p>
139
+ In order to use it,
140
+ </p>
141
+ <pre>
142
+ require 'log4r/outputter/emailoutputter'
143
+ </pre>
144
+ <h2>SMTP Configuration</h2>
145
+ <p>
146
+ All arguments to Net::SMTP.start are supported. Pass them as hash
147
+ parameters to <tt>new</tt>. The to field is specified as a comma-delimited
148
+ list of emails (padded with s* if desired).
149
+ </p>
150
+ <p>
151
+ An example:
152
+ </p>
153
+ <pre>
154
+ email_out = EmailOutputter.new 'email_out',
155
+ :server=&gt;'localhost',
156
+ :port=&gt;25,
157
+ :domain=&gt;'somewhere.com',
158
+ :from=&gt;'me@foo.bar',
159
+ :to=&gt;'them@foo.bar, me@foo.bar, bozo@clown.net',
160
+ :subject=&gt;'Log Report'
161
+ </pre>
162
+ <h2>LogEvent Buffer</h2>
163
+ <p>
164
+ EmailOutputter stores log messages in a buffer. When the buffer reaches a
165
+ certain number, the <tt>buffsize</tt>, it will send an email containing the
166
+ contents of the buffer. The default <tt>buffsize</tt> is 100. To set
167
+ <tt>buffsize</tt>,
168
+ </p>
169
+ <pre>
170
+ email_out.buffsize = 1000 # set the buffsize to 1000
171
+ </pre>
172
+ <h2>Flush To Send Email</h2>
173
+ <p>
174
+ Flushing an EmailOutputter will mail out all the remaining LogEvents. This
175
+ is convenient for systems that encapsulate the shutdown process. It&#8217;s
176
+ a good idea to do this for all outputters,
177
+ </p>
178
+ <pre>
179
+ Outputter.each_outputter {|o| o.flush}
180
+ </pre>
181
+ <p>
182
+ Alternatively, one can invoke flush on the outputter directly,
183
+ </p>
184
+ <pre>
185
+ email_out.flush
186
+ </pre>
187
+ <p>
188
+ It&#8217;s also a good idea to notify the recepient of the email that the
189
+ system is shutting down. Before flushing, log a message to the owner of
190
+ this outputter,
191
+ </p>
192
+ <pre>
193
+ log_with_email_out.info &quot;The system is shutting down at #{Time.now}&quot;
194
+ </pre>
195
+ <h2>Format When?</h2>
196
+ <p>
197
+ LogEvents may either be formatted as they come in or as the email is being
198
+ composed. To do the former, specify a value of <tt>true</tt> to the hash
199
+ parameter <tt>formatfirst</tt>. The default is to format during email
200
+ composition.
201
+ </p>
202
+ <pre>
203
+ email_out.formatfirst = true # format as soon as LogEvents are received
204
+ </pre>
205
+ <h2>Immediate Notification</h2>
206
+ <p>
207
+ EmailOutputter can be configured to flush and send the email whenever the
208
+ logger sees a certain log priority. Use the <tt>immediate_at</tt> hash
209
+ parameter and specify the levels as a comma-delimited list (like an XML
210
+ element). To trigger an email on FATAL and ERROR,
211
+ </p>
212
+ <pre>
213
+ email_out.immediate_at = &quot;FATAL, ERROR&quot;
214
+ </pre>
215
+ <h2>Example</h2>
216
+ <p>
217
+ A security logger sends email to several folks, buffering up to 25 log
218
+ events and sending immediates on CRIT and WARN
219
+ </p>
220
+ <pre>
221
+ EmailOutputter.new 'security',
222
+ :to =&gt; 'bob@secure.net, frank@secure.net',
223
+ :buffsize =&gt; 25,
224
+ :immediate_at =&gt; 'WARN, CRIT'
225
+ </pre>
226
+ <h2>XML Configuration</h2>
227
+ <p>
228
+ See <a href="../configurator_rb.html">log4r/configurator.rb</a> for
229
+ details. Here&#8217;s an example:
230
+ </p>
231
+ <pre>
232
+ &lt;outputter name=&quot;security&quot; type=&quot;EmailOutputter&quot;
233
+ buffsize=&quot;25&quot; level=&quot;ALL&quot;&gt;
234
+ &lt;immediate_at&gt;WARN, CRIT&lt;/immediate_at&gt;
235
+ &lt;server&gt;localhost&lt;/server&gt;
236
+ &lt;from&gt;me@secure.net&lt;/from&gt;
237
+ &lt;to&gt;
238
+ bob@secure.net, frank@secure.net
239
+ &lt;/to&gt;
240
+ ...
241
+ &lt;/outputter&gt;
242
+ </pre>
243
+ <h2>To Do</h2>
244
+ <p>
245
+ This class could use some sophistication, in particular a means to compress
246
+ the logs, a way to set the subject dynamically (probably via a block
247
+ method), and a time trigger. When the time trigger is introduced, a
248
+ <tt>buffsize</tt> of 0 should mean ignore <tt>buffsize</tt> to determine
249
+ when to send the email.
250
+ </p>
251
+
252
+ </div>
253
+
254
+ <div id="validator-badges">
255
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
256
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
257
+ Rdoc Generator</a> 1.1.6</small>.</p>
258
+ </div>
259
+ </body>
260
+ </html>
261
+