blob: 859d275979164626099180badd94e8a2dcc58ea7 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`logging` --- Logging facility for Python
2==============================================
3
4.. module:: logging
Vinay Sajip1d5d6852010-12-12 22:47:13 +00005 :synopsis: Flexible event logging system for applications.
Georg Brandl116aa622007-08-15 14:28:22 +00006
7
8.. moduleauthor:: Vinay Sajip <vinay_sajip@red-dove.com>
9.. sectionauthor:: Vinay Sajip <vinay_sajip@red-dove.com>
10
11
Georg Brandl116aa622007-08-15 14:28:22 +000012.. index:: pair: Errors; logging
13
Vinay Sajipc63619b2010-12-19 12:56:57 +000014.. sidebar:: Important
15
Vinay Sajip01094e12010-12-19 13:41:26 +000016 This page contains the API reference information. For tutorial
17 information and discussion of more advanced topics, see
Vinay Sajipc63619b2010-12-19 12:56:57 +000018
19 * :ref:`Basic Tutorial <logging-basic-tutorial>`
20 * :ref:`Advanced Tutorial <logging-advanced-tutorial>`
21 * :ref:`Logging Cookbook <logging-cookbook>`
22
23
Vinay Sajip1d5d6852010-12-12 22:47:13 +000024This module defines functions and classes which implement a flexible event
Vinay Sajip36675b62010-12-12 22:30:17 +000025logging system for applications and libraries.
Georg Brandl116aa622007-08-15 14:28:22 +000026
Vinay Sajipa18b9592010-12-12 13:20:55 +000027The key benefit of having the logging API provided by a standard library module
28is that all Python modules can participate in logging, so your application log
29can include your own messages integrated with messages from third-party
30modules.
31
Vinay Sajipc63619b2010-12-19 12:56:57 +000032The module provides a lot of functionality and flexibility. If you are
33unfamiliar with logging, the best way to get to grips with it is to see the
Vinay Sajip01094e12010-12-19 13:41:26 +000034tutorials (see the links on the right).
Vinay Sajipa18b9592010-12-12 13:20:55 +000035
Vinay Sajipc63619b2010-12-19 12:56:57 +000036The basic classes defined by the module, together with their functions, are
37listed below.
Vinay Sajip9a6b4002010-12-14 19:40:21 +000038
39* Loggers expose the interface that application code directly uses.
40* Handlers send the log records (created by loggers) to the appropriate
41 destination.
42* Filters provide a finer grained facility for determining which log records
43 to output.
44* Formatters specify the layout of log records in the final output.
Vinay Sajipa18b9592010-12-12 13:20:55 +000045
Georg Brandl116aa622007-08-15 14:28:22 +000046
Vinay Sajipc63619b2010-12-19 12:56:57 +000047.. _logger:
Vinay Sajip5286ccf2010-12-12 13:25:29 +000048
Vinay Sajipc63619b2010-12-19 12:56:57 +000049Logger Objects
Christian Heimes8b0facf2007-12-04 19:30:01 +000050--------------
51
Vinay Sajipc63619b2010-12-19 12:56:57 +000052Loggers have the following attributes and methods. Note that Loggers are never
53instantiated directly, but always through the module-level function
54``logging.getLogger(name)``.
Georg Brandl116aa622007-08-15 14:28:22 +000055
Vinay Sajipc63619b2010-12-19 12:56:57 +000056.. class:: Logger
Georg Brandl116aa622007-08-15 14:28:22 +000057
Vinay Sajipc63619b2010-12-19 12:56:57 +000058.. attribute:: Logger.propagate
Georg Brandl116aa622007-08-15 14:28:22 +000059
Vinay Sajip287f2462011-11-23 08:54:22 +000060 If this evaluates to true, logging messages are passed by this logger and by
61 its child loggers to the handlers of higher level (ancestor) loggers.
62 Messages are passed directly to the ancestor loggers' handlers - neither the
63 level nor filters of the ancestor loggers in question are considered.
64
65 If this evaluates to false, logging messages are not passed to the handlers
66 of ancestor loggers.
67
68 The constructor sets this attribute to 1.
Vinay Sajipc8c8c692010-09-17 10:09:04 +000069
70
Vinay Sajipc63619b2010-12-19 12:56:57 +000071.. method:: Logger.setLevel(lvl)
Vinay Sajipf234eb92010-12-12 17:37:27 +000072
Vinay Sajipc63619b2010-12-19 12:56:57 +000073 Sets the threshold for this logger to *lvl*. Logging messages which are less
74 severe than *lvl* will be ignored. When a logger is created, the level is set to
75 :const:`NOTSET` (which causes all messages to be processed when the logger is
76 the root logger, or delegation to the parent when the logger is a non-root
77 logger). Note that the root logger is created with level :const:`WARNING`.
78
79 The term 'delegation to the parent' means that if a logger has a level of
80 NOTSET, its chain of ancestor loggers is traversed until either an ancestor with
81 a level other than NOTSET is found, or the root is reached.
82
83 If an ancestor is found with a level other than NOTSET, then that ancestor's
84 level is treated as the effective level of the logger where the ancestor search
85 began, and is used to determine how a logging event is handled.
86
87 If the root is reached, and it has a level of NOTSET, then all messages will be
88 processed. Otherwise, the root's level will be used as the effective level.
89
90
91.. method:: Logger.isEnabledFor(lvl)
92
93 Indicates if a message of severity *lvl* would be processed by this logger.
94 This method checks first the module-level level set by
95 ``logging.disable(lvl)`` and then the logger's effective level as determined
96 by :meth:`getEffectiveLevel`.
97
98
99.. method:: Logger.getEffectiveLevel()
100
101 Indicates the effective level for this logger. If a value other than
102 :const:`NOTSET` has been set using :meth:`setLevel`, it is returned. Otherwise,
103 the hierarchy is traversed towards the root until a value other than
104 :const:`NOTSET` is found, and that value is returned.
105
106
107.. method:: Logger.getChild(suffix)
108
109 Returns a logger which is a descendant to this logger, as determined by the suffix.
110 Thus, ``logging.getLogger('abc').getChild('def.ghi')`` would return the same
111 logger as would be returned by ``logging.getLogger('abc.def.ghi')``. This is a
112 convenience method, useful when the parent logger is named using e.g. ``__name__``
113 rather than a literal string.
114
115 .. versionadded:: 3.2
116
117
118.. method:: Logger.debug(msg, *args, **kwargs)
119
120 Logs a message with level :const:`DEBUG` on this logger. The *msg* is the
121 message format string, and the *args* are the arguments which are merged into
122 *msg* using the string formatting operator. (Note that this means that you can
123 use keywords in the format string, together with a single dictionary argument.)
124
125 There are three keyword arguments in *kwargs* which are inspected: *exc_info*
126 which, if it does not evaluate as false, causes exception information to be
127 added to the logging message. If an exception tuple (in the format returned by
128 :func:`sys.exc_info`) is provided, it is used; otherwise, :func:`sys.exc_info`
129 is called to get the exception information.
130
131 The second optional keyword argument is *stack_info*, which defaults to
132 False. If specified as True, stack information is added to the logging
133 message, including the actual logging call. Note that this is not the same
134 stack information as that displayed through specifying *exc_info*: The
135 former is stack frames from the bottom of the stack up to the logging call
136 in the current thread, whereas the latter is information about stack frames
137 which have been unwound, following an exception, while searching for
138 exception handlers.
139
140 You can specify *stack_info* independently of *exc_info*, e.g. to just show
141 how you got to a certain point in your code, even when no exceptions were
142 raised. The stack frames are printed following a header line which says::
143
144 Stack (most recent call last):
145
Éric Araujo661161e2011-10-22 19:29:48 +0200146 This mimics the ``Traceback (most recent call last):`` which is used when
Vinay Sajipc63619b2010-12-19 12:56:57 +0000147 displaying exception frames.
148
149 The third keyword argument is *extra* which can be used to pass a
150 dictionary which is used to populate the __dict__ of the LogRecord created for
151 the logging event with user-defined attributes. These custom attributes can then
152 be used as you like. For example, they could be incorporated into logged
153 messages. For example::
154
155 FORMAT = '%(asctime)-15s %(clientip)s %(user)-8s %(message)s'
156 logging.basicConfig(format=FORMAT)
157 d = { 'clientip' : '192.168.0.1', 'user' : 'fbloggs' }
158 logger = logging.getLogger('tcpserver')
159 logger.warning('Protocol problem: %s', 'connection reset', extra=d)
160
161 would print something like ::
162
163 2006-02-08 22:20:02,165 192.168.0.1 fbloggs Protocol problem: connection reset
164
165 The keys in the dictionary passed in *extra* should not clash with the keys used
166 by the logging system. (See the :class:`Formatter` documentation for more
167 information on which keys are used by the logging system.)
168
169 If you choose to use these attributes in logged messages, you need to exercise
170 some care. In the above example, for instance, the :class:`Formatter` has been
171 set up with a format string which expects 'clientip' and 'user' in the attribute
172 dictionary of the LogRecord. If these are missing, the message will not be
173 logged because a string formatting exception will occur. So in this case, you
174 always need to pass the *extra* dictionary with these keys.
175
176 While this might be annoying, this feature is intended for use in specialized
177 circumstances, such as multi-threaded servers where the same code executes in
178 many contexts, and interesting conditions which arise are dependent on this
179 context (such as remote client IP address and authenticated user name, in the
180 above example). In such circumstances, it is likely that specialized
181 :class:`Formatter`\ s would be used with particular :class:`Handler`\ s.
182
183 .. versionadded:: 3.2
184 The *stack_info* parameter was added.
185
186
187.. method:: Logger.info(msg, *args, **kwargs)
188
189 Logs a message with level :const:`INFO` on this logger. The arguments are
190 interpreted as for :meth:`debug`.
191
192
193.. method:: Logger.warning(msg, *args, **kwargs)
194
195 Logs a message with level :const:`WARNING` on this logger. The arguments are
196 interpreted as for :meth:`debug`.
197
Éric Araujo661161e2011-10-22 19:29:48 +0200198 .. note:: There is an obsolete method ``warn`` which is functionally
199 identical to ``warning``. As ``warn`` is deprecated, please do not use
200 it - use ``warning`` instead.
Vinay Sajipc63619b2010-12-19 12:56:57 +0000201
202.. method:: Logger.error(msg, *args, **kwargs)
203
204 Logs a message with level :const:`ERROR` on this logger. The arguments are
205 interpreted as for :meth:`debug`.
206
207
208.. method:: Logger.critical(msg, *args, **kwargs)
209
210 Logs a message with level :const:`CRITICAL` on this logger. The arguments are
211 interpreted as for :meth:`debug`.
212
213
214.. method:: Logger.log(lvl, msg, *args, **kwargs)
215
216 Logs a message with integer level *lvl* on this logger. The other arguments are
217 interpreted as for :meth:`debug`.
218
219
220.. method:: Logger.exception(msg, *args)
221
222 Logs a message with level :const:`ERROR` on this logger. The arguments are
223 interpreted as for :meth:`debug`. Exception info is added to the logging
224 message. This method should only be called from an exception handler.
225
226
227.. method:: Logger.addFilter(filt)
228
229 Adds the specified filter *filt* to this logger.
230
231
232.. method:: Logger.removeFilter(filt)
233
234 Removes the specified filter *filt* from this logger.
235
236
237.. method:: Logger.filter(record)
238
239 Applies this logger's filters to the record and returns a true value if the
240 record is to be processed.
241
242
243.. method:: Logger.addHandler(hdlr)
244
245 Adds the specified handler *hdlr* to this logger.
246
247
248.. method:: Logger.removeHandler(hdlr)
249
250 Removes the specified handler *hdlr* from this logger.
251
252
253.. method:: Logger.findCaller(stack_info=False)
254
255 Finds the caller's source filename and line number. Returns the filename, line
256 number, function name and stack information as a 4-element tuple. The stack
257 information is returned as *None* unless *stack_info* is *True*.
258
259
260.. method:: Logger.handle(record)
261
262 Handles a record by passing it to all handlers associated with this logger and
263 its ancestors (until a false value of *propagate* is found). This method is used
264 for unpickled records received from a socket, as well as those created locally.
265 Logger-level filtering is applied using :meth:`~Logger.filter`.
266
267
268.. method:: Logger.makeRecord(name, lvl, fn, lno, msg, args, exc_info, func=None, extra=None, sinfo=None)
269
270 This is a factory method which can be overridden in subclasses to create
271 specialized :class:`LogRecord` instances.
272
273.. method:: Logger.hasHandlers()
274
275 Checks to see if this logger has any handlers configured. This is done by
276 looking for handlers in this logger and its parents in the logger hierarchy.
277 Returns True if a handler was found, else False. The method stops searching
278 up the hierarchy whenever a logger with the 'propagate' attribute set to
279 False is found - that will be the last logger which is checked for the
280 existence of handlers.
281
282 .. versionadded:: 3.2
283
284
285.. _handler:
286
287Handler Objects
Benjamin Peterson058e31e2009-01-16 03:54:08 +0000288---------------
289
Vinay Sajipc63619b2010-12-19 12:56:57 +0000290Handlers have the following attributes and methods. Note that :class:`Handler`
291is never instantiated directly; this class acts as a base for more useful
292subclasses. However, the :meth:`__init__` method in subclasses needs to call
293:meth:`Handler.__init__`.
Georg Brandl116aa622007-08-15 14:28:22 +0000294
Georg Brandl116aa622007-08-15 14:28:22 +0000295
Vinay Sajipc63619b2010-12-19 12:56:57 +0000296.. method:: Handler.__init__(level=NOTSET)
Georg Brandl116aa622007-08-15 14:28:22 +0000297
Vinay Sajipc63619b2010-12-19 12:56:57 +0000298 Initializes the :class:`Handler` instance by setting its level, setting the list
299 of filters to the empty list and creating a lock (using :meth:`createLock`) for
300 serializing access to an I/O mechanism.
Vinay Sajip30bf1222009-01-10 19:23:34 +0000301
Georg Brandl116aa622007-08-15 14:28:22 +0000302
Vinay Sajipc63619b2010-12-19 12:56:57 +0000303.. method:: Handler.createLock()
Georg Brandl116aa622007-08-15 14:28:22 +0000304
Vinay Sajipc63619b2010-12-19 12:56:57 +0000305 Initializes a thread lock which can be used to serialize access to underlying
306 I/O functionality which may not be threadsafe.
Georg Brandl116aa622007-08-15 14:28:22 +0000307
Georg Brandl116aa622007-08-15 14:28:22 +0000308
Vinay Sajipc63619b2010-12-19 12:56:57 +0000309.. method:: Handler.acquire()
Georg Brandl116aa622007-08-15 14:28:22 +0000310
Vinay Sajipc63619b2010-12-19 12:56:57 +0000311 Acquires the thread lock created with :meth:`createLock`.
Georg Brandl116aa622007-08-15 14:28:22 +0000312
Georg Brandl116aa622007-08-15 14:28:22 +0000313
Vinay Sajipc63619b2010-12-19 12:56:57 +0000314.. method:: Handler.release()
Georg Brandl116aa622007-08-15 14:28:22 +0000315
Vinay Sajipc63619b2010-12-19 12:56:57 +0000316 Releases the thread lock acquired with :meth:`acquire`.
Georg Brandl116aa622007-08-15 14:28:22 +0000317
Georg Brandl116aa622007-08-15 14:28:22 +0000318
Vinay Sajipc63619b2010-12-19 12:56:57 +0000319.. method:: Handler.setLevel(lvl)
Vinay Sajip30bf1222009-01-10 19:23:34 +0000320
Vinay Sajipc63619b2010-12-19 12:56:57 +0000321 Sets the threshold for this handler to *lvl*. Logging messages which are less
322 severe than *lvl* will be ignored. When a handler is created, the level is set
323 to :const:`NOTSET` (which causes all messages to be processed).
324
325
326.. method:: Handler.setFormatter(form)
327
328 Sets the :class:`Formatter` for this handler to *form*.
329
330
331.. method:: Handler.addFilter(filt)
332
333 Adds the specified filter *filt* to this handler.
334
335
336.. method:: Handler.removeFilter(filt)
337
338 Removes the specified filter *filt* from this handler.
339
340
341.. method:: Handler.filter(record)
342
343 Applies this handler's filters to the record and returns a true value if the
344 record is to be processed.
345
346
347.. method:: Handler.flush()
348
349 Ensure all logging output has been flushed. This version does nothing and is
350 intended to be implemented by subclasses.
351
352
353.. method:: Handler.close()
354
355 Tidy up any resources used by the handler. This version does no output but
356 removes the handler from an internal list of handlers which is closed when
357 :func:`shutdown` is called. Subclasses should ensure that this gets called
358 from overridden :meth:`close` methods.
359
360
361.. method:: Handler.handle(record)
362
363 Conditionally emits the specified logging record, depending on filters which may
364 have been added to the handler. Wraps the actual emission of the record with
365 acquisition/release of the I/O thread lock.
366
367
368.. method:: Handler.handleError(record)
369
370 This method should be called from handlers when an exception is encountered
371 during an :meth:`emit` call. By default it does nothing, which means that
372 exceptions get silently ignored. This is what is mostly wanted for a logging
373 system - most users will not care about errors in the logging system, they are
374 more interested in application errors. You could, however, replace this with a
375 custom handler if you wish. The specified record is the one which was being
376 processed when the exception occurred.
377
378
379.. method:: Handler.format(record)
380
381 Do formatting for a record - if a formatter is set, use it. Otherwise, use the
382 default formatter for the module.
383
384
385.. method:: Handler.emit(record)
386
387 Do whatever it takes to actually log the specified logging record. This version
388 is intended to be implemented by subclasses and so raises a
389 :exc:`NotImplementedError`.
390
391For a list of handlers included as standard, see :mod:`logging.handlers`.
392
393.. _formatter-objects:
394
395Formatter Objects
396-----------------
Vinay Sajip121a1c42010-09-08 10:46:15 +0000397
Vinay Sajip30bf1222009-01-10 19:23:34 +0000398.. currentmodule:: logging
399
Vinay Sajipc63619b2010-12-19 12:56:57 +0000400:class:`Formatter` objects have the following attributes and methods. They are
401responsible for converting a :class:`LogRecord` to (usually) a string which can
402be interpreted by either a human or an external system. The base
403:class:`Formatter` allows a formatting string to be specified. If none is
404supplied, the default value of ``'%(message)s'`` is used.
Georg Brandlf9734072008-12-07 15:30:06 +0000405
Vinay Sajipc63619b2010-12-19 12:56:57 +0000406A Formatter can be initialized with a format string which makes use of knowledge
407of the :class:`LogRecord` attributes - such as the default value mentioned above
408making use of the fact that the user's message and arguments are pre-formatted
409into a :class:`LogRecord`'s *message* attribute. This format string contains
410standard Python %-style mapping keys. See section :ref:`old-string-formatting`
411for more information on string formatting.
Georg Brandlf9734072008-12-07 15:30:06 +0000412
Vinay Sajipc63619b2010-12-19 12:56:57 +0000413The useful mapping keys in a :class:`LogRecord` are given in the section on
414:ref:`logrecord-attributes`.
Vinay Sajip121a1c42010-09-08 10:46:15 +0000415
Georg Brandl116aa622007-08-15 14:28:22 +0000416
Vinay Sajipc46102c2011-04-08 01:30:51 +0100417.. class:: Formatter(fmt=None, datefmt=None, style='%')
Georg Brandl116aa622007-08-15 14:28:22 +0000418
Vinay Sajipc63619b2010-12-19 12:56:57 +0000419 Returns a new instance of the :class:`Formatter` class. The instance is
420 initialized with a format string for the message as a whole, as well as a
421 format string for the date/time portion of a message. If no *fmt* is
422 specified, ``'%(message)s'`` is used. If no *datefmt* is specified, the
423 ISO8601 date format is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000424
Vinay Sajipc46102c2011-04-08 01:30:51 +0100425 The *style* parameter can be one of '%', '{' or '$' and determines how
426 the format string will be merged with its data: using one of %-formatting,
Vinay Sajip77f8d292011-04-08 01:34:20 +0100427 :meth:`str.format` or :class:`string.Template`.
Vinay Sajipc46102c2011-04-08 01:30:51 +0100428
429 .. versionchanged:: 3.2
430 The *style* parameter was added.
431
432
Vinay Sajipc63619b2010-12-19 12:56:57 +0000433 .. method:: format(record)
Georg Brandl116aa622007-08-15 14:28:22 +0000434
Vinay Sajipc63619b2010-12-19 12:56:57 +0000435 The record's attribute dictionary is used as the operand to a string
436 formatting operation. Returns the resulting string. Before formatting the
437 dictionary, a couple of preparatory steps are carried out. The *message*
438 attribute of the record is computed using *msg* % *args*. If the
439 formatting string contains ``'(asctime)'``, :meth:`formatTime` is called
440 to format the event time. If there is exception information, it is
441 formatted using :meth:`formatException` and appended to the message. Note
442 that the formatted exception information is cached in attribute
443 *exc_text*. This is useful because the exception information can be
444 pickled and sent across the wire, but you should be careful if you have
445 more than one :class:`Formatter` subclass which customizes the formatting
446 of exception information. In this case, you will have to clear the cached
447 value after a formatter has done its formatting, so that the next
448 formatter to handle the event doesn't use the cached value but
449 recalculates it afresh.
450
451 If stack information is available, it's appended after the exception
452 information, using :meth:`formatStack` to transform it if necessary.
453
454
455 .. method:: formatTime(record, datefmt=None)
456
457 This method should be called from :meth:`format` by a formatter which
458 wants to make use of a formatted time. This method can be overridden in
459 formatters to provide for any specific requirement, but the basic behavior
460 is as follows: if *datefmt* (a string) is specified, it is used with
461 :func:`time.strftime` to format the creation time of the
462 record. Otherwise, the ISO8601 format is used. The resulting string is
463 returned.
464
Vinay Sajipcdc75172011-06-12 11:44:28 +0100465 This function uses a user-configurable function to convert the creation
466 time to a tuple. By default, :func:`time.localtime` is used; to change
467 this for a particular formatter instance, set the ``converter`` attribute
468 to a function with the same signature as :func:`time.localtime` or
469 :func:`time.gmtime`. To change it for all formatters, for example if you
470 want all logging times to be shown in GMT, set the ``converter``
471 attribute in the ``Formatter`` class.
Vinay Sajipc63619b2010-12-19 12:56:57 +0000472
Vinay Sajip89c00ce2011-06-10 19:05:16 +0100473 .. versionchanged:: 3.3
Georg Brandle10b5e12011-06-14 21:09:55 +0200474 Previously, the default ISO 8601 format was hard-coded as in this
475 example: ``2010-09-06 22:38:15,292`` where the part before the comma is
476 handled by a strptime format string (``'%Y-%m-%d %H:%M:%S'``), and the
477 part after the comma is a millisecond value. Because strptime does not
478 have a format placeholder for milliseconds, the millisecond value is
479 appended using another format string, ``'%s,%03d'`` – and both of these
480 format strings have been hardcoded into this method. With the change,
481 these strings are defined as class-level attributes which can be
482 overridden at the instance level when desired. The names of the
483 attributes are ``default_time_format`` (for the strptime format string)
484 and ``default_msec_format`` (for appending the millisecond value).
Vinay Sajipc63619b2010-12-19 12:56:57 +0000485
486 .. method:: formatException(exc_info)
487
488 Formats the specified exception information (a standard exception tuple as
489 returned by :func:`sys.exc_info`) as a string. This default implementation
490 just uses :func:`traceback.print_exception`. The resulting string is
491 returned.
492
493 .. method:: formatStack(stack_info)
494
495 Formats the specified stack information (a string as returned by
496 :func:`traceback.print_stack`, but with the last newline removed) as a
497 string. This default implementation just returns the input value.
498
499.. _filter:
500
501Filter Objects
502--------------
503
504``Filters`` can be used by ``Handlers`` and ``Loggers`` for more sophisticated
505filtering than is provided by levels. The base filter class only allows events
506which are below a certain point in the logger hierarchy. For example, a filter
507initialized with 'A.B' will allow events logged by loggers 'A.B', 'A.B.C',
508'A.B.C.D', 'A.B.D' etc. but not 'A.BB', 'B.A.B' etc. If initialized with the
509empty string, all events are passed.
510
511
512.. class:: Filter(name='')
513
514 Returns an instance of the :class:`Filter` class. If *name* is specified, it
515 names a logger which, together with its children, will have its events allowed
516 through the filter. If *name* is the empty string, allows every event.
517
518
519 .. method:: filter(record)
520
521 Is the specified record to be logged? Returns zero for no, nonzero for
522 yes. If deemed appropriate, the record may be modified in-place by this
523 method.
524
525Note that filters attached to handlers are consulted whenever an event is
526emitted by the handler, whereas filters attached to loggers are consulted
527whenever an event is logged to the handler (using :meth:`debug`, :meth:`info`,
528etc.) This means that events which have been generated by descendant loggers
529will not be filtered by a logger's filter setting, unless the filter has also
530been applied to those descendant loggers.
531
532You don't actually need to subclass ``Filter``: you can pass any instance
533which has a ``filter`` method with the same semantics.
534
535.. versionchanged:: 3.2
536 You don't need to create specialized ``Filter`` classes, or use other
537 classes with a ``filter`` method: you can use a function (or other
538 callable) as a filter. The filtering logic will check to see if the filter
539 object has a ``filter`` attribute: if it does, it's assumed to be a
540 ``Filter`` and its :meth:`~Filter.filter` method is called. Otherwise, it's
541 assumed to be a callable and called with the record as the single
542 parameter. The returned value should conform to that returned by
543 :meth:`~Filter.filter`.
544
545Although filters are used primarily to filter records based on more
546sophisticated criteria than levels, they get to see every record which is
547processed by the handler or logger they're attached to: this can be useful if
548you want to do things like counting how many records were processed by a
549particular logger or handler, or adding, changing or removing attributes in
550the LogRecord being processed. Obviously changing the LogRecord needs to be
551done with some care, but it does allow the injection of contextual information
552into logs (see :ref:`filters-contextual`).
553
554.. _log-record:
555
556LogRecord Objects
557-----------------
558
559:class:`LogRecord` instances are created automatically by the :class:`Logger`
560every time something is logged, and can be created manually via
561:func:`makeLogRecord` (for example, from a pickled event received over the
562wire).
563
564
565.. class:: LogRecord(name, level, pathname, lineno, msg, args, exc_info, func=None, sinfo=None)
566
567 Contains all the information pertinent to the event being logged.
568
569 The primary information is passed in :attr:`msg` and :attr:`args`, which
570 are combined using ``msg % args`` to create the :attr:`message` field of the
571 record.
572
573 :param name: The name of the logger used to log the event represented by
574 this LogRecord.
575 :param level: The numeric level of the logging event (one of DEBUG, INFO etc.)
Vinay Sajip0aaa9e12011-06-11 23:03:37 +0100576 Note that this is converted to *two* attributes of the LogRecord:
577 ``levelno`` for the numeric value and ``levelname`` for the
578 corresponding level name.
Vinay Sajipc63619b2010-12-19 12:56:57 +0000579 :param pathname: The full pathname of the source file where the logging call
580 was made.
581 :param lineno: The line number in the source file where the logging call was
582 made.
583 :param msg: The event description message, possibly a format string with
584 placeholders for variable data.
585 :param args: Variable data to merge into the *msg* argument to obtain the
586 event description.
587 :param exc_info: An exception tuple with the current exception information,
588 or *None* if no exception information is available.
589 :param func: The name of the function or method from which the logging call
590 was invoked.
591 :param sinfo: A text string representing stack information from the base of
592 the stack in the current thread, up to the logging call.
593
594 .. method:: getMessage()
595
596 Returns the message for this :class:`LogRecord` instance after merging any
597 user-supplied arguments with the message. If the user-supplied message
598 argument to the logging call is not a string, :func:`str` is called on it to
599 convert it to a string. This allows use of user-defined classes as
600 messages, whose ``__str__`` method can return the actual format string to
601 be used.
602
603 .. versionchanged:: 3.2
604 The creation of a ``LogRecord`` has been made more configurable by
605 providing a factory which is used to create the record. The factory can be
606 set using :func:`getLogRecordFactory` and :func:`setLogRecordFactory`
607 (see this for the factory's signature).
608
609 This functionality can be used to inject your own values into a
610 LogRecord at creation time. You can use the following pattern::
611
612 old_factory = logging.getLogRecordFactory()
613
614 def record_factory(*args, **kwargs):
615 record = old_factory(*args, **kwargs)
616 record.custom_attribute = 0xdecafbad
617 return record
618
619 logging.setLogRecordFactory(record_factory)
620
621 With this pattern, multiple factories could be chained, and as long
622 as they don't overwrite each other's attributes or unintentionally
623 overwrite the standard attributes listed above, there should be no
624 surprises.
625
626
627.. _logrecord-attributes:
628
629LogRecord attributes
630--------------------
631
632The LogRecord has a number of attributes, most of which are derived from the
633parameters to the constructor. (Note that the names do not always correspond
634exactly between the LogRecord constructor parameters and the LogRecord
635attributes.) These attributes can be used to merge data from the record into
636the format string. The following table lists (in alphabetical order) the
637attribute names, their meanings and the corresponding placeholder in a %-style
638format string.
639
640If you are using {}-formatting (:func:`str.format`), you can use
641``{attrname}`` as the placeholder in the format string. If you are using
642$-formatting (:class:`string.Template`), use the form ``${attrname}``. In
643both cases, of course, replace ``attrname`` with the actual attribute name
644you want to use.
645
646In the case of {}-formatting, you can specify formatting flags by placing them
647after the attribute name, separated from it with a colon. For example: a
648placeholder of ``{msecs:03d}`` would format a millisecond value of ``4`` as
649``004``. Refer to the :meth:`str.format` documentation for full details on
650the options available to you.
651
652+----------------+-------------------------+-----------------------------------------------+
653| Attribute name | Format | Description |
654+================+=========================+===============================================+
655| args | You shouldn't need to | The tuple of arguments merged into ``msg`` to |
656| | format this yourself. | produce ``message``. |
657+----------------+-------------------------+-----------------------------------------------+
658| asctime | ``%(asctime)s`` | Human-readable time when the |
659| | | :class:`LogRecord` was created. By default |
660| | | this is of the form '2003-07-08 16:49:45,896' |
661| | | (the numbers after the comma are millisecond |
662| | | portion of the time). |
663+----------------+-------------------------+-----------------------------------------------+
664| created | ``%(created)f`` | Time when the :class:`LogRecord` was created |
665| | | (as returned by :func:`time.time`). |
666+----------------+-------------------------+-----------------------------------------------+
667| exc_info | You shouldn't need to | Exception tuple (à la ``sys.exc_info``) or, |
668| | format this yourself. | if no exception has occurred, *None*. |
669+----------------+-------------------------+-----------------------------------------------+
670| filename | ``%(filename)s`` | Filename portion of ``pathname``. |
671+----------------+-------------------------+-----------------------------------------------+
672| funcName | ``%(funcName)s`` | Name of function containing the logging call. |
673+----------------+-------------------------+-----------------------------------------------+
674| levelname | ``%(levelname)s`` | Text logging level for the message |
675| | | (``'DEBUG'``, ``'INFO'``, ``'WARNING'``, |
676| | | ``'ERROR'``, ``'CRITICAL'``). |
677+----------------+-------------------------+-----------------------------------------------+
678| levelno | ``%(levelno)s`` | Numeric logging level for the message |
679| | | (:const:`DEBUG`, :const:`INFO`, |
680| | | :const:`WARNING`, :const:`ERROR`, |
681| | | :const:`CRITICAL`). |
682+----------------+-------------------------+-----------------------------------------------+
683| lineno | ``%(lineno)d`` | Source line number where the logging call was |
684| | | issued (if available). |
685+----------------+-------------------------+-----------------------------------------------+
686| module | ``%(module)s`` | Module (name portion of ``filename``). |
687+----------------+-------------------------+-----------------------------------------------+
688| msecs | ``%(msecs)d`` | Millisecond portion of the time when the |
689| | | :class:`LogRecord` was created. |
690+----------------+-------------------------+-----------------------------------------------+
691| message | ``%(message)s`` | The logged message, computed as ``msg % |
692| | | args``. This is set when |
693| | | :meth:`Formatter.format` is invoked. |
694+----------------+-------------------------+-----------------------------------------------+
695| msg | You shouldn't need to | The format string passed in the original |
696| | format this yourself. | logging call. Merged with ``args`` to |
697| | | produce ``message``, or an arbitrary object |
698| | | (see :ref:`arbitrary-object-messages`). |
699+----------------+-------------------------+-----------------------------------------------+
700| name | ``%(name)s`` | Name of the logger used to log the call. |
701+----------------+-------------------------+-----------------------------------------------+
702| pathname | ``%(pathname)s`` | Full pathname of the source file where the |
703| | | logging call was issued (if available). |
704+----------------+-------------------------+-----------------------------------------------+
705| process | ``%(process)d`` | Process ID (if available). |
706+----------------+-------------------------+-----------------------------------------------+
707| processName | ``%(processName)s`` | Process name (if available). |
708+----------------+-------------------------+-----------------------------------------------+
709| relativeCreated| ``%(relativeCreated)d`` | Time in milliseconds when the LogRecord was |
710| | | created, relative to the time the logging |
711| | | module was loaded. |
712+----------------+-------------------------+-----------------------------------------------+
713| stack_info | You shouldn't need to | Stack frame information (where available) |
714| | format this yourself. | from the bottom of the stack in the current |
715| | | thread, up to and including the stack frame |
716| | | of the logging call which resulted in the |
717| | | creation of this record. |
718+----------------+-------------------------+-----------------------------------------------+
719| thread | ``%(thread)d`` | Thread ID (if available). |
720+----------------+-------------------------+-----------------------------------------------+
721| threadName | ``%(threadName)s`` | Thread name (if available). |
722+----------------+-------------------------+-----------------------------------------------+
723
724
725.. _logger-adapter:
726
727LoggerAdapter Objects
728---------------------
729
730:class:`LoggerAdapter` instances are used to conveniently pass contextual
731information into logging calls. For a usage example , see the section on
732:ref:`adding contextual information to your logging output <context-info>`.
733
Vinay Sajipc63619b2010-12-19 12:56:57 +0000734.. class:: LoggerAdapter(logger, extra)
735
736 Returns an instance of :class:`LoggerAdapter` initialized with an
737 underlying :class:`Logger` instance and a dict-like object.
738
739 .. method:: process(msg, kwargs)
740
741 Modifies the message and/or keyword arguments passed to a logging call in
742 order to insert contextual information. This implementation takes the object
743 passed as *extra* to the constructor and adds it to *kwargs* using key
744 'extra'. The return value is a (*msg*, *kwargs*) tuple which has the
745 (possibly modified) versions of the arguments passed in.
746
747In addition to the above, :class:`LoggerAdapter` supports the following
748methods of :class:`Logger`, i.e. :meth:`debug`, :meth:`info`, :meth:`warning`,
749:meth:`error`, :meth:`exception`, :meth:`critical`, :meth:`log`,
750:meth:`isEnabledFor`, :meth:`getEffectiveLevel`, :meth:`setLevel`,
751:meth:`hasHandlers`. These methods have the same signatures as their
752counterparts in :class:`Logger`, so you can use the two types of instances
753interchangeably.
754
755.. versionchanged:: 3.2
756 The :meth:`isEnabledFor`, :meth:`getEffectiveLevel`, :meth:`setLevel` and
757 :meth:`hasHandlers` methods were added to :class:`LoggerAdapter`. These
758 methods delegate to the underlying logger.
759
760
761Thread Safety
762-------------
763
764The logging module is intended to be thread-safe without any special work
765needing to be done by its clients. It achieves this though using threading
766locks; there is one lock to serialize access to the module's shared data, and
767each handler also creates a lock to serialize access to its underlying I/O.
768
769If you are implementing asynchronous signal handlers using the :mod:`signal`
770module, you may not be able to use logging from within such handlers. This is
771because lock implementations in the :mod:`threading` module are not always
772re-entrant, and so cannot be invoked from such signal handlers.
773
Georg Brandl116aa622007-08-15 14:28:22 +0000774
Benjamin Peterson058e31e2009-01-16 03:54:08 +0000775Module-Level Functions
776----------------------
777
Georg Brandl116aa622007-08-15 14:28:22 +0000778In addition to the classes described above, there are a number of module- level
779functions.
780
781
Georg Brandlcd7f32b2009-06-08 09:13:45 +0000782.. function:: getLogger(name=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000783
Georg Brandlcd7f32b2009-06-08 09:13:45 +0000784 Return a logger with the specified name or, if name is ``None``, return a
Georg Brandl116aa622007-08-15 14:28:22 +0000785 logger which is the root logger of the hierarchy. If specified, the name is
Vinay Sajip9a6b4002010-12-14 19:40:21 +0000786 typically a dot-separated hierarchical name like *'a'*, *'a.b'* or *'a.b.c.d'*.
Georg Brandl116aa622007-08-15 14:28:22 +0000787 Choice of these names is entirely up to the developer who is using logging.
788
789 All calls to this function with a given name return the same logger instance.
790 This means that logger instances never need to be passed between different parts
791 of an application.
792
793
794.. function:: getLoggerClass()
795
796 Return either the standard :class:`Logger` class, or the last class passed to
797 :func:`setLoggerClass`. This function may be called from within a new class
798 definition, to ensure that installing a customised :class:`Logger` class will
799 not undo customisations already applied by other code. For example::
800
801 class MyLogger(logging.getLoggerClass()):
802 # ... override behaviour here
803
804
Vinay Sajip61561522010-12-03 11:50:38 +0000805.. function:: getLogRecordFactory()
806
807 Return a callable which is used to create a :class:`LogRecord`.
808
809 .. versionadded:: 3.2
Vinay Sajip61561522010-12-03 11:50:38 +0000810 This function has been provided, along with :func:`setLogRecordFactory`,
811 to allow developers more control over how the :class:`LogRecord`
812 representing a logging event is constructed.
813
814 See :func:`setLogRecordFactory` for more information about the how the
815 factory is called.
816
Georg Brandlcd7f32b2009-06-08 09:13:45 +0000817.. function:: debug(msg, *args, **kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000818
819 Logs a message with level :const:`DEBUG` on the root logger. The *msg* is the
820 message format string, and the *args* are the arguments which are merged into
821 *msg* using the string formatting operator. (Note that this means that you can
822 use keywords in the format string, together with a single dictionary argument.)
823
Vinay Sajip8593ae62010-11-14 21:33:04 +0000824 There are three keyword arguments in *kwargs* which are inspected: *exc_info*
Georg Brandl116aa622007-08-15 14:28:22 +0000825 which, if it does not evaluate as false, causes exception information to be
826 added to the logging message. If an exception tuple (in the format returned by
827 :func:`sys.exc_info`) is provided, it is used; otherwise, :func:`sys.exc_info`
828 is called to get the exception information.
829
Vinay Sajip8593ae62010-11-14 21:33:04 +0000830 The second optional keyword argument is *stack_info*, which defaults to
831 False. If specified as True, stack information is added to the logging
832 message, including the actual logging call. Note that this is not the same
833 stack information as that displayed through specifying *exc_info*: The
834 former is stack frames from the bottom of the stack up to the logging call
835 in the current thread, whereas the latter is information about stack frames
836 which have been unwound, following an exception, while searching for
837 exception handlers.
838
839 You can specify *stack_info* independently of *exc_info*, e.g. to just show
840 how you got to a certain point in your code, even when no exceptions were
841 raised. The stack frames are printed following a header line which says::
842
843 Stack (most recent call last):
844
Éric Araujo661161e2011-10-22 19:29:48 +0200845 This mimics the ``Traceback (most recent call last):`` which is used when
Vinay Sajip8593ae62010-11-14 21:33:04 +0000846 displaying exception frames.
847
848 The third optional keyword argument is *extra* which can be used to pass a
Georg Brandl116aa622007-08-15 14:28:22 +0000849 dictionary which is used to populate the __dict__ of the LogRecord created for
850 the logging event with user-defined attributes. These custom attributes can then
851 be used as you like. For example, they could be incorporated into logged
852 messages. For example::
853
Vinay Sajip9a6b4002010-12-14 19:40:21 +0000854 FORMAT = '%(asctime)-15s %(clientip)s %(user)-8s %(message)s'
Georg Brandl116aa622007-08-15 14:28:22 +0000855 logging.basicConfig(format=FORMAT)
856 d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
Vinay Sajip9a6b4002010-12-14 19:40:21 +0000857 logging.warning('Protocol problem: %s', 'connection reset', extra=d)
Georg Brandl116aa622007-08-15 14:28:22 +0000858
Vinay Sajip4039aff2010-09-11 10:25:28 +0000859 would print something like::
Georg Brandl116aa622007-08-15 14:28:22 +0000860
861 2006-02-08 22:20:02,165 192.168.0.1 fbloggs Protocol problem: connection reset
862
863 The keys in the dictionary passed in *extra* should not clash with the keys used
864 by the logging system. (See the :class:`Formatter` documentation for more
865 information on which keys are used by the logging system.)
866
867 If you choose to use these attributes in logged messages, you need to exercise
868 some care. In the above example, for instance, the :class:`Formatter` has been
869 set up with a format string which expects 'clientip' and 'user' in the attribute
870 dictionary of the LogRecord. If these are missing, the message will not be
871 logged because a string formatting exception will occur. So in this case, you
872 always need to pass the *extra* dictionary with these keys.
873
874 While this might be annoying, this feature is intended for use in specialized
875 circumstances, such as multi-threaded servers where the same code executes in
876 many contexts, and interesting conditions which arise are dependent on this
877 context (such as remote client IP address and authenticated user name, in the
878 above example). In such circumstances, it is likely that specialized
879 :class:`Formatter`\ s would be used with particular :class:`Handler`\ s.
880
Vinay Sajip8593ae62010-11-14 21:33:04 +0000881 .. versionadded:: 3.2
882 The *stack_info* parameter was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000883
Georg Brandlcd7f32b2009-06-08 09:13:45 +0000884.. function:: info(msg, *args, **kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000885
886 Logs a message with level :const:`INFO` on the root logger. The arguments are
887 interpreted as for :func:`debug`.
888
889
Georg Brandlcd7f32b2009-06-08 09:13:45 +0000890.. function:: warning(msg, *args, **kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000891
Vinay Sajip04d5bc02011-10-21 07:33:42 +0100892 Logs a message with level :const:`WARNING` on the root logger. The arguments
893 are interpreted as for :func:`debug`.
894
Éric Araujo661161e2011-10-22 19:29:48 +0200895 .. note:: There is an obsolete function ``warn`` which is functionally
896 identical to ``warning``. As ``warn`` is deprecated, please do not use
897 it - use ``warning`` instead.
Georg Brandl116aa622007-08-15 14:28:22 +0000898
899
Georg Brandlcd7f32b2009-06-08 09:13:45 +0000900.. function:: error(msg, *args, **kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000901
902 Logs a message with level :const:`ERROR` on the root logger. The arguments are
903 interpreted as for :func:`debug`.
904
905
Georg Brandlcd7f32b2009-06-08 09:13:45 +0000906.. function:: critical(msg, *args, **kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000907
908 Logs a message with level :const:`CRITICAL` on the root logger. The arguments
909 are interpreted as for :func:`debug`.
910
911
Georg Brandlcd7f32b2009-06-08 09:13:45 +0000912.. function:: exception(msg, *args)
Georg Brandl116aa622007-08-15 14:28:22 +0000913
914 Logs a message with level :const:`ERROR` on the root logger. The arguments are
915 interpreted as for :func:`debug`. Exception info is added to the logging
916 message. This function should only be called from an exception handler.
917
Georg Brandlcd7f32b2009-06-08 09:13:45 +0000918.. function:: log(level, msg, *args, **kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000919
920 Logs a message with level *level* on the root logger. The other arguments are
921 interpreted as for :func:`debug`.
922
Vinay Sajipc8c8c692010-09-17 10:09:04 +0000923 PLEASE NOTE: The above module-level functions which delegate to the root
924 logger should *not* be used in threads, in versions of Python earlier than
925 2.7.1 and 3.2, unless at least one handler has been added to the root
926 logger *before* the threads are started. These convenience functions call
927 :func:`basicConfig` to ensure that at least one handler is available; in
928 earlier versions of Python, this can (under rare circumstances) lead to
929 handlers being added multiple times to the root logger, which can in turn
930 lead to multiple messages for the same event.
Georg Brandl116aa622007-08-15 14:28:22 +0000931
932.. function:: disable(lvl)
933
934 Provides an overriding level *lvl* for all loggers which takes precedence over
935 the logger's own level. When the need arises to temporarily throttle logging
Benjamin Peterson886af962010-03-21 23:13:07 +0000936 output down across the whole application, this function can be useful. Its
937 effect is to disable all logging calls of severity *lvl* and below, so that
938 if you call it with a value of INFO, then all INFO and DEBUG events would be
939 discarded, whereas those of severity WARNING and above would be processed
940 according to the logger's effective level.
Georg Brandl116aa622007-08-15 14:28:22 +0000941
942
943.. function:: addLevelName(lvl, levelName)
944
945 Associates level *lvl* with text *levelName* in an internal dictionary, which is
946 used to map numeric levels to a textual representation, for example when a
947 :class:`Formatter` formats a message. This function can also be used to define
948 your own levels. The only constraints are that all levels used must be
949 registered using this function, levels should be positive integers and they
950 should increase in increasing order of severity.
951
Vinay Sajipc8c8c692010-09-17 10:09:04 +0000952 NOTE: If you are thinking of defining your own levels, please see the section
953 on :ref:`custom-levels`.
Georg Brandl116aa622007-08-15 14:28:22 +0000954
955.. function:: getLevelName(lvl)
956
957 Returns the textual representation of logging level *lvl*. If the level is one
958 of the predefined levels :const:`CRITICAL`, :const:`ERROR`, :const:`WARNING`,
959 :const:`INFO` or :const:`DEBUG` then you get the corresponding string. If you
960 have associated levels with names using :func:`addLevelName` then the name you
961 have associated with *lvl* is returned. If a numeric value corresponding to one
962 of the defined levels is passed in, the corresponding string representation is
Vinay Sajip9a6b4002010-12-14 19:40:21 +0000963 returned. Otherwise, the string 'Level %s' % lvl is returned.
Georg Brandl116aa622007-08-15 14:28:22 +0000964
965
966.. function:: makeLogRecord(attrdict)
967
968 Creates and returns a new :class:`LogRecord` instance whose attributes are
969 defined by *attrdict*. This function is useful for taking a pickled
970 :class:`LogRecord` attribute dictionary, sent over a socket, and reconstituting
971 it as a :class:`LogRecord` instance at the receiving end.
972
973
Georg Brandlcd7f32b2009-06-08 09:13:45 +0000974.. function:: basicConfig(**kwargs)
Georg Brandl116aa622007-08-15 14:28:22 +0000975
976 Does basic configuration for the logging system by creating a
977 :class:`StreamHandler` with a default :class:`Formatter` and adding it to the
Vinay Sajipcbabd7e2009-10-10 20:32:36 +0000978 root logger. The functions :func:`debug`, :func:`info`, :func:`warning`,
Georg Brandl116aa622007-08-15 14:28:22 +0000979 :func:`error` and :func:`critical` will call :func:`basicConfig` automatically
980 if no handlers are defined for the root logger.
981
Vinay Sajipcbabd7e2009-10-10 20:32:36 +0000982 This function does nothing if the root logger already has handlers
983 configured for it.
984
Vinay Sajipc8c8c692010-09-17 10:09:04 +0000985 PLEASE NOTE: This function should be called from the main thread
986 before other threads are started. In versions of Python prior to
987 2.7.1 and 3.2, if this function is called from multiple threads,
988 it is possible (in rare circumstances) that a handler will be added
989 to the root logger more than once, leading to unexpected results
990 such as messages being duplicated in the log.
991
Georg Brandl116aa622007-08-15 14:28:22 +0000992 The following keyword arguments are supported.
993
994 +--------------+---------------------------------------------+
995 | Format | Description |
996 +==============+=============================================+
997 | ``filename`` | Specifies that a FileHandler be created, |
998 | | using the specified filename, rather than a |
999 | | StreamHandler. |
1000 +--------------+---------------------------------------------+
1001 | ``filemode`` | Specifies the mode to open the file, if |
1002 | | filename is specified (if filemode is |
1003 | | unspecified, it defaults to 'a'). |
1004 +--------------+---------------------------------------------+
1005 | ``format`` | Use the specified format string for the |
1006 | | handler. |
1007 +--------------+---------------------------------------------+
1008 | ``datefmt`` | Use the specified date/time format. |
1009 +--------------+---------------------------------------------+
Vinay Sajipc5b27302010-10-31 14:59:16 +00001010 | ``style`` | If ``format`` is specified, use this style |
1011 | | for the format string. One of '%', '{' or |
1012 | | '$' for %-formatting, :meth:`str.format` or |
1013 | | :class:`string.Template` respectively, and |
1014 | | defaulting to '%' if not specified. |
1015 +--------------+---------------------------------------------+
Georg Brandl116aa622007-08-15 14:28:22 +00001016 | ``level`` | Set the root logger level to the specified |
1017 | | level. |
1018 +--------------+---------------------------------------------+
1019 | ``stream`` | Use the specified stream to initialize the |
1020 | | StreamHandler. Note that this argument is |
1021 | | incompatible with 'filename' - if both are |
Vinay Sajip4a0a31d2011-04-11 08:42:07 +01001022 | | present, a ``ValueError`` is raised. |
1023 +--------------+---------------------------------------------+
1024 | ``handlers`` | If specified, this should be an iterable of |
1025 | | already created handlers to add to the root |
1026 | | logger. Any handlers which don't already |
1027 | | have a formatter set will be assigned the |
1028 | | default formatter created in this function. |
1029 | | Note that this argument is incompatible |
1030 | | with 'filename' or 'stream' - if both are |
1031 | | present, a ``ValueError`` is raised. |
Georg Brandl116aa622007-08-15 14:28:22 +00001032 +--------------+---------------------------------------------+
1033
Vinay Sajipc5b27302010-10-31 14:59:16 +00001034 .. versionchanged:: 3.2
1035 The ``style`` argument was added.
1036
Vinay Sajip4a0a31d2011-04-11 08:42:07 +01001037 .. versionchanged:: 3.3
1038 The ``handlers`` argument was added. Additional checks were added to
1039 catch situations where incompatible arguments are specified (e.g.
1040 ``handlers`` together with ``stream`` or ``filename``, or ``stream``
1041 together with ``filename``).
1042
Vinay Sajipc5b27302010-10-31 14:59:16 +00001043
Georg Brandl116aa622007-08-15 14:28:22 +00001044.. function:: shutdown()
1045
1046 Informs the logging system to perform an orderly shutdown by flushing and
Christian Heimesb186d002008-03-18 15:15:01 +00001047 closing all handlers. This should be called at application exit and no
1048 further use of the logging system should be made after this call.
Georg Brandl116aa622007-08-15 14:28:22 +00001049
1050
1051.. function:: setLoggerClass(klass)
1052
1053 Tells the logging system to use the class *klass* when instantiating a logger.
1054 The class should define :meth:`__init__` such that only a name argument is
1055 required, and the :meth:`__init__` should call :meth:`Logger.__init__`. This
1056 function is typically called before any loggers are instantiated by applications
1057 which need to use custom logger behavior.
1058
Georg Brandl1eb40bc2010-12-03 15:30:09 +00001059
Vinay Sajip61561522010-12-03 11:50:38 +00001060.. function:: setLogRecordFactory(factory)
1061
1062 Set a callable which is used to create a :class:`LogRecord`.
1063
1064 :param factory: The factory callable to be used to instantiate a log record.
1065
1066 .. versionadded:: 3.2
Georg Brandl1eb40bc2010-12-03 15:30:09 +00001067 This function has been provided, along with :func:`getLogRecordFactory`, to
1068 allow developers more control over how the :class:`LogRecord` representing
1069 a logging event is constructed.
Vinay Sajip61561522010-12-03 11:50:38 +00001070
Georg Brandl1eb40bc2010-12-03 15:30:09 +00001071 The factory has the following signature:
Vinay Sajip61561522010-12-03 11:50:38 +00001072
Vinay Sajip9a6b4002010-12-14 19:40:21 +00001073 ``factory(name, level, fn, lno, msg, args, exc_info, func=None, sinfo=None, **kwargs)``
Vinay Sajip61561522010-12-03 11:50:38 +00001074
1075 :name: The logger name.
1076 :level: The logging level (numeric).
1077 :fn: The full pathname of the file where the logging call was made.
1078 :lno: The line number in the file where the logging call was made.
1079 :msg: The logging message.
1080 :args: The arguments for the logging message.
1081 :exc_info: An exception tuple, or None.
1082 :func: The name of the function or method which invoked the logging
1083 call.
1084 :sinfo: A stack traceback such as is provided by
1085 :func:`traceback.print_stack`, showing the call hierarchy.
1086 :kwargs: Additional keyword arguments.
Georg Brandl116aa622007-08-15 14:28:22 +00001087
Georg Brandl1eb40bc2010-12-03 15:30:09 +00001088
Benjamin Peterson9451a1c2010-03-13 22:30:34 +00001089Integration with the warnings module
1090------------------------------------
1091
1092The :func:`captureWarnings` function can be used to integrate :mod:`logging`
1093with the :mod:`warnings` module.
1094
1095.. function:: captureWarnings(capture)
1096
1097 This function is used to turn the capture of warnings by logging on and
1098 off.
1099
Senthil Kumaran46a48be2010-10-15 13:10:10 +00001100 If *capture* is ``True``, warnings issued by the :mod:`warnings` module will
1101 be redirected to the logging system. Specifically, a warning will be
Benjamin Peterson9451a1c2010-03-13 22:30:34 +00001102 formatted using :func:`warnings.formatwarning` and the resulting string
Éric Araujo661161e2011-10-22 19:29:48 +02001103 logged to a logger named ``'py.warnings'`` with a severity of ``'WARNING'``.
Benjamin Peterson9451a1c2010-03-13 22:30:34 +00001104
Senthil Kumaran46a48be2010-10-15 13:10:10 +00001105 If *capture* is ``False``, the redirection of warnings to the logging system
Benjamin Peterson9451a1c2010-03-13 22:30:34 +00001106 will stop, and warnings will be redirected to their original destinations
Éric Araujo661161e2011-10-22 19:29:48 +02001107 (i.e. those in effect before ``captureWarnings(True)`` was called).
Benjamin Peterson9451a1c2010-03-13 22:30:34 +00001108
1109
Vinay Sajipc63619b2010-12-19 12:56:57 +00001110.. seealso::
Vinay Sajip75043022010-12-19 06:02:31 +00001111
Vinay Sajipc63619b2010-12-19 12:56:57 +00001112 Module :mod:`logging.config`
1113 Configuration API for the logging module.
Georg Brandl116aa622007-08-15 14:28:22 +00001114
Vinay Sajipc63619b2010-12-19 12:56:57 +00001115 Module :mod:`logging.handlers`
1116 Useful handlers included with the logging module.
Georg Brandl116aa622007-08-15 14:28:22 +00001117
Vinay Sajipc63619b2010-12-19 12:56:57 +00001118 :pep:`282` - A Logging System
1119 The proposal which described this feature for inclusion in the Python standard
1120 library.
Georg Brandl116aa622007-08-15 14:28:22 +00001121
Vinay Sajipc63619b2010-12-19 12:56:57 +00001122 `Original Python logging package <http://www.red-dove.com/python_logging.html>`_
1123 This is the original source for the :mod:`logging` package. The version of the
1124 package available from this site is suitable for use with Python 1.5.2, 2.1.x
1125 and 2.2.x, which do not include the :mod:`logging` package in the standard
1126 library.
Christian Heimes8b0facf2007-12-04 19:30:01 +00001127