logging.xml 26.4 KB
Newer Older
1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
<!ENTITY mdash  "&#x2014;" >
]>

Tomek Mrugalski's avatar
Tomek Mrugalski committed
7
8
9
10
11
12
13
14
15
16
17
18
  <!-- Note: Please use the following terminology:
       - daemon - one process (e.g. kea-dhcp4)
       - component - one piece of code within a daemon (e.g. libdhcp or hooks)
       - server - currently equal to daemon, but the difference will be more
                  prominent once we add client or relay support
       - logger - one instance of isc::log::Logger
       - structure - an element in config file (e.g. "Dhcp4")

       Do not use:
       - module => daemon
    -->

19
20
21
22
  <chapter id="logging">
    <title>Logging</title>

    <section>
23
      <title>Logging Configuration</title>
24
25

      <para>
26
27
28
        During its operation Kea may produce many messages. They differ in
        severity (some are more important than others) and source (some are
        produced by specific components, e.g. hooks). It is useful to understand
Tomek Mrugalski's avatar
Tomek Mrugalski committed
29
        which log messages are needed and which are not and configure your
30
        logging appropriately. For example, debug level messages can be safely
Tomek Mrugalski's avatar
Tomek Mrugalski committed
31
32
        ignored in a typical deployment. They are, however, very useful when
        debugging a problem.
33
      </para>
34

35
      <para>
36
        The logging system in Kea is configured through the
Tomek Mrugalski's avatar
Tomek Mrugalski committed
37
        <replaceable>Logging</replaceable> structure in your configuration
38
        file. All daemons (e.g. DHCPv4 and DHCPv6 servers) will use the
Tomek Mrugalski's avatar
Tomek Mrugalski committed
39
        configuration in the <replaceable>Logging</replaceable> structure to see
40
        what should be logged and to where. This allows for sharing identical
Tomek Mrugalski's avatar
Tomek Mrugalski committed
41
        logging configuration between daemons.
42
43
44
45
46
47
      </para>

      <section>
        <title>Loggers</title>

        <para>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
48
49
          Within Kea, a message is logged through an entity
          called a "logger". Different parts of the code log messages
50
          through different loggers, and each logger can be configured
Tomek Mrugalski's avatar
Tomek Mrugalski committed
51
52
53
          independently of one another. For example there are different
          components that deal with hooks ("hooks" logger) and with
          DHCP engine ("dhcpsrv" logger).
54
55
56
        </para>

        <para>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
57
58
          In the Logging structure in a configuration file you can
          specify the configuration for zero or more loggers. If there are
59
          no loggers specified, the code will use default values which
Tomek Mrugalski's avatar
Tomek Mrugalski committed
60
61
62
63
          cause Kea to log messages on at least INFO severity to standard
          output.
          <!-- @todo: add reference to section about controlling default
          behavior with env. variables, after #3591 is merged. -->
64
65
66
67
68
69
70
71
72
73
74
75
76
77
        </para>

        <para>
          The three most important elements of a logger configuration
          are the <option>name</option> (the component that is
          generating the messages), the <option>severity</option>
          (what to log), and the <option>output_options</option>
          (where to log).
        </para>

        <section>
          <title>name (string)</title>

          <para>
78
79
            Each logger in the system has a name, the name being that of the
            component binary file using it to log messages. For instance, if you
Tomek Mrugalski's avatar
Tomek Mrugalski committed
80
81
82
83
84
            want to configure logging for the DHCPv4 server, you add an entry
            for a logger named <quote>kea-dhcp4</quote>. This configuration will
            then be used by the loggers in the DHCPv4 server, and all the
            libraries used by it (unless a library defines its own logger and
            there is specific logger configuration that applies to that logger).
Tomek Mrugalski's avatar
Tomek Mrugalski committed
85
          </para>
86
87

          <para>
