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.
- data/README +3 -3
- data/Rakefile +3 -3
- data/doc/rdoc-log4r.css +696 -0
- data/examples/syslogcustom.rb +6 -1
- data/src/doc/Log4r.html +392 -0
- data/src/doc/Log4r/BasicFormatter.html +370 -0
- data/src/doc/Log4r/ConfigError.html +207 -0
- data/src/doc/Log4r/Configurator.html +1050 -0
- data/src/doc/Log4r/DateFileOutputter.html +454 -0
- data/src/doc/Log4r/DefaultFormatter.html +205 -0
- data/src/doc/Log4r/EmailOutputter.html +636 -0
- data/src/doc/Log4r/FileOutputter.html +321 -0
- data/src/doc/Log4r/Formatter.html +291 -0
- data/src/doc/Log4r/IOOutputter.html +392 -0
- data/src/doc/Log4r/Log4rConfig.html +193 -0
- data/src/doc/Log4r/Log4rTools.html +370 -0
- data/src/doc/Log4r/LogEvent.html +360 -0
- data/src/doc/Log4r/LogServer.html +322 -0
- data/src/doc/Log4r/Logger.html +1132 -0
- data/src/doc/Log4r/Logger/LoggerFactory.html +200 -0
- data/src/doc/Log4r/Logger/Repository.html +207 -0
- data/src/doc/Log4r/ObjectFormatter.html +262 -0
- data/src/doc/Log4r/Outputter.html +910 -0
- data/src/doc/Log4r/Outputter/OutputterFactory.html +200 -0
- data/src/doc/Log4r/Outputter/consoleoutputters_rb.html +57 -0
- data/src/doc/Log4r/Outputter/datefileoutputter_rb.html +93 -0
- data/src/doc/Log4r/Outputter/emailoutputter_rb.html +179 -0
- data/src/doc/Log4r/Outputter/fileoutputter_rb.html +64 -0
- data/src/doc/Log4r/Outputter/iooutputter_rb.html +59 -0
- data/src/doc/Log4r/Outputter/outputter_rb.html +222 -0
- data/src/doc/Log4r/Outputter/outputterfactory_rb.html +62 -0
- data/src/doc/Log4r/Outputter/remoteoutputter_rb.html +59 -0
- data/src/doc/Log4r/Outputter/rollingfileoutputter_rb.html +66 -0
- data/src/doc/Log4r/Outputter/staticoutputter_rb.html +55 -0
- data/src/doc/Log4r/Outputter/syslogoutputter_rb.html +110 -0
- data/src/doc/Log4r/Outputter/tst_rb.html +54 -0
- data/src/doc/Log4r/PatternFormatter.html +422 -0
- data/src/doc/Log4r/ROMPClient.html +193 -0
- data/src/doc/Log4r/ROMPServer.html +193 -0
- data/src/doc/Log4r/RemoteOutputter.html +384 -0
- data/src/doc/Log4r/RollingFileOutputter.html +528 -0
- data/src/doc/Log4r/RootLogger.html +512 -0
- data/src/doc/Log4r/SimpleFormatter.html +258 -0
- data/src/doc/Log4r/StderrOutputter.html +250 -0
- data/src/doc/Log4r/StdoutOutputter.html +250 -0
- data/src/doc/Log4r/SyslogOutputter.html +533 -0
- data/src/doc/Log4r/YamlConfigurator.html +948 -0
- data/src/doc/Log4r/base_rb.html +57 -0
- data/src/doc/Log4r/config_rb.html +76 -0
- data/src/doc/Log4r/configurator_rb.html +370 -0
- data/src/doc/Log4r/formatter/formatter_rb.html +121 -0
- data/src/doc/Log4r/formatter/patternformatter_rb.html +233 -0
- data/src/doc/Log4r/lib/drbloader_rb.html +57 -0
- data/src/doc/Log4r/lib/xmlloader_rb.html +57 -0
- data/src/doc/Log4r/logevent_rb.html +55 -0
- data/src/doc/Log4r/logger_rb.html +293 -0
- data/src/doc/Log4r/loggerfactory_rb.html +66 -0
- data/src/doc/Log4r/logserver_rb.html +161 -0
- data/src/doc/Log4r/rdoc/configurator.html +444 -0
- data/src/doc/Log4r/rdoc/emailoutputter.html +261 -0
- data/src/doc/Log4r/rdoc/formatter.html +200 -0
- data/src/doc/Log4r/rdoc/log4r.html +268 -0
- data/src/doc/Log4r/rdoc/logger.html +364 -0
- data/src/doc/Log4r/rdoc/logserver.html +247 -0
- data/src/doc/Log4r/rdoc/outputter.html +295 -0
- data/src/doc/Log4r/rdoc/patternformatter.html +313 -0
- data/src/doc/Log4r/rdoc/syslogoutputter.html +179 -0
- data/src/doc/Log4r/rdoc/yamlconfigurator.html +169 -0
- data/src/doc/Log4r/repository_rb.html +62 -0
- data/src/doc/Log4r/staticlogger_rb.html +55 -0
- data/src/doc/Log4r/yamlconfigurator_rb.html +95 -0
- data/src/doc/REXML.html +193 -0
- data/src/doc/created.rid +1 -0
- data/src/doc/images/brick.png +0 -0
- data/src/doc/images/brick_link.png +0 -0
- data/src/doc/images/bug.png +0 -0
- data/src/doc/images/bullet_black.png +0 -0
- data/src/doc/images/bullet_toggle_minus.png +0 -0
- data/src/doc/images/bullet_toggle_plus.png +0 -0
- data/src/doc/images/date.png +0 -0
- data/src/doc/images/find.png +0 -0
- data/src/doc/images/loadingAnimation.gif +0 -0
- data/src/doc/images/macFFBgHack.png +0 -0
- data/src/doc/images/package.png +0 -0
- data/src/doc/images/page_green.png +0 -0
- data/src/doc/images/page_white_text.png +0 -0
- data/src/doc/images/page_white_width.png +0 -0
- data/src/doc/images/plugin.png +0 -0
- data/src/doc/images/ruby.png +0 -0
- data/src/doc/images/tag_green.png +0 -0
- data/src/doc/images/wrench.png +0 -0
- data/src/doc/images/wrench_orange.png +0 -0
- data/src/doc/images/zoom.png +0 -0
- data/src/doc/index.html +384 -0
- data/src/doc/js/darkfish.js +116 -0
- data/src/doc/js/jquery.js +32 -0
- data/src/doc/js/quicksearch.js +114 -0
- data/src/doc/js/thickbox-compressed.js +10 -0
- data/src/doc/rdoc.css +696 -0
- data/src/log4r.rb +2 -2
- data/src/log4r/formatter/patternformatter.rb +18 -2
- data/src/log4r/logger.rb +2 -2
- data/src/log4r/outputter/emailoutputter.rb +2 -0
- data/src/log4r/outputter/syslogoutputter.rb +29 -9
- data/src/log4r/outputter/tst.rb +8 -0
- metadata +99 -3
- 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 < Bar < 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’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=“value”)
|
|
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
|
+
<object data="value"/>
|
|
207
|
+
</pre>
|
|
208
|
+
<p>
|
|
209
|
+
Is equivalent to:
|
|
210
|
+
</p>
|
|
211
|
+
<pre>
|
|
212
|
+
<object>
|
|
213
|
+
<data>value</data>
|
|
214
|
+
</object>
|
|
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’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’s
|
|
230
|
+
<tt>new</tt> method. Consider these hash arguments to FileOutputter:
|
|
231
|
+
</p>
|
|
232
|
+
<pre>
|
|
233
|
+
:filename => '/path/to/logs/my.log'
|
|
234
|
+
:trunc => 'true'
|
|
235
|
+
</pre>
|
|
236
|
+
<p>
|
|
237
|
+
We can specify them in XML like this:
|
|
238
|
+
</p>
|
|
239
|
+
<pre>
|
|
240
|
+
<outputter type="FileOutputter" trunc="true">
|
|
241
|
+
<filename>/path/to/logs/my.log</filename>
|
|
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’s wise to convert the data
|
|
247
|
+
in from strings in any custom classes (to_i for integers, etc). Now
|
|
248
|
+
let’s suppose you have defined a custom Outputter named MyOutputter
|
|
249
|
+
with the following additional hash args:
|
|
250
|
+
</p>
|
|
251
|
+
<pre>
|
|
252
|
+
:myarg1 => 'foo'
|
|
253
|
+
:myarg2 => 123
|
|
254
|
+
</pre>
|
|
255
|
+
<p>
|
|
256
|
+
Automagically, you can configure your Outputter like so:
|
|
257
|
+
</p>
|
|
258
|
+
<pre>
|
|
259
|
+
<outputter type="MyOutputter" myarg2="123">
|
|
260
|
+
<myarg1>foo</myarg1>
|
|
261
|
+
...
|
|
262
|
+
</pre>
|
|
263
|
+
<p>
|
|
264
|
+
Isn’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 ‘foo’ 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’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’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 ‘/path/to/logs’. For
|
|
286
|
+
example:
|
|
287
|
+
</p>
|
|
288
|
+
<pre>
|
|
289
|
+
<filename>#{logpath}/mylog.log</filename>
|
|
290
|
+
</pre>
|
|
291
|
+
<p>
|
|
292
|
+
Becomes,
|
|
293
|
+
</p>
|
|
294
|
+
<pre>
|
|
295
|
+
<filename>/path/to/logs/mylog.log</filename>
|
|
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><pre_config></tt> element
|
|
300
|
+
of an XML configuration:
|
|
301
|
+
</p>
|
|
302
|
+
<pre>
|
|
303
|
+
<pre_config>
|
|
304
|
+
<parameter name="logpath" value="/path/to/logs'/>
|
|
305
|
+
<parameter name="other" value="somethingelse'/>
|
|
306
|
+
...
|
|
307
|
+
</pre_config>
|
|
308
|
+
</pre>
|
|
309
|
+
<p>
|
|
310
|
+
Alternatively,
|
|
311
|
+
</p>
|
|
312
|
+
<pre>
|
|
313
|
+
<pre_config>
|
|
314
|
+
<parameters>
|
|
315
|
+
<logpath>/path/to/logs</logpath>
|
|
316
|
+
<other>somethingelse</other>
|
|
317
|
+
...
|
|
318
|
+
</parameters>
|
|
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’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><log4r_config></tt>. It can be embedded as a
|
|
334
|
+
node of any other element in an XML file. For instance:
|
|
335
|
+
</p>
|
|
336
|
+
<pre>
|
|
337
|
+
<my-xml-thing>
|
|
338
|
+
<customize-libraries>
|
|
339
|
+
<log4r_config>
|
|
340
|
+
<!-- log4r configuratin goes here -->
|
|
341
|
+
</log4r_config>
|
|
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>‘custom_levels’ element
|
|
350
|
+
|
|
351
|
+
</li>
|
|
352
|
+
<li>‘global’ element
|
|
353
|
+
|
|
354
|
+
</li>
|
|
355
|
+
<li>‘parameters’ element
|
|
356
|
+
|
|
357
|
+
</li>
|
|
358
|
+
<li>any number of ‘parameter’ 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
|
+
<custom_levels>Foo, Bar, Baz</custom_levels>
|
|
369
|
+
</pre>
|
|
370
|
+
<p>
|
|
371
|
+
And <b>not</b> like this:
|
|
372
|
+
</p>
|
|
373
|
+
<pre>
|
|
374
|
+
<!-- NOT SUPPORTED -->
|
|
375
|
+
<custom_levels levels="Foo, Bar, Baz"/>
|
|
376
|
+
</pre>
|
|
377
|
+
<h3>Pre_config: Global Level</h3>
|
|
378
|
+
<pre>
|
|
379
|
+
<global level="DEBUG"/>
|
|
380
|
+
</pre>
|
|
381
|
+
<p>
|
|
382
|
+
or
|
|
383
|
+
</p>
|
|
384
|
+
<pre>
|
|
385
|
+
<global><level>DEBUG</level></global>
|
|
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
|
+
<parameter name="param name 1" value="param value 1">
|
|
399
|
+
<parameter name="param name 2" value="param value 2">
|
|
400
|
+
...
|
|
401
|
+
<parameters>
|
|
402
|
+
<param3>value3</param3>
|
|
403
|
+
<param4>value3</param4>
|
|
404
|
+
...
|
|
405
|
+
</pre>
|
|
406
|
+
<h3>Pre_config: Complete Example</h3>
|
|
407
|
+
<pre>
|
|
408
|
+
<log4r_config>
|
|
409
|
+
|
|
410
|
+
<pre_config>
|
|
411
|
+
<custom_levels>
|
|
412
|
+
Foo,Bar, Baz
|
|
413
|
+
</custom_levels>
|
|
414
|
+
<global level="Bar"/>
|
|
415
|
+
<parameters>
|
|
416
|
+
<logpath>/var/log/foo</logpath>
|
|
417
|
+
<mypattern>%l [%d] %m</mypattern>
|
|
418
|
+
</parameters>
|
|
419
|
+
</pre_config>
|
|
420
|
+
|
|
421
|
+
<!-- define some outputters and loggers -->
|
|
422
|
+
|
|
423
|
+
</log4r_config>
|
|
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’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’t cause
|
|
134
|
+
any problems. Just in case, create a logger named ‘log4r’ 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=>'localhost',
|
|
156
|
+
:port=>25,
|
|
157
|
+
:domain=>'somewhere.com',
|
|
158
|
+
:from=>'me@foo.bar',
|
|
159
|
+
:to=>'them@foo.bar, me@foo.bar, bozo@clown.net',
|
|
160
|
+
:subject=>'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’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’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 "The system is shutting down at #{Time.now}"
|
|
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 = "FATAL, ERROR"
|
|
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 => 'bob@secure.net, frank@secure.net',
|
|
223
|
+
:buffsize => 25,
|
|
224
|
+
:immediate_at => '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’s an example:
|
|
230
|
+
</p>
|
|
231
|
+
<pre>
|
|
232
|
+
<outputter name="security" type="EmailOutputter"
|
|
233
|
+
buffsize="25" level="ALL">
|
|
234
|
+
<immediate_at>WARN, CRIT</immediate_at>
|
|
235
|
+
<server>localhost</server>
|
|
236
|
+
<from>me@secure.net</from>
|
|
237
|
+
<to>
|
|
238
|
+
bob@secure.net, frank@secure.net
|
|
239
|
+
</to>
|
|
240
|
+
...
|
|
241
|
+
</outputter>
|
|
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
|
+
|