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,55 @@
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: logevent.rb [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 file-popup">
24
+ <div id="metadata">
25
+ <dl>
26
+ <dt class="modified-date">Last Modified</dt>
27
+ <dd class="modified-date">Thu Mar 18 19:31:06 -0800 2004</dd>
28
+
29
+
30
+ <dt class="requires">Requires</dt>
31
+ <dd class="requires">
32
+ <ul>
33
+
34
+ </ul>
35
+ </dd>
36
+
37
+
38
+
39
+ </dl>
40
+ </div>
41
+
42
+ <div id="documentation">
43
+
44
+ <div class="description">
45
+ <h2>Description</h2>
46
+ <p>
47
+ :nodoc:
48
+ </p>
49
+
50
+ </div>
51
+
52
+ </div>
53
+ </body>
54
+ </html>
55
+
@@ -0,0 +1,293 @@
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.rb [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 file-popup">
24
+ <div id="metadata">
25
+ <dl>
26
+ <dt class="modified-date">Last Modified</dt>
27
+ <dd class="modified-date">Wed Sep 23 21:58:28 -0700 2009</dd>
28
+
29
+
30
+ <dt class="requires">Requires</dt>
31
+ <dd class="requires">
32
+ <ul>
33
+
34
+ <li>log4r/outputter/outputter</li>
35
+
36
+ <li>log4r/repository</li>
37
+
38
+ <li>log4r/loggerfactory</li>
39
+
40
+ <li>log4r/staticlogger</li>
41
+
42
+ </ul>
43
+ </dd>
44
+
45
+
46
+
47
+ </dl>
48
+ </div>
49
+
50
+ <div id="documentation">
51
+
52
+ <div class="description">
53
+ <h2>Description</h2>
54
+ <h1>Loggers</h1>
55
+ <p>
56
+ Loggers provide the interface for logging in <a
57
+ href="../Log4r.html">Log4r</a>. To create a logger, first come up with a
58
+ name for it. Good choices include the name of the class using it, a service
59
+ name, or the name of the file.
60
+ </p>
61
+ <p>
62
+ To create a logger named &#8216;mylog&#8217;:
63
+ </p>
64
+ <pre>
65
+ Logger.new('mylog')
66
+ </pre>
67
+ <p>
68
+ After creating a logger, it is stashed in a repository. The logger may be
69
+ retrieved at any time:
70
+ </p>
71
+ <pre>
72
+ Logger['mylog'] # get mylog back
73
+ </pre>
74
+ <p>
75
+ It will return nil if the logger is not found. Alternatively, if an
76
+ Exception is desired when a nonexistant logger is referenced, the
77
+ Logger#get command can be used:
78
+ </p>
79
+ <pre>
80
+ Logger.get('boguslog') # raises NameError if it doesn't exist
81
+ </pre>
82
+ <h2>Manipulating a Logger&#8217;s Outputters</h2>
83
+ <p>
84
+ Loggers start out with no outputters. They can be added using the
85
+ Logger#add method or set directly by modifying the Loggers#outputters
86
+ array:
87
+ </p>
88
+ <pre>
89
+ mylog = Logger['mylog']
90
+
91
+ # assume we've created Outputters out1 through out4
92
+ mylog.outputters = out1, out2
93
+ mylog.add(out3, out4)
94
+ mylog.each_outputter {|o| o.flush}
95
+
96
+ # assume out5 through out7 have names 'out5' through 'out7' resp.
97
+ mylog.outputters = 'out5', 'out6'
98
+ mylog.add('out7')
99
+ mylog.remove('out5','out7')
100
+ </pre>
101
+ <p>
102
+ Please see <a
103
+ href="outputter/outputter_rb.html">log4r/outputter/outputter.rb</a> and <a
104
+ href="../Log4r/Outputter.html">Log4r::Outputter</a> for more about
105
+ outputters.
106
+ </p>
107
+ <h2>Logging Methods</h2>
108
+ <p>
109
+ To log something at a certain priority, use the logging method named after
110
+ the lowercased priority level name:
111
+ </p>
112
+ <pre>
113
+ mylog.warn &quot;This is a message with priority WARN&quot;
114
+ mylog.fatal &quot;A FATAL message&quot;
115
+ </pre>
116
+ <p>
117
+ Blocks can also be logged:
118
+ </p>
119
+ <pre>
120
+ mylog.warn {&quot;This is also a message with priority WARN&quot;}
121
+ mylog.debug do
122
+ # some complicated string magic
123
+ return result
124
+ end
125
+ </pre>
126
+ <p>
127
+ The primary difference is that the block doesn&#8217;t get called unless
128
+ the Logger can log at that level. It is useful for doing computationaly
129
+ expensive things at a log event.
130
+ </p>
131
+ <h2>Query Methods</h2>
132
+ <p>
133
+ To ask <a href="../Log4r.html">Log4r</a> whether it is capable of logging a
134
+ certain level:
135
+ </p>
136
+ <pre>
137
+ mylog.warn? # are we logging WARN?
138
+ mylog.fatal? # how about FATAL?
139
+ </pre>
140
+ <p>
141
+ Query methods and blocks accomplish the same thing:
142
+ </p>
143
+ <pre>
144
+ mylog.warn &quot;don't evaluate unless WARN is on&quot; if mylog.warn?
145
+ mylog.warn {&quot;don't evaluate unless WARN is on&quot;}
146
+ </pre>
147
+ <h2>What About the Special Levels?</h2>
148
+ <p>
149
+ <tt>ALL</tt> and <tt>OFF</tt> can be querried, but not logged:
150
+ </p>
151
+ <pre>
152
+ log.off? # true iff level is OFF
153
+ log.all? # true iff level is ALL
154
+ log.all &quot;Try to log&quot; =&gt; Method not defined. (NameError)
155
+ </pre>
156
+ <h2>Custom Levels and Method Names</h2>
157
+ <p>
158
+ Suppose we&#8217;ve set up <a href="../Log4r.html">Log4r</a> with the
159
+ custom levels:
160
+ </p>
161
+ <pre>
162
+ Foo &lt; Bar &lt; Baz
163
+ </pre>
164
+ <p>
165
+ As one might expect, the logging methods are named after them:
166
+ </p>
167
+ <pre>
168
+ log.bar &quot;something&quot; # log at custom level Bar
169
+ log.bar? # are we logging at level Bar?
170
+ </pre>
171
+ <h1>Logger Inheritance</h1>
172
+ <p>
173
+ Normally, when a logger is created, its parent is set to RootLogger. If a
174
+ Logger&#8217;s level isn&#8217;t specified at creation, it will inherit the
175
+ level of its parent.
176
+ </p>
177
+ <p>
178
+ To specify an ancestors of a logger besides RootLogger, include the names
179
+ of the ancestors in order of ancestry and delimited by
180
+ Log4r::Log4rConfig::LoggerPathDelimiter. For example, if the delimiter is
181
+ the default <tt>::</tt>, our logger is &#8216;me&#8217; and its ancestors
182
+ are &#8216;cain&#8217;, &#8216;grandpa&#8217;, and &#8216;pa&#8217;, we
183
+ create the logger like so:
184
+ </p>
185
+ <pre>
186
+ Logger.new('cain::grandpa::pa::me')
187
+ </pre>
188
+ <p>
189
+ This string is split into three compontents which can be used by a
190
+ Formatter to avoid parsing the name:
191
+ </p>
192
+ <table>
193
+ <tr><td valign="top">Logger#fullname:</td><td>The whole enchilada: &#8216;cain::grandpa::pa::me&#8217;
194
+
195
+ </td></tr>
196
+ <tr><td valign="top">Logger#name:</td><td>Just &#8216;me&#8217;
197
+
198
+ </td></tr>
199
+ </table>
200
+ <p>
201
+ To get this logger back from the repository,
202
+ </p>
203
+ <pre>
204
+ Logger['cain::grandpa::pa::me']
205
+ </pre>
206
+ <h1>Outputter Additivity</h1>
207
+ <p>
208
+ By default, Logger Outputters are <b>additive</b>. This means that a log
209
+ event will also be sent to all of a logger&#8217;s ancestors. To stop this
210
+ behavior, set a logger&#8217;s <tt>additive</tt> to false.
211
+ </p>
212
+ <pre>
213
+ Logger['foo'].additive = false
214
+ </pre>
215
+ <p>
216
+ A Logger&#8217;s level, additivity and trace can be changed dynamically,
217
+ but this is an expensive operation as the logging methods have to be
218
+ redefined.
219
+ </p>
220
+ <h1>RootLogger</h1>
221
+ <p>
222
+ <a href="../Log4r/RootLogger.html">Log4r::RootLogger</a> is the ancestor of
223
+ all loggers. Its level defines the global logging threshold. Any loggers
224
+ created <b>after</b> RootLogger&#8217;s level is set will not log below
225
+ that level. By default, RootLogger&#8217;s level is set to <tt>ALL</tt>
226
+ </p>
227
+ <p>
228
+ RootLogger is a singleton which gets created automaticallay. It can be
229
+ retrieved at any time with Logger.root, Logger.global,
230
+ Logger[&#8216;root&#8217;] or Logger[&#8216;global&#8217;].
231
+ </p>
232
+ <h2>Global Level</h2>
233
+ <p>
234
+ Suppose we want <em>everything</em> to ignore events less than FATAL. We
235
+ can accomplish this easily:
236
+ </p>
237
+ <pre>
238
+ Logger.global.level = FATAL
239
+ </pre>
240
+ <p>
241
+ Just be sure to set this before any other Loggers or Outputters are
242
+ defined.
243
+ </p>
244
+ <h2>RootLogger Does Nothing</h2>
245
+ <p>
246
+ RootLogger itself behaves as if its level were permanently set to
247
+ <tt>OFF</tt>, thus making it a sort of null object.
248
+ </p>
249
+ <h1>XML Configuration</h1>
250
+ <p>
251
+ Please see <a href="configurator_rb.html">log4r/configurator.rb</a> for an
252
+ overview of XML configuratoin.
253
+ </p>
254
+ <p>
255
+ It&#8217;s easy to configure a Logger in XML. The following example should
256
+ be sufficient:
257
+ </p>
258
+ <pre>
259
+ ...
260
+ &lt;logger name=&quot;papa::mylog&quot; level=&quot;DEBUG&quot; trace=&quot;true&quot;&gt;
261
+ &lt;additive&gt;false&lt;/additive&gt;
262
+ &lt;outputter&gt;stdout&lt;/outputter&gt;
263
+ &lt;outputters&gt;stderr, dancer, doner, blitzen&lt;/outputters&gt;
264
+ &lt;/logger&gt;
265
+ &lt;logger name=&quot;papa&quot; outputters=&quot;stderr, stdout&quot;/&gt;
266
+ ...
267
+ </pre>
268
+ <p>
269
+ The element <tt>outputter</tt> can occur multiple times, but cannot be an
270
+ attribute of <tt>logger</tt>. That is, it is not an <em>XML directive</em>.
271
+ However, the element <tt>outputters</tt> is an <em>XML directive</em>, as
272
+ are all the others.
273
+ </p>
274
+ <p>
275
+ For more examples, check the <tt>examples</tt> directory in the <a
276
+ href="../Log4r.html">Log4r</a> package.
277
+ </p>
278
+ <h2>Other Info</h2>
279
+ <table>
280
+ <tr><td valign="top">Version:</td><td>$Id: logger.rb,v 1.2 2009/09/24 04:58:28 colbygk Exp $
281
+
282
+ </td></tr>
283
+ <tr><td valign="top">Author:</td><td>Leon Torres <leon(at)ugcs.caltech.edu>
284
+
285
+ </td></tr>
286
+ </table>
287
+
288
+ </div>
289
+
290
+ </div>
291
+ </body>
292
+ </html>
293
+
@@ -0,0 +1,66 @@
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: loggerfactory.rb [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 file-popup">
24
+ <div id="metadata">
25
+ <dl>
26
+ <dt class="modified-date">Last Modified</dt>
27
+ <dd class="modified-date">Thu Mar 18 19:31:07 -0800 2004</dd>
28
+
29
+
30
+ <dt class="requires">Requires</dt>
31
+ <dd class="requires">
32
+ <ul>
33
+
34
+ <li>log4r/base</li>
35
+
36
+ <li>log4r/repository</li>
37
+
38
+ <li>log4r/logevent</li>
39
+
40
+ </ul>
41
+ </dd>
42
+
43
+
44
+
45
+ </dl>
46
+ </div>
47
+
48
+ <div id="documentation">
49
+
50
+ <div class="description">
51
+ <h2>Description</h2>
52
+ <p>
53
+ :nodoc:
54
+ </p>
55
+ <table>
56
+ <tr><td valign="top">Version:</td><td>$Id: loggerfactory.rb,v 1.1.1.1 2004/03/19 03:31:07 fando Exp $
57
+
58
+ </td></tr>
59
+ </table>
60
+
61
+ </div>
62
+
63
+ </div>
64
+ </body>
65
+ </html>
66
+
@@ -0,0 +1,161 @@
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.rb [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 file-popup">
24
+ <div id="metadata">
25
+ <dl>
26
+ <dt class="modified-date">Last Modified</dt>
27
+ <dd class="modified-date">Thu Mar 18 19:31:07 -0800 2004</dd>
28
+
29
+
30
+ <dt class="requires">Requires</dt>
31
+ <dd class="requires">
32
+ <ul>
33
+
34
+ <li>log4r/logger</li>
35
+
36
+ <li>log4r/lib/drbloader</li>
37
+
38
+ </ul>
39
+ </dd>
40
+
41
+
42
+
43
+ </dl>
44
+ </div>
45
+
46
+ <div id="documentation">
47
+
48
+ <div class="description">
49
+ <h2>Description</h2>
50
+ <h1>Remote Logging</h1>
51
+ <p>
52
+ Want to use <a href="../Log4r.html">Log4r</a> over a network? No problem! A
53
+ <a href="../Log4r/RemoteOutputter.html">Log4r::RemoteOutputter</a> will
54
+ send its LogEvents to a <a
55
+ href="../Log4r/LogServer.html">Log4r::LogServer</a>. These two classes are
56
+ as easy to set up and use as the rest of <a href="../Log4r.html">Log4r</a>.
57
+ </p>
58
+ <h2>Use ROMP</h2>
59
+ <p>
60
+ There is one catch though: ROMP is required to use this service. It is a
61
+ DRb-like system with superb performance and better features. Get ROMP at <a
62
+ href="http://rubystuff.org/romp/">rubystuff.org/romp/</a>
63
+ </p>
64
+ <h2>LogServer</h2>
65
+ <p>
66
+ LogServer is simply a kind of Logger which embeds a ROMP::Server. Like a
67
+ normal Logger, you can give it Outputters, set its level and so on. Its
68
+ logging methods are accessible over a network and are called by a
69
+ RemoteOutputter on another host.
70
+ </p>
71
+ <h3>LogServer Setup</h3>
72
+ <p>
73
+ Setup is easy. First,
74
+ </p>
75
+ <pre>
76
+ require 'log4r/logserver'
77
+ </pre>
78
+ <p>
79
+ The following sets up a LogServer named &#8216;central&#8217; on localhost
80
+ port 9999:
81
+ </p>
82
+ <pre>
83
+ LogServer.new('central', 'tcpromp://localhost:9999')
84
+ </pre>
85
+ <p>
86
+ We manipulate it and give it outputters as normal:
87
+ </p>
88
+ <pre>
89
+ serv = Logger['central'] # grab our new LogServer
90
+ serv.add 'stdout' # make it log to $stdout
91
+ </pre>
92
+ <h2>RemoteOutputter</h2>
93
+ <p>
94
+ RemoteOutputter is simply a kind of Outputter that embeds a ROMP::Client.
95
+ When RemoteOutputter gets a LogEvent, it will forward it to whatever
96
+ LogServer it&#8217;s connected to. In essence, RemoteOutputter behaves like
97
+ a Logger that is forwarding a LogEvent to another Logger (as is done in
98
+ hierarchical logging).
99
+ </p>
100
+ <h3>RemoteOutputter Setup</h3>
101
+ <p>
102
+ First,
103
+ </p>
104
+ <pre>
105
+ require 'log4r/outputter/remoteoutputter'
106
+ </pre>
107
+ <p>
108
+ Unlike typical outputters, RemoteOutputter doesn&#8217;t do any formatting.
109
+ That&#8217;s up to the LogServer&#8217;s outputters. Otherwise,
110
+ RemoteOutputter can be set up as usual. The ROMP uri of the LogServer must
111
+ be specified.
112
+ </p>
113
+ <pre>
114
+ RemoteOutputter.new 'client', :uri=&gt;'tcpromp://localhost:9999'
115
+ </pre>
116
+ <h3>Using RemoteOutputter</h3>
117
+ <p>
118
+ Give our new RemoteOutputter to a logger:
119
+ </p>
120
+ <pre>
121
+ mylog = Logger['mylog']
122
+ mylog.add 'client'
123
+ </pre>
124
+ <p>
125
+ Now, whenever mylog generates a LogEvent, LogServer should get a copy.
126
+ Doing the following:
127
+ </p>
128
+ <pre>
129
+ mylog.info &quot;This is a message from 'mylog'&quot;
130
+ </pre>
131
+ <p>
132
+ Produces this output on LogServer&#8217;s console:
133
+ </p>
134
+ <pre>
135
+ INFO mylog: This is a message from 'mylog'
136
+ </pre>
137
+ <h2>XML Configuration</h2>
138
+ <p>
139
+ RemoteOutputter is set up like normal Outputters. LogServer is set up like
140
+ a normal Logger, but with an element name of logserver instead of logger:
141
+ </p>
142
+ <pre>
143
+ &lt;log4r_config&gt;
144
+ &lt;logserver name=&quot;name&quot; uri=&quot;tcpromp://localhost:9999&quot;&gt;
145
+ ...
146
+ </pre>
147
+ <h2>Debugging</h2>
148
+ <p>
149
+ It is recommended to set up a logger named &#8216;log4r&#8217; on both the
150
+ server and client to see what LogServer and RemoteOutputter are up to. Both
151
+ of the classes use Log4r&#8217;s internal logging to report any problems.
152
+ See the section <b>What&#8217;s Going on Inside?</b> in log4r.rb for more
153
+ info.
154
+ </p>
155
+
156
+ </div>
157
+
158
+ </div>
159
+ </body>
160
+ </html>
161
+