88
89
90
91
92
93
94
95
96
97
98
99
100
            When diagnosing the problem with the server's operation it is often
            desired to use the DEBUG logging level to obtain the verbose output
            from the server and libraries it uses. However, high verbosity may
            be an overkill for the logging system in cases when the server
            is processing high volume traffic. To mitigate this problem, Kea
            is using multiple loggers, which can be configured independently
            and which are responsible for logging messages from different
            functional parts of the server. If the user, trying to diagnose the
            problem, has a reasonably high confidence that the problem origins
            in a specific function of the server, or the problem is related
            to the specific type of operation, he may enable high verbosity
            only for the relevant logger, thus limiting the debug messages
            to the required minimum.
101
          </para>
102

103
          <para>
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
            The loggers are associated with a particular library or binary
            of Kea. However, each library or binary may (and usually does)
            include multiple loggers. For example, the DHCPv4 server binary
            contains separate loggers for: packet parsing, for dropped packets,
            for callouts etc. Each logger "derives" its configuration from the
            root logger. In the typical case, the root logger configuration
            is the only logging configuration specified in the configuration
            file. Creating a specific configuration for the selected logger,
            thus overriding the configuration settings specified in the
            root logger configuration, requires putting its configuration
            aside of the root logger's configuration with some of the
            parameters modified.
          </para>

          <para>
            To illustrate this, suppose you are using the DHCPv4 server
            with the root logger <quote>kea-dhcp4</quote> logging at the
            INFO level. In order to enable DEBUG verbosity for the DHCPv4
            packet drops, you must create configuration entry for the
            logger called <quote>kea-dhcp4.bad_packet</quote> and specify
            severity DEBUG for this logger. All other configuration
            parameters may be omited for this logger if the logger should
            use the default values specified in the root logger's
            configuration.
128
          </para>
129

Tomek Mrugalski's avatar
Tomek Mrugalski committed
130
        <!-- we don't support asterisk anymore.
131
        <para>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
132
          One special case is that of a component name of <quote>*</quote>
133
          (asterisks), which is interpreted as <emphasis>any</emphasis>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
134
          component. You can set global logging options by using this,
135
          including setting the logging configuration for a library
Tomek Mrugalski's avatar
Tomek Mrugalski committed
136
          that is used by multiple daemons (e.g. <quote>*.config</quote>
137
          specifies the configuration library code in whatever
Tomek Mrugalski's avatar
Tomek Mrugalski committed
138
          daemon is using it).
139
        </para> -->
140

141
142
143
144
145
          <para>
            If there are multiple logger specifications in the configuration
            that might match a particular logger, the specification with the
            more specific logger name takes precedence. For example, if there
            are entries for both <quote>kea-dhcp4</quote> and
Tomek Mrugalski's avatar
Tomek Mrugalski committed
146
            <quote>kea-dhcp4.dhcpsrv</quote>, the DHCPv4 server &mdash; and all
147
148
149
150
            libraries it uses that are not dhcpsrv &mdash; will log messages
            according to the configuration in the first entry
            (<quote>kea-dhcp4</quote>).
          </para>
151

152
153
154
          <para>
            Currently defined loggers are:
          </para>
155

Tomek Mrugalski's avatar
Tomek Mrugalski committed
156
        <itemizedlist>
157
158
159
160
161
162
          <listitem>
            <simpara><command>kea-dhcp4</command> - this is the root logger for
            the DHCPv4 server. All components used by the DHCPv4 server inherit
            the settings from this logger if there is no specialized logger
            provided.</simpara>
          </listitem>
163
164
          <listitem>
            <simpara><command>kea-dhcp4.bad_packet</command> - this is the
165
            logger used by the DHCPv4 server deamon for logging inbound client
166
            packets that were dropped or to which the server responded with a
167
            DHCPNAK. The allows adminstrators to configure a separate log
168
169
            output that contains only packet drop and reject entries.</simpara>
          </listitem>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
170
          <listitem>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
171
            <simpara><command>kea-dhcp4.dhcp4</command> - this is the logger
172
173
            used solely by the DHCPv4 server deamon. This logger does not
            specify logging settings for libraries used by the deamon.</simpara>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
174
175
          </listitem>
          <listitem>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
176
177
178
179
            <simpara><command>kea-dhcp4.dhcpsrv</command> - this logger is used
            by the libdhcpsrv library. This covers mostly DHCP engine (the lease
            allocation and renewal process), database operations and
            configuration.</simpara>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
