2018-07-04 09:06:45 +00:00
|
|
|
|
# Copyright (C) 2001-2018, Python Software Foundation
|
2018-07-04 09:08:42 +00:00
|
|
|
|
# For licence information, see README file.
|
2016-10-30 09:46:26 +00:00
|
|
|
|
#
|
|
|
|
|
msgid ""
|
|
|
|
|
msgstr ""
|
2019-12-05 22:15:54 +00:00
|
|
|
|
"Project-Id-Version: Python 3\n"
|
2016-10-30 09:46:26 +00:00
|
|
|
|
"Report-Msgid-Bugs-To: \n"
|
2023-07-23 12:39:39 +00:00
|
|
|
|
"POT-Creation-Date: 2023-07-23 14:38+0200\n"
|
2023-03-30 21:08:33 +00:00
|
|
|
|
"PO-Revision-Date: 2023-03-30 22:50+0200\n"
|
|
|
|
|
"Last-Translator: Mathieu Dupuy\n"
|
2018-07-04 09:14:25 +00:00
|
|
|
|
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
|
2017-05-23 22:40:56 +00:00
|
|
|
|
"Language: fr\n"
|
2016-10-30 09:46:26 +00:00
|
|
|
|
"MIME-Version: 1.0\n"
|
|
|
|
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
|
|
|
"Content-Transfer-Encoding: 8bit\n"
|
2023-03-30 21:08:33 +00:00
|
|
|
|
"X-Generator: Poedit 3.2.2\n"
|
2016-10-30 09:46:26 +00:00
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:2
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ":mod:`logging.config` --- Logging configuration"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:10
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "**Source code:** :source:`Lib/logging/config.py`"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:14
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"This page contains only reference information. For tutorials, please see"
|
|
|
|
|
msgstr ""
|
2021-06-04 15:59:49 +00:00
|
|
|
|
"Cette page contient uniquement des informations de référence. Pour des "
|
|
|
|
|
"tutoriels, veuillez consulter"
|
2016-10-30 09:46:26 +00:00
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:17
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ":ref:`Basic Tutorial <logging-basic-tutorial>`"
|
2020-06-08 14:31:39 +00:00
|
|
|
|
msgstr ":ref:`Tutoriel basique <logging-basic-tutorial>`"
|
2016-10-30 09:46:26 +00:00
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:18
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ":ref:`Advanced Tutorial <logging-advanced-tutorial>`"
|
2020-06-08 14:31:39 +00:00
|
|
|
|
msgstr ":ref:`Tutoriel avancé <logging-advanced-tutorial>`"
|
2016-10-30 09:46:26 +00:00
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:19
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ":ref:`Logging Cookbook <logging-cookbook>`"
|
2023-03-30 21:08:33 +00:00
|
|
|
|
msgstr ":ref:`Recettes pour la journalisation <logging-cookbook>`"
|
2016-10-30 09:46:26 +00:00
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:23
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "This section describes the API for configuring the logging module."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:28
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Configuration functions"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:30
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The following functions configure the logging module. They are located in "
|
|
|
|
|
"the :mod:`logging.config` module. Their use is optional --- you can "
|
|
|
|
|
"configure the logging module using these functions or by making calls to the "
|
|
|
|
|
"main API (defined in :mod:`logging` itself) and defining handlers which are "
|
|
|
|
|
"declared either in :mod:`logging` or :mod:`logging.handlers`."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:38
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Takes the logging configuration from a dictionary. The contents of this "
|
|
|
|
|
"dictionary are described in :ref:`logging-config-dictschema` below."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:42
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"If an error is encountered during configuration, this function will raise a :"
|
|
|
|
|
"exc:`ValueError`, :exc:`TypeError`, :exc:`AttributeError` or :exc:"
|
|
|
|
|
"`ImportError` with a suitably descriptive message. The following is a "
|
|
|
|
|
"(possibly incomplete) list of conditions which will raise an error:"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:48
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"A ``level`` which is not a string or which is a string not corresponding to "
|
|
|
|
|
"an actual logging level."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:50
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "A ``propagate`` value which is not a boolean."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:51
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "An id which does not have a corresponding destination."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:52
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "A non-existent handler id found during an incremental call."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:53
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "An invalid logger name."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:54
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Inability to resolve to an internal or external object."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:56
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Parsing is performed by the :class:`DictConfigurator` class, whose "
|
|
|
|
|
"constructor is passed the dictionary used for configuration, and has a :meth:"
|
|
|
|
|
"`configure` method. The :mod:`logging.config` module has a callable "
|
|
|
|
|
"attribute :attr:`dictConfigClass` which is initially set to :class:"
|
|
|
|
|
"`DictConfigurator`. You can replace the value of :attr:`dictConfigClass` "
|
|
|
|
|
"with a suitable implementation of your own."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:64
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
":func:`dictConfig` calls :attr:`dictConfigClass` passing the specified "
|
|
|
|
|
"dictionary, and then calls the :meth:`configure` method on the returned "
|
|
|
|
|
"object to put the configuration into effect::"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:71
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"For example, a subclass of :class:`DictConfigurator` could call "
|
|
|
|
|
"``DictConfigurator.__init__()`` in its own :meth:`__init__()`, then set up "
|
|
|
|
|
"custom prefixes which would be usable in the subsequent :meth:`configure` "
|
|
|
|
|
"call. :attr:`dictConfigClass` would be bound to this new subclass, and then :"
|
|
|
|
|
"func:`dictConfig` could be called exactly as in the default, uncustomized "
|
|
|
|
|
"state."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:82
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Reads the logging configuration from a :mod:`configparser`\\-format file. "
|
|
|
|
|
"The format of the file should be as described in :ref:`logging-config-"
|
|
|
|
|
"fileformat`. This function can be called several times from an application, "
|
|
|
|
|
"allowing an end user to select from various pre-canned configurations (if "
|
|
|
|
|
"the developer provides a mechanism to present the choices and load the "
|
|
|
|
|
"chosen configuration)."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:90
|
|
|
|
|
msgid ""
|
|
|
|
|
"It will raise :exc:`FileNotFoundError` if the file doesn't exist and :exc:"
|
|
|
|
|
"`RuntimeError` if the file is invalid or empty."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2020-07-20 08:45:25 +00:00
|
|
|
|
#: library/logging.config.rst:0
|
2017-12-01 06:48:13 +00:00
|
|
|
|
msgid "Parameters"
|
2023-03-30 21:08:33 +00:00
|
|
|
|
msgstr "Paramètres"
|
2017-12-01 06:48:13 +00:00
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:94
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"A filename, or a file-like object, or an instance derived from :class:"
|
|
|
|
|
"`~configparser.RawConfigParser`. If a ``RawConfigParser``-derived instance "
|
|
|
|
|
"is passed, it is used as is. Otherwise, a :class:`~configparser."
|
|
|
|
|
"Configparser` is instantiated, and the configuration read by it from the "
|
|
|
|
|
"object passed in ``fname``. If that has a :meth:`readline` method, it is "
|
|
|
|
|
"assumed to be a file-like object and read using :meth:`~configparser."
|
|
|
|
|
"ConfigParser.read_file`; otherwise, it is assumed to be a filename and "
|
|
|
|
|
"passed to :meth:`~configparser.ConfigParser.read`."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:106
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Defaults to be passed to the ConfigParser can be specified in this argument."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:109
|
2021-09-24 08:20:01 +00:00
|
|
|
|
msgid ""
|
2023-07-23 12:39:39 +00:00
|
|
|
|
"If specified as ``False``, loggers which exist when this call is made are "
|
|
|
|
|
"left enabled. The default is ``True`` because this enables old behaviour in "
|
|
|
|
|
"a backward-compatible way. This behaviour is to disable any existing non-"
|
|
|
|
|
"root loggers unless they or their ancestors are explicitly named in the "
|
|
|
|
|
"logging configuration."
|
2021-09-24 08:20:01 +00:00
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:118
|
2021-09-24 08:20:01 +00:00
|
|
|
|
msgid "The encoding used to open file when *fname* is filename."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:120
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
2021-09-24 08:20:01 +00:00
|
|
|
|
"An instance of a subclass of :class:`~configparser.RawConfigParser` is now "
|
2016-10-30 09:46:26 +00:00
|
|
|
|
"accepted as a value for ``fname``. This facilitates:"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:124
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Use of a configuration file where logging configuration is just part of the "
|
|
|
|
|
"overall application configuration."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:126
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Use of a configuration read from a file, and then modified by the using "
|
|
|
|
|
"application (e.g. based on command-line parameters or other aspects of the "
|
|
|
|
|
"runtime environment) before being passed to ``fileConfig``."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:130
|
2021-09-24 08:20:01 +00:00
|
|
|
|
msgid "The *encoding* parameter is added."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:133
|
|
|
|
|
msgid ""
|
|
|
|
|
"An exception will be thrown if the provided file doesn't exist or is invalid "
|
|
|
|
|
"or empty."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
|
|
#: library/logging.config.rst:139
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Starts up a socket server on the specified port, and listens for new "
|
|
|
|
|
"configurations. If no port is specified, the module's default :const:"
|
|
|
|
|
"`DEFAULT_LOGGING_CONFIG_PORT` is used. Logging configurations will be sent "
|
|
|
|
|
"as a file suitable for processing by :func:`dictConfig` or :func:"
|
|
|
|
|
"`fileConfig`. Returns a :class:`~threading.Thread` instance on which you can "
|
|
|
|
|
"call :meth:`~threading.Thread.start` to start the server, and which you can :"
|
|
|
|
|
"meth:`~threading.Thread.join` when appropriate. To stop the server, call :"
|
|
|
|
|
"func:`stopListening`."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:148
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The ``verify`` argument, if specified, should be a callable which should "
|
|
|
|
|
"verify whether bytes received across the socket are valid and should be "
|
|
|
|
|
"processed. This could be done by encrypting and/or signing what is sent "
|
|
|
|
|
"across the socket, such that the ``verify`` callable can perform signature "
|
|
|
|
|
"verification and/or decryption. The ``verify`` callable is called with a "
|
|
|
|
|
"single argument - the bytes received across the socket - and should return "
|
|
|
|
|
"the bytes to be processed, or ``None`` to indicate that the bytes should be "
|
|
|
|
|
"discarded. The returned bytes could be the same as the passed in bytes (e.g. "
|
|
|
|
|
"when only verification is done), or they could be completely different "
|
|
|
|
|
"(perhaps if decryption were performed)."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:159
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"To send a configuration to the socket, read in the configuration file and "
|
|
|
|
|
"send it to the socket as a sequence of bytes preceded by a four-byte length "
|
|
|
|
|
"string packed in binary using ``struct.pack('>L', n)``."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:167
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Because portions of the configuration are passed through :func:`eval`, use "
|
|
|
|
|
"of this function may open its users to a security risk. While the function "
|
|
|
|
|
"only binds to a socket on ``localhost``, and so does not accept connections "
|
|
|
|
|
"from remote machines, there are scenarios where untrusted code could be run "
|
|
|
|
|
"under the account of the process which calls :func:`listen`. Specifically, "
|
|
|
|
|
"if the process calling :func:`listen` runs on a multi-user machine where "
|
|
|
|
|
"users cannot trust each other, then a malicious user could arrange to run "
|
|
|
|
|
"essentially arbitrary code in a victim user's process, simply by connecting "
|
|
|
|
|
"to the victim's :func:`listen` socket and sending a configuration which runs "
|
|
|
|
|
"whatever code the attacker wants to have executed in the victim's process. "
|
|
|
|
|
"This is especially easy to do if the default port is used, but not hard even "
|
2021-09-24 08:20:01 +00:00
|
|
|
|
"if a different port is used. To avoid the risk of this happening, use the "
|
2016-10-30 09:46:26 +00:00
|
|
|
|
"``verify`` argument to :func:`listen` to prevent unrecognised configurations "
|
|
|
|
|
"from being applied."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:183
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "The ``verify`` argument was added."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:188
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"If you want to send configurations to the listener which don't disable "
|
|
|
|
|
"existing loggers, you will need to use a JSON format for the configuration, "
|
|
|
|
|
"which will use :func:`dictConfig` for configuration. This method allows you "
|
|
|
|
|
"to specify ``disable_existing_loggers`` as ``False`` in the configuration "
|
|
|
|
|
"you send."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:197
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Stops the listening server which was created with a call to :func:`listen`. "
|
|
|
|
|
"This is typically called before calling :meth:`join` on the return value "
|
|
|
|
|
"from :func:`listen`."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:203
|
2022-03-23 17:40:12 +00:00
|
|
|
|
msgid "Security considerations"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:205
|
2022-03-23 17:40:12 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The logging configuration functionality tries to offer convenience, and in "
|
|
|
|
|
"part this is done by offering the ability to convert text in configuration "
|
|
|
|
|
"files into Python objects used in logging configuration - for example, as "
|
|
|
|
|
"described in :ref:`logging-config-dict-userdef`. However, these same "
|
|
|
|
|
"mechanisms (importing callables from user-defined modules and calling them "
|
|
|
|
|
"with parameters from the configuration) could be used to invoke any code you "
|
|
|
|
|
"like, and for this reason you should treat configuration files from "
|
|
|
|
|
"untrusted sources with *extreme caution* and satisfy yourself that nothing "
|
|
|
|
|
"bad can happen if you load them, before actually loading them."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:219
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Configuration dictionary schema"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:221
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Describing a logging configuration requires listing the various objects to "
|
|
|
|
|
"create and the connections between them; for example, you may create a "
|
|
|
|
|
"handler named 'console' and then say that the logger named 'startup' will "
|
|
|
|
|
"send its messages to the 'console' handler. These objects aren't limited to "
|
|
|
|
|
"those provided by the :mod:`logging` module because you might write your own "
|
|
|
|
|
"formatter or handler class. The parameters to these classes may also need to "
|
|
|
|
|
"include external objects such as ``sys.stderr``. The syntax for describing "
|
|
|
|
|
"these objects and connections is defined in :ref:`logging-config-dict-"
|
|
|
|
|
"connections` below."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:233
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Dictionary Schema Details"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:235
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The dictionary passed to :func:`dictConfig` must contain the following keys:"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:238
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"*version* - to be set to an integer value representing the schema version. "
|
|
|
|
|
"The only valid value at present is 1, but having this key allows the schema "
|
|
|
|
|
"to evolve while still preserving backwards compatibility."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:243
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"All other keys are optional, but if present they will be interpreted as "
|
|
|
|
|
"described below. In all cases below where a 'configuring dict' is "
|
|
|
|
|
"mentioned, it will be checked for the special ``'()'`` key to see if a "
|
|
|
|
|
"custom instantiation is required. If so, the mechanism described in :ref:"
|
|
|
|
|
"`logging-config-dict-userdef` below is used to create an instance; "
|
|
|
|
|
"otherwise, the context is used to determine what to instantiate."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:252
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"*formatters* - the corresponding value will be a dict in which each key is a "
|
|
|
|
|
"formatter id and each value is a dict describing how to configure the "
|
|
|
|
|
"corresponding :class:`~logging.Formatter` instance."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:256
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
2021-09-24 08:20:01 +00:00
|
|
|
|
"The configuring dict is searched for the following optional keys which "
|
|
|
|
|
"correspond to the arguments passed to create a :class:`~logging.Formatter` "
|
|
|
|
|
"object:"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:260
|
2021-09-24 08:20:01 +00:00
|
|
|
|
msgid "``format``"
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:261
|
2021-09-24 08:20:01 +00:00
|
|
|
|
msgid "``datefmt``"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:262
|
2021-09-24 08:20:01 +00:00
|
|
|
|
msgid "``style``"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:263
|
2021-09-24 08:20:01 +00:00
|
|
|
|
msgid "``validate`` (since version >=3.8)"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:265
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
2021-09-24 08:20:01 +00:00
|
|
|
|
"An optional ``class`` key indicates the name of the formatter's class (as a "
|
|
|
|
|
"dotted module and class name). The instantiation arguments are as for :"
|
|
|
|
|
"class:`~logging.Formatter`, thus this key is most useful for instantiating a "
|
|
|
|
|
"customised subclass of :class:`~logging.Formatter`. For example, the "
|
|
|
|
|
"alternative class might present exception tracebacks in an expanded or "
|
|
|
|
|
"condensed format. If your formatter requires different or extra "
|
|
|
|
|
"configuration keys, you should use :ref:`logging-config-dict-userdef`."
|
2019-09-04 09:35:23 +00:00
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:274
|
2019-09-04 09:35:23 +00:00
|
|
|
|
msgid ""
|
2016-10-30 09:46:26 +00:00
|
|
|
|
"*filters* - the corresponding value will be a dict in which each key is a "
|
|
|
|
|
"filter id and each value is a dict describing how to configure the "
|
|
|
|
|
"corresponding Filter instance."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:278
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The configuring dict is searched for the key ``name`` (defaulting to the "
|
|
|
|
|
"empty string) and this is used to construct a :class:`logging.Filter` "
|
|
|
|
|
"instance."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:282
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"*handlers* - the corresponding value will be a dict in which each key is a "
|
|
|
|
|
"handler id and each value is a dict describing how to configure the "
|
|
|
|
|
"corresponding Handler instance."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:331
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "The configuring dict is searched for the following keys:"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:288
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"``class`` (mandatory). This is the fully qualified name of the handler "
|
|
|
|
|
"class."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:291
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "``level`` (optional). The level of the handler."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:293
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "``formatter`` (optional). The id of the formatter for this handler."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:296
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "``filters`` (optional). A list of ids of the filters for this handler."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:340
|
2022-03-23 17:40:12 +00:00
|
|
|
|
msgid "``filters`` can take filter instances in addition to ids."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:302
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"All *other* keys are passed through as keyword arguments to the handler's "
|
|
|
|
|
"constructor. For example, given the snippet:"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:321
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"the handler with id ``console`` is instantiated as a :class:`logging."
|
|
|
|
|
"StreamHandler`, using ``sys.stdout`` as the underlying stream. The handler "
|
|
|
|
|
"with id ``file`` is instantiated as a :class:`logging.handlers."
|
|
|
|
|
"RotatingFileHandler` with the keyword arguments ``filename='logconfig.log', "
|
|
|
|
|
"maxBytes=1024, backupCount=3``."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:327
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"*loggers* - the corresponding value will be a dict in which each key is a "
|
|
|
|
|
"logger name and each value is a dict describing how to configure the "
|
|
|
|
|
"corresponding Logger instance."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:333
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "``level`` (optional). The level of the logger."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:335
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "``propagate`` (optional). The propagation setting of the logger."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:337
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "``filters`` (optional). A list of ids of the filters for this logger."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:343
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"``handlers`` (optional). A list of ids of the handlers for this logger."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:346
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The specified loggers will be configured according to the level, "
|
|
|
|
|
"propagation, filters and handlers specified."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:349
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"*root* - this will be the configuration for the root logger. Processing of "
|
|
|
|
|
"the configuration will be as for any logger, except that the ``propagate`` "
|
|
|
|
|
"setting will not be applicable."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:353
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"*incremental* - whether the configuration is to be interpreted as "
|
|
|
|
|
"incremental to the existing configuration. This value defaults to "
|
|
|
|
|
"``False``, which means that the specified configuration replaces the "
|
|
|
|
|
"existing configuration with the same semantics as used by the existing :func:"
|
|
|
|
|
"`fileConfig` API."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:359
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"If the specified value is ``True``, the configuration is processed as "
|
|
|
|
|
"described in the section on :ref:`logging-config-dict-incremental`."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:362
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
2019-03-20 08:02:55 +00:00
|
|
|
|
"*disable_existing_loggers* - whether any existing non-root loggers are to be "
|
2016-10-30 09:46:26 +00:00
|
|
|
|
"disabled. This setting mirrors the parameter of the same name in :func:"
|
|
|
|
|
"`fileConfig`. If absent, this parameter defaults to ``True``. This value is "
|
|
|
|
|
"ignored if *incremental* is ``True``."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:370
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Incremental Configuration"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:372
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"It is difficult to provide complete flexibility for incremental "
|
|
|
|
|
"configuration. For example, because objects such as filters and formatters "
|
|
|
|
|
"are anonymous, once a configuration is set up, it is not possible to refer "
|
|
|
|
|
"to such anonymous objects when augmenting a configuration."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:378
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Furthermore, there is not a compelling case for arbitrarily altering the "
|
|
|
|
|
"object graph of loggers, handlers, filters, formatters at run-time, once a "
|
|
|
|
|
"configuration is set up; the verbosity of loggers and handlers can be "
|
|
|
|
|
"controlled just by setting levels (and, in the case of loggers, propagation "
|
|
|
|
|
"flags). Changing the object graph arbitrarily in a safe way is problematic "
|
|
|
|
|
"in a multi-threaded environment; while not impossible, the benefits are not "
|
|
|
|
|
"worth the complexity it adds to the implementation."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:387
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Thus, when the ``incremental`` key of a configuration dict is present and is "
|
|
|
|
|
"``True``, the system will completely ignore any ``formatters`` and "
|
|
|
|
|
"``filters`` entries, and process only the ``level`` settings in the "
|
|
|
|
|
"``handlers`` entries, and the ``level`` and ``propagate`` settings in the "
|
|
|
|
|
"``loggers`` and ``root`` entries."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:393
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Using a value in the configuration dict lets configurations to be sent over "
|
|
|
|
|
"the wire as pickled dicts to a socket listener. Thus, the logging verbosity "
|
|
|
|
|
"of a long-running application can be altered over time with no need to stop "
|
|
|
|
|
"and restart the application."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:401
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Object connections"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:403
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The schema describes a set of logging objects - loggers, handlers, "
|
|
|
|
|
"formatters, filters - which are connected to each other in an object graph. "
|
|
|
|
|
"Thus, the schema needs to represent connections between the objects. For "
|
|
|
|
|
"example, say that, once configured, a particular logger has attached to it a "
|
|
|
|
|
"particular handler. For the purposes of this discussion, we can say that "
|
|
|
|
|
"the logger represents the source, and the handler the destination, of a "
|
|
|
|
|
"connection between the two. Of course in the configured objects this is "
|
|
|
|
|
"represented by the logger holding a reference to the handler. In the "
|
|
|
|
|
"configuration dict, this is done by giving each destination object an id "
|
|
|
|
|
"which identifies it unambiguously, and then using the id in the source "
|
|
|
|
|
"object's configuration to indicate that a connection exists between the "
|
|
|
|
|
"source and the destination object with that id."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:417
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "So, for example, consider the following YAML snippet:"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:438
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"(Note: YAML used here because it's a little more readable than the "
|
|
|
|
|
"equivalent Python source form for the dictionary.)"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:441
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The ids for loggers are the logger names which would be used "
|
|
|
|
|
"programmatically to obtain a reference to those loggers, e.g. ``foo.bar."
|
|
|
|
|
"baz``. The ids for Formatters and Filters can be any string value (such as "
|
|
|
|
|
"``brief``, ``precise`` above) and they are transient, in that they are only "
|
|
|
|
|
"meaningful for processing the configuration dictionary and used to determine "
|
|
|
|
|
"connections between objects, and are not persisted anywhere when the "
|
|
|
|
|
"configuration call is complete."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:449
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The above snippet indicates that logger named ``foo.bar.baz`` should have "
|
|
|
|
|
"two handlers attached to it, which are described by the handler ids ``h1`` "
|
|
|
|
|
"and ``h2``. The formatter for ``h1`` is that described by id ``brief``, and "
|
|
|
|
|
"the formatter for ``h2`` is that described by id ``precise``."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:459
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "User-defined objects"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:461
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The schema supports user-defined objects for handlers, filters and "
|
|
|
|
|
"formatters. (Loggers do not need to have different types for different "
|
|
|
|
|
"instances, so there is no support in this configuration schema for user-"
|
|
|
|
|
"defined logger classes.)"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:466
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Objects to be configured are described by dictionaries which detail their "
|
|
|
|
|
"configuration. In some places, the logging system will be able to infer "
|
|
|
|
|
"from the context how an object is to be instantiated, but when a user-"
|
|
|
|
|
"defined object is to be instantiated, the system will not know how to do "
|
|
|
|
|
"this. In order to provide complete flexibility for user-defined object "
|
|
|
|
|
"instantiation, the user needs to provide a 'factory' - a callable which is "
|
|
|
|
|
"called with a configuration dictionary and which returns the instantiated "
|
|
|
|
|
"object. This is signalled by an absolute import path to the factory being "
|
|
|
|
|
"made available under the special key ``'()'``. Here's a concrete example:"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:492
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The above YAML snippet defines three formatters. The first, with id "
|
|
|
|
|
"``brief``, is a standard :class:`logging.Formatter` instance with the "
|
|
|
|
|
"specified format string. The second, with id ``default``, has a longer "
|
|
|
|
|
"format and also defines the time format explicitly, and will result in a :"
|
|
|
|
|
"class:`logging.Formatter` initialized with those two format strings. Shown "
|
|
|
|
|
"in Python source form, the ``brief`` and ``default`` formatters have "
|
|
|
|
|
"configuration sub-dictionaries::"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:504
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "and::"
|
2020-03-03 20:10:08 +00:00
|
|
|
|
msgstr "et ::"
|
2016-10-30 09:46:26 +00:00
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:511
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"respectively, and as these dictionaries do not contain the special key "
|
|
|
|
|
"``'()'``, the instantiation is inferred from the context: as a result, "
|
|
|
|
|
"standard :class:`logging.Formatter` instances are created. The "
|
|
|
|
|
"configuration sub-dictionary for the third formatter, with id ``custom``, "
|
|
|
|
|
"is::"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:524
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"and this contains the special key ``'()'``, which means that user-defined "
|
|
|
|
|
"instantiation is wanted. In this case, the specified factory callable will "
|
|
|
|
|
"be used. If it is an actual callable it will be used directly - otherwise, "
|
|
|
|
|
"if you specify a string (as in the example) the actual callable will be "
|
|
|
|
|
"located using normal import mechanisms. The callable will be called with the "
|
|
|
|
|
"**remaining** items in the configuration sub-dictionary as keyword "
|
|
|
|
|
"arguments. In the above example, the formatter with id ``custom`` will be "
|
|
|
|
|
"assumed to be returned by the call::"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:536
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
2023-02-12 15:17:38 +00:00
|
|
|
|
"The values for keys such as ``bar``, ``spam`` and ``answer`` in the above "
|
|
|
|
|
"example should not be configuration dictionaries or references such as "
|
|
|
|
|
"``cfg://foo`` or ``ext://bar``, because they will not be processed by the "
|
|
|
|
|
"configuration machinery, but passed to the callable as-is."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:541
|
2023-02-12 15:17:38 +00:00
|
|
|
|
msgid ""
|
2016-10-30 09:46:26 +00:00
|
|
|
|
"The key ``'()'`` has been used as the special key because it is not a valid "
|
|
|
|
|
"keyword parameter name, and so will not clash with the names of the keyword "
|
|
|
|
|
"arguments used in the call. The ``'()'`` also serves as a mnemonic that the "
|
|
|
|
|
"corresponding value is a callable."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:546
|
2022-03-23 17:40:12 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The ``filters`` member of ``handlers`` and ``loggers`` can take filter "
|
|
|
|
|
"instances in addition to ids."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:550
|
2023-01-15 21:42:07 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"You can also specify a special key ``'.'`` whose value is a dictionary is a "
|
|
|
|
|
"mapping of attribute names to values. If found, the specified attributes "
|
|
|
|
|
"will be set on the user-defined object before it is returned. Thus, with the "
|
|
|
|
|
"following configuration::"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:566
|
2023-01-15 21:42:07 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"the returned formatter will have attribute ``foo`` set to ``'bar'`` and "
|
|
|
|
|
"attribute ``baz`` set to ``'bozz'``."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:569
|
2023-02-12 15:17:38 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The values for attributes such as ``foo`` and ``baz`` in the above example "
|
|
|
|
|
"should not be configuration dictionaries or references such as ``cfg://foo`` "
|
|
|
|
|
"or ``ext://bar``, because they will not be processed by the configuration "
|
|
|
|
|
"machinery, but set as attribute values as-is."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:578
|
2023-02-12 15:17:38 +00:00
|
|
|
|
msgid "Handler configuration order"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:580
|
2023-02-12 15:17:38 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Handlers are configured in alphabetical order of their keys, and a "
|
|
|
|
|
"configured handler replaces the configuration dictionary in (a working copy "
|
|
|
|
|
"of) the ``handlers`` dictionary in the schema. If you use a construct such "
|
|
|
|
|
"as ``cfg://handlers.foo``, then initially ``handlers['foo']`` points to the "
|
|
|
|
|
"configuration dictionary for the handler named ``foo``, and later (once that "
|
|
|
|
|
"handler has been configured) it points to the configured handler instance. "
|
|
|
|
|
"Thus, ``cfg://handlers.foo`` could resolve to either a dictionary or a "
|
|
|
|
|
"handler instance. In general, it is wise to name handlers in a way such that "
|
|
|
|
|
"dependent handlers are configured _after_ any handlers they depend on; that "
|
|
|
|
|
"allows something like ``cfg://handlers.foo`` to be used in configuring a "
|
|
|
|
|
"handler that depends on handler ``foo``. If that dependent handler were "
|
|
|
|
|
"named ``bar``, problems would result, because the configuration of ``bar`` "
|
|
|
|
|
"would be attempted before that of ``foo``, and ``foo`` would not yet have "
|
|
|
|
|
"been configured. However, if the dependent handler were named ``foobar``, it "
|
|
|
|
|
"would be configured after ``foo``, with the result that ``cfg://handlers."
|
|
|
|
|
"foo`` would resolve to configured handler ``foo``, and not its configuration "
|
|
|
|
|
"dictionary."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:601
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Access to external objects"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:603
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"There are times where a configuration needs to refer to objects external to "
|
|
|
|
|
"the configuration, for example ``sys.stderr``. If the configuration dict is "
|
|
|
|
|
"constructed using Python code, this is straightforward, but a problem arises "
|
|
|
|
|
"when the configuration is provided via a text file (e.g. JSON, YAML). In a "
|
|
|
|
|
"text file, there is no standard way to distinguish ``sys.stderr`` from the "
|
|
|
|
|
"literal string ``'sys.stderr'``. To facilitate this distinction, the "
|
|
|
|
|
"configuration system looks for certain special prefixes in string values and "
|
|
|
|
|
"treat them specially. For example, if the literal string ``'ext://sys."
|
|
|
|
|
"stderr'`` is provided as a value in the configuration, then the ``ext://`` "
|
|
|
|
|
"will be stripped off and the remainder of the value processed using normal "
|
|
|
|
|
"import mechanisms."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:616
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The handling of such prefixes is done in a way analogous to protocol "
|
|
|
|
|
"handling: there is a generic mechanism to look for prefixes which match the "
|
|
|
|
|
"regular expression ``^(?P<prefix>[a-z]+)://(?P<suffix>.*)$`` whereby, if the "
|
|
|
|
|
"``prefix`` is recognised, the ``suffix`` is processed in a prefix-dependent "
|
|
|
|
|
"manner and the result of the processing replaces the string value. If the "
|
|
|
|
|
"prefix is not recognised, then the string value will be left as-is."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:628
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Access to internal objects"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:630
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"As well as external objects, there is sometimes also a need to refer to "
|
|
|
|
|
"objects in the configuration. This will be done implicitly by the "
|
|
|
|
|
"configuration system for things that it knows about. For example, the "
|
|
|
|
|
"string value ``'DEBUG'`` for a ``level`` in a logger or handler will "
|
|
|
|
|
"automatically be converted to the value ``logging.DEBUG``, and the "
|
|
|
|
|
"``handlers``, ``filters`` and ``formatter`` entries will take an object id "
|
|
|
|
|
"and resolve to the appropriate destination object."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:638
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"However, a more generic mechanism is needed for user-defined objects which "
|
|
|
|
|
"are not known to the :mod:`logging` module. For example, consider :class:"
|
|
|
|
|
"`logging.handlers.MemoryHandler`, which takes a ``target`` argument which is "
|
|
|
|
|
"another handler to delegate to. Since the system already knows about this "
|
|
|
|
|
"class, then in the configuration, the given ``target`` just needs to be the "
|
|
|
|
|
"object id of the relevant target handler, and the system will resolve to the "
|
|
|
|
|
"handler from the id. If, however, a user defines a ``my.package.MyHandler`` "
|
|
|
|
|
"which has an ``alternate`` handler, the configuration system would not know "
|
|
|
|
|
"that the ``alternate`` referred to a handler. To cater for this, a generic "
|
2018-04-28 22:28:01 +00:00
|
|
|
|
"resolution system allows the user to specify:"
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:660
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The literal string ``'cfg://handlers.file'`` will be resolved in an "
|
|
|
|
|
"analogous way to strings with the ``ext://`` prefix, but looking in the "
|
|
|
|
|
"configuration itself rather than the import namespace. The mechanism allows "
|
|
|
|
|
"access by dot or by index, in a similar way to that provided by ``str."
|
2018-04-28 22:28:01 +00:00
|
|
|
|
"format``. Thus, given the following snippet:"
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:678
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"in the configuration, the string ``'cfg://handlers'`` would resolve to the "
|
|
|
|
|
"dict with key ``handlers``, the string ``'cfg://handlers.email`` would "
|
|
|
|
|
"resolve to the dict with key ``email`` in the ``handlers`` dict, and so on. "
|
2021-09-24 08:20:01 +00:00
|
|
|
|
"The string ``'cfg://handlers.email.toaddrs[1]`` would resolve to "
|
|
|
|
|
"``'dev_team@domain.tld'`` and the string ``'cfg://handlers.email."
|
|
|
|
|
"toaddrs[0]'`` would resolve to the value ``'support_team@domain.tld'``. The "
|
|
|
|
|
"``subject`` value could be accessed using either ``'cfg://handlers.email."
|
|
|
|
|
"subject'`` or, equivalently, ``'cfg://handlers.email[subject]'``. The "
|
|
|
|
|
"latter form only needs to be used if the key contains spaces or non-"
|
|
|
|
|
"alphanumeric characters. If an index value consists only of decimal digits, "
|
|
|
|
|
"access will be attempted using the corresponding integer value, falling back "
|
|
|
|
|
"to the string value if needed."
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:692
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Given a string ``cfg://handlers.myhandler.mykey.123``, this will resolve to "
|
|
|
|
|
"``config_dict['handlers']['myhandler']['mykey']['123']``. If the string is "
|
|
|
|
|
"specified as ``cfg://handlers.myhandler.mykey[123]``, the system will "
|
|
|
|
|
"attempt to retrieve the value from ``config_dict['handlers']['myhandler']"
|
|
|
|
|
"['mykey'][123]``, and fall back to ``config_dict['handlers']['myhandler']"
|
|
|
|
|
"['mykey']['123']`` if that fails."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:704
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Import resolution and custom importers"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:706
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Import resolution, by default, uses the builtin :func:`__import__` function "
|
|
|
|
|
"to do its importing. You may want to replace this with your own importing "
|
|
|
|
|
"mechanism: if so, you can replace the :attr:`importer` attribute of the :"
|
|
|
|
|
"class:`DictConfigurator` or its superclass, the :class:`BaseConfigurator` "
|
|
|
|
|
"class. However, you need to be careful because of the way functions are "
|
|
|
|
|
"accessed from classes via descriptors. If you are using a Python callable to "
|
|
|
|
|
"do your imports, and you want to define it at class level rather than "
|
|
|
|
|
"instance level, you need to wrap it with :func:`staticmethod`. For example::"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:721
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"You don't need to wrap with :func:`staticmethod` if you're setting the "
|
|
|
|
|
"import callable on a configurator *instance*."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:728
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Configuration file format"
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:730
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The configuration file format understood by :func:`fileConfig` is based on :"
|
|
|
|
|
"mod:`configparser` functionality. The file must contain sections called "
|
|
|
|
|
"``[loggers]``, ``[handlers]`` and ``[formatters]`` which identify by name "
|
|
|
|
|
"the entities of each type which are defined in the file. For each such "
|
|
|
|
|
"entity, there is a separate section which identifies how that entity is "
|
|
|
|
|
"configured. Thus, for a logger named ``log01`` in the ``[loggers]`` "
|
|
|
|
|
"section, the relevant configuration details are held in a section "
|
|
|
|
|
"``[logger_log01]``. Similarly, a handler called ``hand01`` in the "
|
|
|
|
|
"``[handlers]`` section will have its configuration held in a section called "
|
|
|
|
|
"``[handler_hand01]``, while a formatter called ``form01`` in the "
|
|
|
|
|
"``[formatters]`` section will have its configuration specified in a section "
|
|
|
|
|
"called ``[formatter_form01]``. The root logger configuration must be "
|
|
|
|
|
"specified in a section called ``[logger_root]``."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:745
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The :func:`fileConfig` API is older than the :func:`dictConfig` API and does "
|
|
|
|
|
"not provide functionality to cover certain aspects of logging. For example, "
|
|
|
|
|
"you cannot configure :class:`~logging.Filter` objects, which provide for "
|
|
|
|
|
"filtering of messages beyond simple integer levels, using :func:"
|
|
|
|
|
"`fileConfig`. If you need to have instances of :class:`~logging.Filter` in "
|
|
|
|
|
"your logging configuration, you will need to use :func:`dictConfig`. Note "
|
|
|
|
|
"that future enhancements to configuration functionality will be added to :"
|
|
|
|
|
"func:`dictConfig`, so it's worth considering transitioning to this newer API "
|
|
|
|
|
"when it's convenient to do so."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:755
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Examples of these sections in the file are given below."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:768
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The root logger must specify a level and a list of handlers. An example of a "
|
|
|
|
|
"root logger section is given below."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:777
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The ``level`` entry can be one of ``DEBUG, INFO, WARNING, ERROR, CRITICAL`` "
|
|
|
|
|
"or ``NOTSET``. For the root logger only, ``NOTSET`` means that all messages "
|
2022-05-22 21:15:02 +00:00
|
|
|
|
"will be logged. Level values are :ref:`evaluated <func-eval>` in the context "
|
|
|
|
|
"of the ``logging`` package's namespace."
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:782
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The ``handlers`` entry is a comma-separated list of handler names, which "
|
|
|
|
|
"must appear in the ``[handlers]`` section. These names must appear in the "
|
|
|
|
|
"``[handlers]`` section and have corresponding sections in the configuration "
|
|
|
|
|
"file."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:787
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"For loggers other than the root logger, some additional information is "
|
|
|
|
|
"required. This is illustrated by the following example."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:798
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The ``level`` and ``handlers`` entries are interpreted as for the root "
|
|
|
|
|
"logger, except that if a non-root logger's level is specified as ``NOTSET``, "
|
|
|
|
|
"the system consults loggers higher up the hierarchy to determine the "
|
|
|
|
|
"effective level of the logger. The ``propagate`` entry is set to 1 to "
|
|
|
|
|
"indicate that messages must propagate to handlers higher up the logger "
|
|
|
|
|
"hierarchy from this logger, or 0 to indicate that messages are **not** "
|
|
|
|
|
"propagated to handlers up the hierarchy. The ``qualname`` entry is the "
|
|
|
|
|
"hierarchical channel name of the logger, that is to say the name used by the "
|
|
|
|
|
"application to get the logger."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:807
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Sections which specify handler configuration are exemplified by the "
|
|
|
|
|
"following."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:817
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The ``class`` entry indicates the handler's class (as determined by :func:"
|
|
|
|
|
"`eval` in the ``logging`` package's namespace). The ``level`` is interpreted "
|
|
|
|
|
"as for loggers, and ``NOTSET`` is taken to mean 'log everything'."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:821
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"The ``formatter`` entry indicates the key name of the formatter for this "
|
|
|
|
|
"handler. If blank, a default formatter (``logging._defaultFormatter``) is "
|
|
|
|
|
"used. If a name is specified, it must appear in the ``[formatters]`` section "
|
|
|
|
|
"and have a corresponding section in the configuration file."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:826
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
2022-05-22 21:15:02 +00:00
|
|
|
|
"The ``args`` entry, when :ref:`evaluated <func-eval>` in the context of the "
|
2016-10-30 09:46:26 +00:00
|
|
|
|
"``logging`` package's namespace, is the list of arguments to the constructor "
|
|
|
|
|
"for the handler class. Refer to the constructors for the relevant handlers, "
|
2018-06-28 13:32:56 +00:00
|
|
|
|
"or to the examples below, to see how typical entries are constructed. If not "
|
|
|
|
|
"provided, it defaults to ``()``."
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:832
|
2018-06-28 13:32:56 +00:00
|
|
|
|
msgid ""
|
2022-05-22 21:15:02 +00:00
|
|
|
|
"The optional ``kwargs`` entry, when :ref:`evaluated <func-eval>` in the "
|
|
|
|
|
"context of the ``logging`` package's namespace, is the keyword argument dict "
|
|
|
|
|
"to the constructor for the handler class. If not provided, it defaults to "
|
|
|
|
|
"``{}``."
|
2018-06-28 13:32:56 +00:00
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:889
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Sections which specify formatter configuration are typified by the following."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:900
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
2021-09-24 08:20:01 +00:00
|
|
|
|
"The arguments for the formatter configuration are the same as the keys in "
|
|
|
|
|
"the dictionary schema :ref:`formatters section <logging-config-dictschema-"
|
|
|
|
|
"formatters>`."
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:906
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid ""
|
|
|
|
|
"Due to the use of :func:`eval` as described above, there are potential "
|
|
|
|
|
"security risks which result from using the :func:`listen` to send and "
|
|
|
|
|
"receive configurations via sockets. The risks are limited to where multiple "
|
|
|
|
|
"users with no mutual trust run code on the same machine; see the :func:"
|
|
|
|
|
"`listen` documentation for more information."
|
|
|
|
|
msgstr ""
|
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:915
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Module :mod:`logging`"
|
2019-05-28 12:44:15 +00:00
|
|
|
|
msgstr "Module :mod:`logging`"
|
2016-10-30 09:46:26 +00:00
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:915
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "API reference for the logging module."
|
2019-05-28 12:44:15 +00:00
|
|
|
|
msgstr "Référence d'API pour le module de journalisation."
|
2016-10-30 09:46:26 +00:00
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:917
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Module :mod:`logging.handlers`"
|
2019-05-28 12:44:15 +00:00
|
|
|
|
msgstr "Module :mod:`logging.handlers`"
|
2016-10-30 09:46:26 +00:00
|
|
|
|
|
2023-07-23 12:39:39 +00:00
|
|
|
|
#: library/logging.config.rst:918
|
2016-10-30 09:46:26 +00:00
|
|
|
|
msgid "Useful handlers included with the logging module."
|
2019-05-28 12:44:15 +00:00
|
|
|
|
msgstr "Gestionnaires utiles inclus avec le module de journalisation."
|