log4r 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
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,364 @@
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: logger [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>Loggers</h1>
131
+ <p>
132
+ Loggers provide the interface for logging in <a
133
+ href="../../Log4r.html">Log4r</a>. To create a logger, first come up with a
134
+ name for it. Good choices include the name of the class using it, a service
135
+ name, or the name of the file.
136
+ </p>
137
+ <p>
138
+ To create a logger named &#8216;mylog&#8217;:
139
+ </p>
140
+ <pre>
141
+ Logger.new('mylog')
142
+ </pre>
143
+ <p>
144
+ After creating a logger, it is stashed in a repository. The logger may be
145
+ retrieved at any time:
146
+ </p>
147
+ <pre>
148
+ Logger['mylog'] # get mylog back
149
+ </pre>
150
+ <p>
151
+ It will return nil if the logger is not found. Alternatively, if an
152
+ Exception is desired when a nonexistant logger is referenced, the
153
+ Logger#get command can be used:
154
+ </p>
155
+ <pre>
156
+ Logger.get('boguslog') # raises NameError if it doesn't exist
157
+ </pre>
158
+ <h2>Manipulating a Logger&#8217;s Outputters</h2>
159
+ <p>
160
+ Loggers start out with no outputters. They can be added using the
161
+ Logger#add method or set directly by modifying the Loggers#outputters
162
+ array:
163
+ </p>
164
+ <pre>
165
+ mylog = Logger['mylog']
166
+
167
+ # assume we've created Outputters out1 through out4
168
+ mylog.outputters = out1, out2
169
+ mylog.add(out3, out4)
170
+ mylog.each_outputter {|o| o.flush}
171
+
172
+ # assume out5 through out7 have names 'out5' through 'out7' resp.
173
+ mylog.outputters = 'out5', 'out6'
174
+ mylog.add('out7')
175
+ mylog.remove('out5','out7')
176
+ </pre>
177
+ <p>
178
+ Please see <a
179
+ href="../outputter/outputter_rb.html">log4r/outputter/outputter.rb</a> and
180
+ <a href="../../Log4r/Outputter.html">Log4r::Outputter</a> for more about
181
+ outputters.
182
+ </p>
183
+ <h2>Logging Methods</h2>
184
+ <p>
185
+ To log something at a certain priority, use the logging method named after
186
+ the lowercased priority level name:
187
+ </p>
188
+ <pre>
189
+ mylog.warn &quot;This is a message with priority WARN&quot;
190
+ mylog.fatal &quot;A FATAL message&quot;
191
+ </pre>
192
+ <p>
193
+ Blocks can also be logged:
194
+ </p>
195
+ <pre>
196
+ mylog.warn {&quot;This is also a message with priority WARN&quot;}
197
+ mylog.debug do
198
+ # some complicated string magic
199
+ return result
200
+ end
201
+ </pre>
202
+ <p>
203
+ The primary difference is that the block doesn&#8217;t get called unless
204
+ the Logger can log at that level. It is useful for doing computationaly
205
+ expensive things at a log event.
206
+ </p>
207
+ <h2>Query Methods</h2>
208
+ <p>
209
+ To ask <a href="../../Log4r.html">Log4r</a> whether it is capable of
210
+ logging a certain level:
211
+ </p>
212
+ <pre>
213
+ mylog.warn? # are we logging WARN?
214
+ mylog.fatal? # how about FATAL?
215
+ </pre>
216
+ <p>
217
+ Query methods and blocks accomplish the same thing:
218
+ </p>
219
+ <pre>
220
+ mylog.warn &quot;don't evaluate unless WARN is on&quot; if mylog.warn?
221
+ mylog.warn {&quot;don't evaluate unless WARN is on&quot;}
222
+ </pre>
223
+ <h2>What About the Special Levels?</h2>
224
+ <p>
225
+ <tt>ALL</tt> and <tt>OFF</tt> can be querried, but not logged:
226
+ </p>
227
+ <pre>
228
+ log.off? # true iff level is OFF
229
+ log.all? # true iff level is ALL
230
+ log.all &quot;Try to log&quot; =&gt; Method not defined. (NameError)
231
+ </pre>
232
+ <h2>Custom Levels and Method Names</h2>
233
+ <p>
234
+ Suppose we&#8217;ve set up <a href="../../Log4r.html">Log4r</a> with the
235
+ custom levels:
236
+ </p>
237
+ <pre>
238
+ Foo &lt; Bar &lt; Baz
239
+ </pre>
240
+ <p>
241
+ As one might expect, the logging methods are named after them:
242
+ </p>
243
+ <pre>
244
+ log.bar &quot;something&quot; # log at custom level Bar
245
+ log.bar? # are we logging at level Bar?
246
+ </pre>
247
+ <h1>Logger Inheritance</h1>
248
+ <p>
249
+ Normally, when a logger is created, its parent is set to RootLogger. If a
250
+ Logger&#8217;s level isn&#8217;t specified at creation, it will inherit the
251
+ level of its parent.
252
+ </p>
253
+ <p>
254
+ To specify an ancestors of a logger besides RootLogger, include the names
255
+ of the ancestors in order of ancestry and delimited by
256
+ Log4r::Log4rConfig::LoggerPathDelimiter. For example, if the delimiter is
257
+ the default <tt>::</tt>, our logger is &#8216;me&#8217; and its ancestors
258
+ are &#8216;cain&#8217;, &#8216;grandpa&#8217;, and &#8216;pa&#8217;, we
259
+ create the logger like so:
260
+ </p>
261
+ <pre>
262
+ Logger.new('cain::grandpa::pa::me')
263
+ </pre>
264
+ <p>
265
+ This string is split into three compontents which can be used by a
266
+ Formatter to avoid parsing the name:
267
+ </p>
268
+ <table>
269
+ <tr><td valign="top">Logger#fullname:</td><td>The whole enchilada: &#8216;cain::grandpa::pa::me&#8217;
270
+
271
+ </td></tr>
272
+ <tr><td valign="top">Logger#name:</td><td>Just &#8216;me&#8217;
273
+
274
+ </td></tr>
275
+ </table>
276
+ <p>
277
+ To get this logger back from the repository,
278
+ </p>
279
+ <pre>
280
+ Logger['cain::grandpa::pa::me']
281
+ </pre>
282
+ <h1>Outputter Additivity</h1>
283
+ <p>
284
+ By default, Logger Outputters are <b>additive</b>. This means that a log
285
+ event will also be sent to all of a logger&#8217;s ancestors. To stop this
286
+ behavior, set a logger&#8217;s <tt>additive</tt> to false.
287
+ </p>
288
+ <pre>
289
+ Logger['foo'].additive = false
290
+ </pre>
291
+ <p>
292
+ A Logger&#8217;s level, additivity and trace can be changed dynamically,
293
+ but this is an expensive operation as the logging methods have to be
294
+ redefined.
295
+ </p>
296
+ <h1>RootLogger</h1>
297
+ <p>
298
+ <a href="../../Log4r/RootLogger.html">Log4r::RootLogger</a> is the ancestor
299
+ of all loggers. Its level defines the global logging threshold. Any loggers
300
+ created <b>after</b> RootLogger&#8217;s level is set will not log below
301
+ that level. By default, RootLogger&#8217;s level is set to <tt>ALL</tt>
302
+ </p>
303
+ <p>
304
+ RootLogger is a singleton which gets created automaticallay. It can be
305
+ retrieved at any time with Logger.root, Logger.global,
306
+ Logger[&#8216;root&#8217;] or Logger[&#8216;global&#8217;].
307
+ </p>
308
+ <h2>Global Level</h2>
309
+ <p>
310
+ Suppose we want <em>everything</em> to ignore events less than FATAL. We
311
+ can accomplish this easily:
312
+ </p>
313
+ <pre>
314
+ Logger.global.level = FATAL
315
+ </pre>
316
+ <p>
317
+ Just be sure to set this before any other Loggers or Outputters are
318
+ defined.
319
+ </p>
320
+ <h2>RootLogger Does Nothing</h2>
321
+ <p>
322
+ RootLogger itself behaves as if its level were permanently set to
323
+ <tt>OFF</tt>, thus making it a sort of null object.
324
+ </p>
325
+ <h1>XML Configuration</h1>
326
+ <p>
327
+ Please see <a href="../configurator_rb.html">log4r/configurator.rb</a> for
328
+ an overview of XML configuratoin.
329
+ </p>
330
+ <p>
331
+ It&#8217;s easy to configure a Logger in XML. The following example should
332
+ be sufficient:
333
+ </p>
334
+ <pre>
335
+ ...
336
+ &lt;logger name=&quot;papa::mylog&quot; level=&quot;DEBUG&quot; trace=&quot;true&quot;&gt;
337
+ &lt;additive&gt;false&lt;/additive&gt;
338
+ &lt;outputter&gt;stdout&lt;/outputter&gt;
339
+ &lt;outputters&gt;stderr, dancer, doner, blitzen&lt;/outputters&gt;
340
+ &lt;/logger&gt;
341
+ &lt;logger name=&quot;papa&quot; outputters=&quot;stderr, stdout&quot;/&gt;
342
+ ...
343
+ </pre>
344
+ <p>
345
+ The element <tt>outputter</tt> can occur multiple times, but cannot be an
346
+ attribute of <tt>logger</tt>. That is, it is not an <em>XML directive</em>.
347
+ However, the element <tt>outputters</tt> is an <em>XML directive</em>, as
348
+ are all the others.
349
+ </p>
350
+ <p>
351
+ For more examples, check the <tt>examples</tt> directory in the <a
352
+ href="../../Log4r.html">Log4r</a> package.
353
+ </p>
354
+
355
+ </div>
356
+
357
+ <div id="validator-badges">
358
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
359
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
360
+ Rdoc Generator</a> 1.1.6</small>.</p>
361
+ </div>
362
+ </body>
363
+ </html>
364
+
@@ -0,0 +1,247 @@
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: logserver [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>Remote Logging</h1>
131
+ <p>
132
+ Want to use <a href="../../Log4r.html">Log4r</a> over a network? No
133
+ problem! A <a
134
+ href="../../Log4r/RemoteOutputter.html">Log4r::RemoteOutputter</a> will
135
+ send its LogEvents to a <a
136
+ href="../../Log4r/LogServer.html">Log4r::LogServer</a>. These two classes
137
+ are as easy to set up and use as the rest of <a
138
+ href="../../Log4r.html">Log4r</a>.
139
+ </p>
140
+ <h2>Use ROMP</h2>
141
+ <p>
142
+ There is one catch though: ROMP is required to use this service. It is a
143
+ DRb-like system with superb performance and better features. Get ROMP at <a
144
+ href="http://rubystuff.org/romp/">rubystuff.org/romp/</a>
145
+ </p>
146
+ <h2>LogServer</h2>
147
+ <p>
148
+ LogServer is simply a kind of Logger which embeds a ROMP::Server. Like a
149
+ normal Logger, you can give it Outputters, set its level and so on. Its
150
+ logging methods are accessible over a network and are called by a
151
+ RemoteOutputter on another host.
152
+ </p>
153
+ <h3>LogServer Setup</h3>
154
+ <p>
155
+ Setup is easy. First,
156
+ </p>
157
+ <pre>
158
+ require 'log4r/logserver'
159
+ </pre>
160
+ <p>
161
+ The following sets up a LogServer named &#8216;central&#8217; on localhost
162
+ port 9999:
163
+ </p>
164
+ <pre>
165
+ LogServer.new('central', 'tcpromp://localhost:9999')
166
+ </pre>
167
+ <p>
168
+ We manipulate it and give it outputters as normal:
169
+ </p>
170
+ <pre>
171
+ serv = Logger['central'] # grab our new LogServer
172
+ serv.add 'stdout' # make it log to $stdout
173
+ </pre>
174
+ <h2>RemoteOutputter</h2>
175
+ <p>
176
+ RemoteOutputter is simply a kind of Outputter that embeds a ROMP::Client.
177
+ When RemoteOutputter gets a LogEvent, it will forward it to whatever
178
+ LogServer it&#8217;s connected to. In essence, RemoteOutputter behaves like
179
+ a Logger that is forwarding a LogEvent to another Logger (as is done in
180
+ hierarchical logging).
181
+ </p>
182
+ <h3>RemoteOutputter Setup</h3>
183
+ <p>
184
+ First,
185
+ </p>
186
+ <pre>
187
+ require 'log4r/outputter/remoteoutputter'
188
+ </pre>
189
+ <p>
190
+ Unlike typical outputters, RemoteOutputter doesn&#8217;t do any formatting.
191
+ That&#8217;s up to the LogServer&#8217;s outputters. Otherwise,
192
+ RemoteOutputter can be set up as usual. The ROMP uri of the LogServer must
193
+ be specified.
194
+ </p>
195
+ <pre>
196
+ RemoteOutputter.new 'client', :uri=&gt;'tcpromp://localhost:9999'
197
+ </pre>
198
+ <h3>Using RemoteOutputter</h3>
199
+ <p>
200
+ Give our new RemoteOutputter to a logger:
201
+ </p>
202
+ <pre>
203
+ mylog = Logger['mylog']
204
+ mylog.add 'client'
205
+ </pre>
206
+ <p>
207
+ Now, whenever mylog generates a LogEvent, LogServer should get a copy.
208
+ Doing the following:
209
+ </p>
210
+ <pre>
211
+ mylog.info &quot;This is a message from 'mylog'&quot;
212
+ </pre>
213
+ <p>
214
+ Produces this output on LogServer&#8217;s console:
215
+ </p>
216
+ <pre>
217
+ INFO mylog: This is a message from 'mylog'
218
+ </pre>
219
+ <h2>XML Configuration</h2>
220
+ <p>
221
+ RemoteOutputter is set up like normal Outputters. LogServer is set up like
222
+ a normal Logger, but with an element name of logserver instead of logger:
223
+ </p>
224
+ <pre>
225
+ &lt;log4r_config&gt;
226
+ &lt;logserver name=&quot;name&quot; uri=&quot;tcpromp://localhost:9999&quot;&gt;
227
+ ...
228
+ </pre>
229
+ <h2>Debugging</h2>
230
+ <p>
231
+ It is recommended to set up a logger named &#8216;log4r&#8217; on both the
232
+ server and client to see what LogServer and RemoteOutputter are up to. Both
233
+ of the classes use Log4r&#8217;s internal logging to report any problems.
234
+ See the section <b>What&#8217;s Going on Inside?</b> in log4r.rb for more
235
+ info.
236
+ </p>
237
+
238
+ </div>
239
+
240
+ <div id="validator-badges">
241
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
242
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
243
+ Rdoc Generator</a> 1.1.6</small>.</p>
244
+ </div>
245
+ </body>
246
+ </html>
247
+