180
181
          </listitem>
          <listitem>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
182
            <simpara><command>kea-dhcp4.hooks</command> - this logger is used
183
184
185
186
            to log messages pertaining to management of hooks libraries, e.g.
            registration and deregistration of the libraries, and to the
            initialization of callouts execution for various hook points within
            the DHCPv4 server.</simpara>
187
188
          </listitem>
          <listitem>
189
            <simpara><command>kea-dhcp4.ddns</command> - this logger is
190
191
192
            used by the DHCPv4 server to log messages related to the Client
            FQDN and Hostname option processing. It also includes log messages
            related to the relevant DNS updates.</simpara>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
193
          </listitem>
194
195
196
197
198
199
          <listitem>
            <simpara><command>kea-dhcp4.hosts</command> - this logger is used
            within the libdhcpsrv and it logs messages related to the management
            of the DHCPv4 host reservations, i.e. retrieval of the resevations
            and adding new reservations.</simpara>
          </listitem>
200
          <listitem>
201
            <simpara><command>kea-dhcp4.leases</command> - this logger is used
202
            by the DHCPv4 server to log messages related to the lease allocation.
203
204
            The messages include detailed information about the allocated or
            offered leases, errors during the lease allocation etc.
205
206
207
208
209
210
211
212
213
214
            </simpara>
          </listitem>
          <listitem>
            <simpara><command>kea-dhcp4.options</command> - this logger is
            used by the DHCPv4 server to log messages related to processing
            of the options in the DHCPv4 messages, i.e. parsing options,
            encoding options into on-wire format and packet classification
            using options contained in the received packets.</simpara>
          </listitem>
          <listitem>
215
            <simpara><command>kea-dhcp4.packets</command> - this logger
216
217
218
219
220
221
222
223
224
225
            is mostly used to log messages related to transmission of the DHCPv4
            packets, i.e. packet reception and sending a response. Such messages
            include the information about the source and destination IP addresses
            and interfaces used to transmit packets. This logger is also used
            to log messages related to subnet selection, as this selection is
            usually based on the IP addresses and/or interface names, which can
            be retrieved from the received packet, even before the DHCPv4 message
            carried in the packet is parsed.
            </simpara>
          </listitem>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
226
          <listitem>
227
228
229
230
231
232
233
234
235
            <simpara><command>kea-dhcp6</command> - this is the root logger for
            the DHCPv6 server. All components used by the DHCPv6 server inherit
            the settings from this logger if there is no specialized logger
            provided.</simpara>
          </listitem>
          <listitem>
            <simpara><command>kea-dhcp6.dhcp6</command> - this is the logger
            used solely by the DHCPv6 server deamon. This logger does not
            specify logging settings for libraries used by the daemon.</simpara>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
236
237
          </listitem>
          <listitem>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
238
239
240
241
            <simpara><command>kea-dhcp6.dhcpsrv</command> - this logger is used
            by the libdhcpsrv library. This covers mostly DHCP engine (the lease
            allocation and renewal process), database operations and
            configuration.</simpara>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
242
          </listitem>
243
          <listitem>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
244
            <simpara><command>kea-dhcp6.hooks</command> - this logger is used
245
246
            to log messages pertaining to management of hooks libraries, e.g.
            registration and deregistration of the libraries.</simpara>
247
          </listitem>
248
249
250
251
252
253
          <listitem>
            <simpara><command>kea-dhcp6.hosts</command> - this logger is used
            within the libdhcpsrv and it logs messages related to the management
            of the DHCPv6 host reservations, i.e. retrieval of the resevations
            and adding new reservations.</simpara>
          </listitem>
254
          <listitem>
255
256
257
258
259
260
261
262
263
            <simpara><command>kea-dhcp-ddns</command> - this is the root logger for
            the kea-dhcp-ddns deamon. All components used by this deamon inherit
            the settings from this logger if there is no specialized logger
            provided.</simpara>
          </listitem>
          <listitem>
            <simpara><command>kea-dhcp-ddns.dhcpddns</command> - this is the logger
            used solely by the kea-dhcp-ddns deamon. This logger does not
            specify logging settings for libraries used by the deamon.</simpara>
264
          </listitem>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
265
266
        </itemizedlist>

267
268
269
270
        <para>Additional loggers may be defined in the future. The easiest
        way to find out the logger name is to configure all logging to go
        to a single destination and look for specific logger names. See
        <xref linkend="logging-message-format"/> for details.</para>
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
        </section>

        <section>
          <title>severity (string)</title>

        <para>
          This specifies the category of messages logged.
          Each message is logged with an associated severity which
          may be one of the following (in descending order of
          severity):
        </para>

        <itemizedlist>
          <listitem>
            <simpara> FATAL </simpara>
          </listitem>

          <listitem>
            <simpara> ERROR </simpara>
          </listitem>

          <listitem>
            <simpara> WARN </simpara>
          </listitem>

          <listitem>
            <simpara> INFO </simpara>
          </listitem>

          <listitem>
            <simpara> DEBUG </simpara>
          </listitem>
        </itemizedlist>

        <para>

          When the severity of a logger is set to one of these
          values, it will only log messages of that severity, and
          the severities above it. The severity may also be set to
          NONE, in which case all messages from that logger are
          inhibited.

<!-- TODO: worded wrong? If I set to INFO, why would it show DEBUG which is literally below in that list? -->

        </para>

        </section>

        <section>
          <title>output_options (list)</title>

        <para>

          Each logger can have zero or more
          <option>output_options</option>. These specify where log
326
          messages are sent. These are explained in detail below.
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408

        </para>

        <para>

          The other options for a logger are:

        </para>

        </section>

        <section>
          <title>debuglevel (integer)</title>

        <para>

          When a logger's severity is set to DEBUG, this value
          specifies what debug messages should be printed. It ranges
          from 0 (least verbose) to 99 (most verbose).
        </para>


<!-- TODO: complete this sentence:

          The general classification of debug message types is

TODO; there's a ticket to determine these levels, see #1074

 -->

        <para>

          If severity for the logger is not DEBUG, this value is ignored.

        </para>

        </section>
      </section>

      <section>
        <title>Output Options</title>

        <para>

          The main settings for an output option are the
          <option>destination</option> and a value called
          <option>output</option>, the meaning of which depends on
          the destination that is set.

        </para>

        <section>
          <title>destination (string)</title>

          <para>

            The destination is the type of output. It can be one of:

          </para>

          <itemizedlist>

            <listitem>
              <simpara> console </simpara>
          </listitem>

            <listitem>
              <simpara> file </simpara>
          </listitem>

            <listitem>
              <simpara> syslog </simpara>
            </listitem>

          </itemizedlist>

        </section>

        <section>
          <title>output (string)</title>

        <para>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
409
410
411
412
413
414
415
          This value determines the type of output. There are several
          special values allowed here: <command>stdout</command> (messages
          are printed on standard output), <command>stderr</command>
          (messages are printed on stderr), <command>syslog</command> (messages
          are logged to syslog using default name, <command>syslog:name</command>
          (messages are logged to syslog using specified name). Any other
          value is interpreted as a filename that the logs should be written to.
416
417
418
419
420
421
422
423
        </para>

        <para>

          The other options for <option>output_options</option> are:

        </para>

424
        <!-- configuration of flush is not supported yet.
425
426
427
428
429
430
431
432
433
434
        <section>
          <title>flush (true of false)</title>

          <para>
            Flush buffers after each log message. Doing this will
            reduce performance but will ensure that if the program
            terminates abnormally, all messages up to the point of
            termination are output.
          </para>

Tomek Mrugalski's avatar
Tomek Mrugalski committed
435
        </section> -->
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477

        <section>
          <title>maxsize (integer)</title>

          <para>
            Only relevant when destination is file, this is maximum
            file size of output files in bytes. When the maximum
            size is reached, the file is renamed and a new file opened.
            (For example, a ".1" is appended to the name &mdash;
            if a ".1" file exists, it is renamed ".2",
            etc.)
          </para>

          <para>
            If this is 0, no maximum file size is used.
          </para>

          <note>
            <simpara>
	      Due to a limitation of the underlying logging library
	      (log4cplus), rolling over the log files (from ".1" to
	      ".2", etc) may show odd results: There can be
	      multiple small files at the timing of roll over.  This
	      can happen when multiple processes try to roll
	      over the files simultaneously.
	      Version 1.1.0 of log4cplus solved this problem, so if
	      this or higher version of log4cplus is used to build
	      Kea, it shouldn't happen.  Even for older versions
	      it is normally expected to happen rarely unless the log
	      messages are produced very frequently by multiple
	      different processes.
	    </simpara>
	  </note>

        </section>

        <section>
          <title>maxver (integer)</title>

          <para>
            Maximum number of old log files to keep around when
            rolling the output file. Only relevant when
Tomek Mrugalski's avatar
Tomek Mrugalski committed
478
            <option>output</option> is <quote>file</quote>.
479
480
481
482
483
484
485
486
487
          </para>

        </section>

      </section>

      </section>

      <section>
488
        <title>Example Logger Configurations</title>
489
490
491

        <para>
          In this example we want to set the global logging to
Tomek Mrugalski's avatar
Tomek Mrugalski committed
492
493
494
495
496
497
498
          write to the console using standard output.
        </para>

<screen><userinput>
"Logging": {
    "loggers": [
        {
Tomek Mrugalski's avatar
Tomek Mrugalski committed
499
            "name": "kea-dhcp4",
Tomek Mrugalski's avatar
Tomek Mrugalski committed
500
501
502
503
            "output_options": [
                {
                    "output": "stdout"
                }
504
            ],
Tomek Mrugalski's avatar
Tomek Mrugalski committed
505
506
507
508
509
            "severity": "WARN"
        }
    ]
}
</userinput>
510
511
</screen>

Tomek Mrugalski's avatar
Tomek Mrugalski committed
512
513
514
515
516
517
518
519
520
<para>In this second example, we want to store debug log messages
in a file that is at most 2MB and keep up to 8 copies of old logfiles.
Once the logfile grows to 2MB, it will be renamed and a new file
file be created.</para>

<screen><userinput>
"Logging": {
    "loggers": [
        {
Tomek Mrugalski's avatar
Tomek Mrugalski committed
521
            "name": "kea-dhcp6",
Tomek Mrugalski's avatar
Tomek Mrugalski committed
522
523
524
525
526
527
528
            "output_options": [
                {
                    "output": "/var/log/kea-debug.log",
                    "maxver": 8,
                    "maxsize": 204800,
                    "destination": "file"
                }
529
            ],
Tomek Mrugalski's avatar
Tomek Mrugalski committed
530
531
532
533
534
            "severity": "DEBUG",
            "debuglevel": 99
        }
   ]
}</userinput></screen>
535
536
537
538
      </section>

    </section>

539
    <section id="logging-message-format">
540
541
542
543
544
545
546
547
548
549
550
551
      <title>Logging Message Format</title>

      <para>
          Each message written  to the configured logging
          destinations comprises a number of components that identify
          the origin of the message and, if the message indicates
          a problem, information about the problem that may be
          useful in fixing it.
      </para>

      <para>
          Consider the message below logged to a file:
552
          <screen>2014-04-11 12:58:01.005 INFO  [kea-dhcp4.dhcpsrv/27456]
553
554
555
556
557
558
559
    DHCPSRV_MEMFILE_DB opening memory file lease database: type=memfile universe=4</screen>
      </para>

      <para>
        Note: the layout of messages written to the system logging
        file (syslog) may be slightly different.  This message has
        been split across two lines here for display reasons; in the
560
        logging file, it will appear on one line.
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
      </para>

      <para>
        The log message comprises a number of components:

          <variablelist>
          <varlistentry>
          <term>2014-04-11 12:58:01.005</term>
<!-- TODO: timestamp repeated even if using syslog? -->
          <listitem><para>
              The date and time at which the message was generated.
          </para></listitem>
          </varlistentry>

          <varlistentry>
          <term>INFO</term>
          <listitem><para>
              The severity of the message.
          </para></listitem>
          </varlistentry>

          <varlistentry>
583
          <term>[kea-dhcp4.dhcpsrv/27456]</term>
584
          <listitem><para>
Tomek Mrugalski's avatar
Tomek Mrugalski committed
585
            The source of the message.  This comprises two elements:
586
            the Kea process generating the message (in this
Tomek Mrugalski's avatar
Tomek Mrugalski committed
587
            case, <command>kea-dhcp4</command>) and the component
588
589
            within the program from which the message originated
            (which is the name of the common library used by DHCP server
590
591
            implementations). The number after the slash is a process id
            (pid).
592
593
594
595
596
597
598
599
600
          </para></listitem>
          </varlistentry>

          <varlistentry>
          <term>DHCPSRV_MEMFILE_DB</term>
          <listitem><para>
            The message identification.  Every message in Kea
            has a unique identification, which can be used as an
            index into the <ulink
601
            url="kea-messages.html"><citetitle>Kea Messages
602
            Manual</citetitle></ulink> (<ulink
603
            url="http://kea.isc.org/docs/kea-messages.html"
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
            />) from which more information can be obtained.
          </para></listitem>
          </varlistentry>

          <varlistentry>
          <term>opening memory file lease database: type=memfile universe=4</term>
          <listitem><para>
              A brief description.
              Within this text, information relating to the condition
              that caused the message to be logged will be included.
              In this example, the information is logged that the in-memory
              lease database backend will be used to store DHCP leases.
          </para></listitem>
          </varlistentry>
          </variablelist>
      </para>

    </section>

623
    <section>
624
      <title>Logging During Kea Startup</title>
625
626

      <para>
627
628
629
630
631
632
633
634
635
636
637
638
        The logging configuration is specified in the configuration file.
        However, when Kea starts, the file is not read until some way into the
        initialization process.  Prior to that, the logging settings are
        set to default values, although it is possible to modify some
        aspects of the settings by means of environment variables. Note
        that in the absence of any logging configuration in the configuration
        file, the settings of (possibly modified) default configuration will
        persist while the program is running.
      </para>
      <para>
        The following environment variables can be used to control the
        behavio of logging during startup:
639
640
641
642
643
644
      </para>

          <variablelist>
          <varlistentry>
          <term>KEA_LOCKFILE_DIR</term>
          <listitem><para>
645
              Specifies a directory where the logging system should create its
646
647
648
649
              lock file. If not specified, it is
              <replaceable>prefix</replaceable>/var/run/kea, where
              <replaceable>prefix</replaceable> defaults to /usr/local.
              This variable must not end
650
651
652
653
654
655
656
657
658
659
              with a slash. There is one special value: "none", which
              instructs Kea to not create lock file at all. This may cause
              issues if several processes log to the same file.
          </para></listitem>
          </varlistentry>

          <varlistentry>
          <term>KEA_LOGGER_DESTINATION</term>
          <listitem><para>
              Specifies logging output. There are several special values.
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
              <variablelist>
                  <varlistentry>
                      <term>stdout</term>
                      <listitem><para>
                          Log to standard output.
                      </para></listitem>
                  </varlistentry>
                  <varlistentry>
                      <term>stderr</term>
                      <listitem><para>
                          Log to standard error.
                      </para></listitem>
                  </varlistentry>
                  <varlistentry>
                      <term>syslog<optional>:<replaceable>fac</replaceable></optional></term>
                      <listitem><para>
                          Log via syslog. The optional
                          <replaceable>fac</replaceable> (which is
                          separated from the word "syslog" by a colon)
                          specifies the
                          facility to be used for the log messages. Unless
                          specified, messages will be logged using the
                          facility "local0".
                      </para></listitem>
                  </varlistentry>
              </variablelist>
              Any other value is treated as a name
687
688
689
690
691
692
693
694
              of the output file. If not specified otherwise, Kea will log to
              standard output.
          </para></listitem>
          </varlistentry>

          </variablelist>
    </section>

695
  </chapter>