# Copyright (C) 2001-2018, Python Software Foundation # For licence information, see README file. msgid "" msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-15 22:33+0100\n" "PO-Revision-Date: 2023-03-24 12:32+0100\n" "Last-Translator: Mathieu Dupuy\n" "Language-Team: FRENCH \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.2.2\n" #: howto/logging.rst:3 msgid "Logging HOWTO" msgstr "Tutoriel sur la journalisation" #: howto/logging.rst:0 msgid "Author" msgstr "Auteur" #: howto/logging.rst:5 msgid "Vinay Sajip " msgstr "Vinay Sajip " #: howto/logging.rst:12 msgid "Basic Logging Tutorial" msgstr "Les bases de l'utilisation du module ``logging``" #: howto/logging.rst:14 msgid "" "Logging is a means of tracking events that happen when some software runs. " "The software's developer adds logging calls to their code to indicate that " "certain events have occurred. An event is described by a descriptive message " "which can optionally contain variable data (i.e. data that is potentially " "different for each occurrence of the event). Events also have an importance " "which the developer ascribes to the event; the importance can also be called " "the *level* or *severity*." msgstr "" "La journalisation (*logging* en anglais) est une façon de suivre les " "événements qui ont lieu durant le fonctionnement d'un logiciel. Le " "développeur du logiciel ajoute des appels à l'outil de journalisation dans " "son code pour indiquer que certains événements ont eu lieu. Un événement est " "décrit par un message descriptif, qui peut éventuellement contenir des " "données variables (c'est-à-dire qui peuvent être différentes pour chaque " "occurrence de l'événement). Un événement a aussi une importance que le " "développeur lui attribue ; cette importance peut aussi être appelée *niveau* " "ou *sévérité*." #: howto/logging.rst:23 msgid "When to use logging" msgstr "Quand utiliser ``logging``" #: howto/logging.rst:25 msgid "" "Logging provides a set of convenience functions for simple logging usage. " "These are :func:`debug`, :func:`info`, :func:`warning`, :func:`error` and :" "func:`critical`. To determine when to use logging, see the table below, " "which states, for each of a set of common tasks, the best tool to use for it." msgstr "" "Le module *logging* fournit un ensemble de fonctions de commodités pour une " "utilisation simple du module. Ce sont les fonctions :func:`debug`, :func:" "`info`, :func:`warning`, :func:`error` et :func:`critical`. Pour déterminer " "quand employer la journalisation, voyez la table ci-dessous, qui vous " "indique, pour chaque tâche parmi les plus communes, l'outil approprié." #: howto/logging.rst:31 msgid "Task you want to perform" msgstr "Tâche que vous souhaitez mener" #: howto/logging.rst:31 msgid "The best tool for the task" msgstr "Le meilleur outil pour cette tâche" #: howto/logging.rst:33 msgid "" "Display console output for ordinary usage of a command line script or program" msgstr "" "Affiche la sortie console d'un script en ligne de commande ou d'un programme " "lors de son utilisation ordinaire" #: howto/logging.rst:33 msgid ":func:`print`" msgstr ":func:`print`" #: howto/logging.rst:37 msgid "" "Report events that occur during normal operation of a program (e.g. for " "status monitoring or fault investigation)" msgstr "" "Rapporter des évènements qui ont lieu au cours du fonctionnement normal d'un " "programme (par exemple pour suivre un statut ou examiner des " "dysfonctionnements)" #: howto/logging.rst:37 msgid "" ":func:`logging.info` (or :func:`logging.debug` for very detailed output for " "diagnostic purposes)" msgstr "" ":func:`logging.info` (ou :func:`logging.debug` pour une sortie très " "détaillée à visée diagnostique)" #: howto/logging.rst:42 msgid "Issue a warning regarding a particular runtime event" msgstr "" "Émettre un avertissement (*warning* en anglais) en relation avec un " "évènement particulier au cours du fonctionnement d’un programme" #: howto/logging.rst:42 msgid "" ":func:`warnings.warn` in library code if the issue is avoidable and the " "client application should be modified to eliminate the warning" msgstr "" ":func:`warnings.warn` dans le code de la bibliothèque si le problème est " "évitable et l'application cliente doit être modifiée pour éliminer cet " "avertissement" #: howto/logging.rst:47 msgid "" ":func:`logging.warning` if there is nothing the client application can do " "about the situation, but the event should still be noted" msgstr "" ":func:`logging.warning` si l'application cliente ne peut rien faire pour " "corriger la situation mais l'évènement devrait quand même être noté" #: howto/logging.rst:52 msgid "Report an error regarding a particular runtime event" msgstr "" "Rapporter une erreur lors d'un évènement particulier en cours d'exécution" #: howto/logging.rst:52 msgid "Raise an exception" msgstr "Lever une exception" #: howto/logging.rst:55 msgid "" "Report suppression of an error without raising an exception (e.g. error " "handler in a long-running server process)" msgstr "" "Rapporter la suppression d'une erreur sans lever d'exception (par exemple " "pour la gestion d'erreur d'un processus de long terme sur un serveur)" #: howto/logging.rst:55 msgid "" ":func:`logging.error`, :func:`logging.exception` or :func:`logging.critical` " "as appropriate for the specific error and application domain" msgstr "" ":func:`logging.error`, :func:`logging.exception` ou :func:`logging." "critical`, au mieux, selon l'erreur spécifique et le domaine d'application" #: howto/logging.rst:62 msgid "" "The logging functions are named after the level or severity of the events " "they are used to track. The standard levels and their applicability are " "described below (in increasing order of severity):" msgstr "" "Les fonctions de journalisation sont nommées d'après le niveau ou la " "sévérité des évènements qu'elles suivent. Les niveaux standards et leurs " "applications sont décrits ci-dessous (par ordre croissant de sévérité) :" #: howto/logging.rst:862 msgid "Level" msgstr "Niveau" #: howto/logging.rst:69 msgid "When it's used" msgstr "Quand il est utilisé" #: howto/logging.rst:872 msgid "``DEBUG``" msgstr "``DEBUG``" #: howto/logging.rst:71 msgid "" "Detailed information, typically of interest only when diagnosing problems." msgstr "" "Information détaillée, intéressante seulement lorsqu'on diagnostique un " "problème." #: howto/logging.rst:870 msgid "``INFO``" msgstr "``INFO``" #: howto/logging.rst:74 msgid "Confirmation that things are working as expected." msgstr "Confirmation que tout fonctionne comme prévu." #: howto/logging.rst:868 msgid "``WARNING``" msgstr "``WARNING``" #: howto/logging.rst:77 msgid "" "An indication that something unexpected happened, or indicative of some " "problem in the near future (e.g. 'disk space low'). The software is still " "working as expected." msgstr "" "L'indication que quelque chose d'inattendu a eu lieu, ou de la possibilité " "d'un problème dans un futur proche (par exemple « espace disque faible »). " "Le logiciel fonctionne encore normalement." #: howto/logging.rst:866 msgid "``ERROR``" msgstr "``ERROR``" #: howto/logging.rst:82 msgid "" "Due to a more serious problem, the software has not been able to perform " "some function." msgstr "" "Du fait d'un problème plus sérieux, le logiciel n'a pas été capable de " "réaliser une tâche." #: howto/logging.rst:864 msgid "``CRITICAL``" msgstr "``CRITICAL``" #: howto/logging.rst:85 msgid "" "A serious error, indicating that the program itself may be unable to " "continue running." msgstr "" "Une erreur sérieuse, indiquant que le programme lui-même pourrait être " "incapable de continuer à fonctionner." #: howto/logging.rst:89 msgid "" "The default level is ``WARNING``, which means that only events of this level " "and above will be tracked, unless the logging package is configured to do " "otherwise." msgstr "" "Le niveau par défaut est ``WARNING``, ce qui signifie que seuls les " "évènements de ce niveau et au-dessus sont suivis, sauf si le paquet " "*logging* est configuré pour faire autrement." #: howto/logging.rst:93 msgid "" "Events that are tracked can be handled in different ways. The simplest way " "of handling tracked events is to print them to the console. Another common " "way is to write them to a disk file." msgstr "" "Les évènements suivis peuvent être gérés de différentes façons. La manière " "la plus simple est de les afficher dans la console. Une autre méthode " "commune est de les écrire dans un fichier." #: howto/logging.rst:101 msgid "A simple example" msgstr "Un exemple simple" #: howto/logging.rst:103 msgid "A very simple example is::" msgstr "Un exemple très simple est ::" #: howto/logging.rst:109 msgid "If you type these lines into a script and run it, you'll see:" msgstr "" "Si vous entrez ces lignes dans un script que vous exécutez, vous verrez :" #: howto/logging.rst:115 msgid "" "printed out on the console. The ``INFO`` message doesn't appear because the " "default level is ``WARNING``. The printed message includes the indication of " "the level and the description of the event provided in the logging call, i." "e. 'Watch out!'. Don't worry about the 'root' part for now: it will be " "explained later. The actual output can be formatted quite flexibly if you " "need that; formatting options will also be explained later." msgstr "" "affiché dans la console. Le message ``INFO`` n'apparaît pas parce que le " "niveau par défaut est ``WARNING``. Le message affiché inclut l'indication du " "niveau et la description de l'évènement fournie dans l'appel à *logging*, " "ici « Watch out! ». Ne vous préoccupez pas de la partie « *root* » pour le " "moment : nous détaillerons ce point plus bas. La sortie elle-même peut être " "formatée de multiples manières si besoin. Les options de formatage seront " "aussi expliquées plus bas." #: howto/logging.rst:124 msgid "Logging to a file" msgstr "Enregistrer les évènements dans un fichier" #: howto/logging.rst:126 msgid "" "A very common situation is that of recording logging events in a file, so " "let's look at that next. Be sure to try the following in a newly started " "Python interpreter, and don't just continue from the session described " "above::" msgstr "" "Il est très commun d'enregistrer les évènements dans un fichier, c'est donc " "ce que nous allons regarder maintenant. Il faut essayer ce qui suit avec un " "interpréteur Python nouvellement démarré, ne poursuivez pas la session " "commencée ci-dessus ::" #: howto/logging.rst:137 msgid "" "The *encoding* argument was added. In earlier Python versions, or if not " "specified, the encoding used is the default value used by :func:`open`. " "While not shown in the above example, an *errors* argument can also now be " "passed, which determines how encoding errors are handled. For available " "values and the default, see the documentation for :func:`open`." msgstr "" "L'argument *encoding* a été rajouté. Dans les versions précédentes de " "Python, ou si non spécifié, l'encodage utilisé est la valeur par défaut " "utilisée par :func:`open`. Bien que non montré dans l'exemple ci-dessus, un " "argument **errors** peut aussi être passé, qui détermine comment les erreurs " "d'encodage sont gérées. Pour voir les valeurs disponibles et par défaut, " "consultez la documentation de :func:`open`." #: howto/logging.rst:144 msgid "" "And now if we open the file and look at what we have, we should find the log " "messages:" msgstr "" "Maintenant, si nous ouvrons le fichier et lisons ce qui s'y trouve, nous " "trouvons les messages de journalisation :" #: howto/logging.rst:154 msgid "" "This example also shows how you can set the logging level which acts as the " "threshold for tracking. In this case, because we set the threshold to " "``DEBUG``, all of the messages were printed." msgstr "" "Cet exemple montre aussi comment on peut régler le niveau de journalisation " "qui sert de seuil pour le suivi. Dans ce cas, comme nous avons réglé le " "seuil à ``DEBUG``, tous les messages ont été écrits." #: howto/logging.rst:158 msgid "" "If you want to set the logging level from a command-line option such as:" msgstr "" "Si vous souhaitez régler le niveau de journalisation à partir d'une option " "de la ligne de commande comme :" #: howto/logging.rst:164 msgid "" "and you have the value of the parameter passed for ``--log`` in some " "variable *loglevel*, you can use::" msgstr "" "et que vous passez ensuite la valeur du paramètre donné à l'option ``--log`` " "dans une variable *loglevel*, vous pouvez utiliser ::" #: howto/logging.rst:169 msgid "" "to get the value which you'll pass to :func:`basicConfig` via the *level* " "argument. You may want to error check any user input value, perhaps as in " "the following example::" msgstr "" "de manière à obtenir la valeur à passer à :func:`basicConfig` à travers " "l'argument *level*. Vous pouvez vérifier que l'utilisateur n'a fait aucune " "erreur pour la valeur de ce paramètre, comme dans l'exemple ci-dessous ::" #: howto/logging.rst:181 msgid "" "The call to :func:`basicConfig` should come *before* any calls to :func:" "`debug`, :func:`info`, etc. Otherwise, those functions will call :func:" "`basicConfig` for you with the default options. As it's intended as a one-" "off simple configuration facility, only the first call will actually do " "anything: subsequent calls are effectively no-ops." msgstr "" "L'appel à :func:`basicConfig` doit être fait *avant* tout appel à :func:" "`debug`, :func:`info`, etc. Sinon, ces fonctions appelleront :func:" "`basicConfig` pour vous avec les options par défaut. Comme il s'agit d'un " "outil de configuration simple et unique, seul le premier appel fera quelque " "chose : les appels suivants ne feront rien." #: howto/logging.rst:187 msgid "" "If you run the above script several times, the messages from successive runs " "are appended to the file *example.log*. If you want each run to start " "afresh, not remembering the messages from earlier runs, you can specify the " "*filemode* argument, by changing the call in the above example to::" msgstr "" "Si vous exécutez le script plusieurs fois, les messages des exécutions " "successives sont ajoutés au fichier *example.log*. Si vous voulez que chaque " "exécution reprenne un fichier vierge, sans conserver les messages des " "exécutions précédentes, vous pouvez spécifier l'argument *filemode*, en " "changeant l'appel à l'exemple précédent par ::" #: howto/logging.rst:194 msgid "" "The output will be the same as before, but the log file is no longer " "appended to, so the messages from earlier runs are lost." msgstr "" "La sortie est identique à la précédente, mais le texte n'est plus ajouté au " "fichier de log, donc les messages des exécutions précédentes sont perdus." #: howto/logging.rst:199 msgid "Logging from multiple modules" msgstr "Employer *logging* à partir de différents modules" #: howto/logging.rst:201 msgid "" "If your program consists of multiple modules, here's an example of how you " "could organize logging in it::" msgstr "" "Si votre programme est composé de plusieurs modules, voici une façon " "d'organiser l'outil de journalisation ::" #: howto/logging.rst:225 msgid "If you run *myapp.py*, you should see this in *myapp.log*:" msgstr "Si vous exécutez *myapp.py*, vous verrez ceci dans *myapp.log* :" #: howto/logging.rst:233 msgid "" "which is hopefully what you were expecting to see. You can generalize this " "to multiple modules, using the pattern in *mylib.py*. Note that for this " "simple usage pattern, you won't know, by looking in the log file, *where* in " "your application your messages came from, apart from looking at the event " "description. If you want to track the location of your messages, you'll need " "to refer to the documentation beyond the tutorial level -- see :ref:`logging-" "advanced-tutorial`." msgstr "" "ce qui est normalement ce à quoi vous vous attendiez. Vous pouvez " "généraliser cela à plusieurs modules, en employant le motif de *mylib.py*. " "Remarquez qu'avec cette méthode simple, vous ne pourrez pas savoir, en " "lisant le fichier de log, *d'où* viennent les messages dans votre " "application, sauf dans la description de l'évènement. Si vous voulez suivre " "la localisation des messages, référez-vous à la documentation avancée :ref:" "`logging-advanced-tutorial`." #: howto/logging.rst:243 msgid "Logging variable data" msgstr "Journalisation de données variables" #: howto/logging.rst:245 msgid "" "To log variable data, use a format string for the event description message " "and append the variable data as arguments. For example::" msgstr "" "Pour enregistrer des données variables, utilisez une chaîne formatée dans le " "message de description de l'évènement et ajoutez les données variables comme " "argument. Par exemple ::" #: howto/logging.rst:251 msgid "will display:" msgstr "affiche :" #: howto/logging.rst:257 msgid "" "As you can see, merging of variable data into the event description message " "uses the old, %-style of string formatting. This is for backwards " "compatibility: the logging package pre-dates newer formatting options such " "as :meth:`str.format` and :class:`string.Template`. These newer formatting " "options *are* supported, but exploring them is outside the scope of this " "tutorial: see :ref:`formatting-styles` for more information." msgstr "" "Comme vous pouvez le voir, l'inclusion des données variables dans le message " "de description de l'évènement emploie le vieux style de formatage avec %. " "C'est pour assurer la rétrocompatibilité : le module ``logging`` est " "antérieur aux nouvelles options de formatage comme :meth:`str.format` ou :" "class:`string.Template`. Ces nouvelles options de formatage *sont* gérées, " "mais leur exploration sort du cadre de ce tutoriel, voyez :ref:`formatting-" "styles` pour plus d'information." #: howto/logging.rst:266 msgid "Changing the format of displayed messages" msgstr "Modifier le format du message affiché" #: howto/logging.rst:268 msgid "" "To change the format which is used to display messages, you need to specify " "the format you want to use::" msgstr "" "Pour changer le format utilisé pour afficher le message, vous devez préciser " "le format que vous souhaitez employer ::" #: howto/logging.rst:277 msgid "which would print:" msgstr "ce qui affiche :" #: howto/logging.rst:285 msgid "" "Notice that the 'root' which appeared in earlier examples has disappeared. " "For a full set of things that can appear in format strings, you can refer to " "the documentation for :ref:`logrecord-attributes`, but for simple usage, you " "just need the *levelname* (severity), *message* (event description, " "including variable data) and perhaps to display when the event occurred. " "This is described in the next section." msgstr "" "Notez que le ``root`` qui apparaissait dans les exemples précédents a " "disparu. Pour voir l'ensemble des éléments qui peuvent apparaître dans la " "chaîne de format, référez-vous à la documentation pour :ref:`logrecord-" "attributes`. Pour une utilisation simple, vous avez seulement besoin du " "*levelname* (la sévérité), du *message* (la description de l'évènement, avec " "les données variables) et peut-être du moment auquel l'évènement a eu lieu. " "Nous décrivons ces points dans la prochaine section." #: howto/logging.rst:294 msgid "Displaying the date/time in messages" msgstr "Afficher l'horodatage dans les messages" #: howto/logging.rst:296 msgid "" "To display the date and time of an event, you would place '%(asctime)s' in " "your format string::" msgstr "" "Pour afficher la date ou le temps d'un évènement, ajoutez ``'%(asctime)'`` " "dans votre chaîne de formatage ::" #: howto/logging.rst:303 msgid "which should print something like this:" msgstr "ce qui affichera quelque chose comme :" #: howto/logging.rst:309 msgid "" "The default format for date/time display (shown above) is like ISO8601 or :" "rfc:`3339`. If you need more control over the formatting of the date/time, " "provide a *datefmt* argument to ``basicConfig``, as in this example::" msgstr "" "Le format par défaut de l'horodatage (comme ci-dessus) est donné par la " "norme ISO8601 ou :rfc:`3339`. Pour plus de contrôle sur le formatage de " "l'horodatage, vous pouvez fournir à ``basicConfig`` un argument *datefmt*, " "comme dans l'exemple suivant ::" #: howto/logging.rst:317 msgid "which would display something like this:" msgstr "ce qui affichera quelque chose comme :" #: howto/logging.rst:323 msgid "" "The format of the *datefmt* argument is the same as supported by :func:`time." "strftime`." msgstr "Le format de *datefmt* est le même que celui de :func:`time.strftime`." #: howto/logging.rst:328 msgid "Next Steps" msgstr "Étapes suivantes" #: howto/logging.rst:330 msgid "" "That concludes the basic tutorial. It should be enough to get you up and " "running with logging. There's a lot more that the logging package offers, " "but to get the best out of it, you'll need to invest a little more of your " "time in reading the following sections. If you're ready for that, grab some " "of your favourite beverage and carry on." msgstr "" "Nous concluons ainsi le tutoriel basique. Il devrait suffire à vous mettre " "le pied à l'étrier pour utiliser ``logging``. Le module ``logging`` a " "beaucoup d'autre cordes à son arc, mais pour en profiter au maximum, vous " "devez prendre le temps de lire les sections suivantes. Si vous êtes prêt, " "servez-vous votre boisson préférée et poursuivons." #: howto/logging.rst:336 msgid "" "If your logging needs are simple, then use the above examples to incorporate " "logging into your own scripts, and if you run into problems or don't " "understand something, please post a question on the comp.lang.python Usenet " "group (available at https://groups.google.com/forum/#!forum/comp.lang." "python) and you should receive help before too long." msgstr "" "Si vos besoins avec ``logging`` sont simples, vous pouvez incorporer les " "exemples ci-dessus dans vos scripts. Si vous rencontrez des difficultés ou " "s'il y a quelque chose que vous ne comprenez pas, vous pouvez poser une " "question sur le groupe Usenet ``comp.lang.python`` (accessible à https://" "groups.google.com/forum/#!forum/comp.lang.python), on vous répondra " "rapidement." #: howto/logging.rst:342 msgid "" "Still here? You can carry on reading the next few sections, which provide a " "slightly more advanced/in-depth tutorial than the basic one above. After " "that, you can take a look at the :ref:`logging-cookbook`." msgstr "" "Vous êtes encore là ? Vous pouvez lire les prochaines sections, qui donnent " "un peu plus de détails que l'introduction ci-dessus. Après ça, vous pouvez " "jeter un œil à :ref:`logging-cookbook`." #: howto/logging.rst:350 msgid "Advanced Logging Tutorial" msgstr "Usage avancé de Logging" #: howto/logging.rst:352 msgid "" "The logging library takes a modular approach and offers several categories " "of components: loggers, handlers, filters, and formatters." msgstr "" "La bibliothèque de journalisation adopte une approche modulaire et offre " "différentes catégories de composants : *loggers*, *handlers*, *filters* et " "*formatters*." #: howto/logging.rst:355 msgid "Loggers expose the interface that application code directly uses." msgstr "" "Les enregistreurs (*loggers* en anglais) exposent l'interface que le code de " "l'application utilise directement." #: howto/logging.rst:356 msgid "" "Handlers send the log records (created by loggers) to the appropriate " "destination." msgstr "" "Les gestionnaires (*handlers*) envoient les entrées de journal (créés par " "les *loggers*) vers les destinations voulues." #: howto/logging.rst:358 msgid "" "Filters provide a finer grained facility for determining which log records " "to output." msgstr "" "Les filtres (*filters*) fournissent un moyen de choisir finement quelles " "entrées de journal doivent être sorties." #: howto/logging.rst:360 msgid "Formatters specify the layout of log records in the final output." msgstr "" "Les formateurs (*formatters*) spécifient la structure de l'entrée de journal " "dans la sortie finale." #: howto/logging.rst:362 msgid "" "Log event information is passed between loggers, handlers, filters and " "formatters in a :class:`LogRecord` instance." msgstr "" "L'information relative à un événement est passée entre *loggers*, *handlers* " "et *formatters* dans une instance de la classe :class:`LogRecord`." #: howto/logging.rst:365 msgid "" "Logging is performed by calling methods on instances of the :class:`Logger` " "class (hereafter called :dfn:`loggers`). Each instance has a name, and they " "are conceptually arranged in a namespace hierarchy using dots (periods) as " "separators. For example, a logger named 'scan' is the parent of loggers " "'scan.text', 'scan.html' and 'scan.pdf'. Logger names can be anything you " "want, and indicate the area of an application in which a logged message " "originates." msgstr "" "La journalisation est réalisée en appelant les méthodes d'instance de la " "classe :class:`Logger` (que l'on appelle ci-dessous :dfn:`loggers`). Chaque " "instance a un nom et les instances sont organisées conceptuellement comme " "des hiérarchies dans l'espace de nommage, en utilisant un point comme " "séparateur. Par exemple, un *logger* appelé ``scan`` est le parent des " "*loggers* ``scan.text``, ``scan.html`` et ``scan.pdf``. Les noms des " "*loggers* peuvent être ce que vous voulez et indiquent le sous-domaine d'une " "application depuis lequel le message enregistré a été émis." #: howto/logging.rst:372 msgid "" "A good convention to use when naming loggers is to use a module-level " "logger, in each module which uses logging, named as follows::" msgstr "" "Une bonne convention lorsqu'on nomme les *loggers* est d'utiliser un " "*logger* au niveau du module, dans chaque module qui emploie ``logging``, " "nommé de la façon suivante ::" #: howto/logging.rst:377 msgid "" "This means that logger names track the package/module hierarchy, and it's " "intuitively obvious where events are logged just from the logger name." msgstr "" "Cela signifie que le nom d'un *logger* se rapporte à la hiérarchie du paquet " "et des modules, et il est évident de voir où un événement a été enregistré " "simplement en regardant le nom du *logger*." #: howto/logging.rst:380 msgid "" "The root of the hierarchy of loggers is called the root logger. That's the " "logger used by the functions :func:`debug`, :func:`info`, :func:`warning`, :" "func:`error` and :func:`critical`, which just call the same-named method of " "the root logger. The functions and the methods have the same signatures. The " "root logger's name is printed as 'root' in the logged output." msgstr "" "La racine de la hiérarchie des enregistreurs est appelée le *root logger*. " "C'est l'enregistreur utilisé par les fonctions :func:`debug`, :func:`info`, :" "func:`warning`, :func:`error` et :func:`critical`, qui appelle en fait les " "méthodes du même nom de l'objet *root logger*. Les fonctions et les méthodes " "ont la même signature. Le nom de l'enregistreur racine est affiché comme " "« ``'root'`` » dans la sortie." #: howto/logging.rst:386 msgid "" "It is, of course, possible to log messages to different destinations. " "Support is included in the package for writing log messages to files, HTTP " "GET/POST locations, email via SMTP, generic sockets, queues, or OS-specific " "logging mechanisms such as syslog or the Windows NT event log. Destinations " "are served by :dfn:`handler` classes. You can create your own log " "destination class if you have special requirements not met by any of the " "built-in handler classes." msgstr "" "Il est bien sûr possible d'enregistrer des messages pour des destinations " "différentes. Ce paquet permet d'écrire des entrées de journal dans des " "fichiers, des ressources HTTP GET/POST, par courriel via SMTP, des " "connecteurs (*socket* en anglais) génériques, des files d'attente, ou des " "mécanismes d'enregistrement spécifiques au système d'exploitation, comme " "*syslog* ou le journal d'événements de Windows NT. Les destinations sont " "servies par des classes :dfn:`handler`. Vous pouvez créer votre propre " "classe de destination si vous avez des besoins spéciaux qui ne sont couverts " "par aucune classe *handler* prédéfinie." #: howto/logging.rst:393 msgid "" "By default, no destination is set for any logging messages. You can specify " "a destination (such as console or file) by using :func:`basicConfig` as in " "the tutorial examples. If you call the functions :func:`debug`, :func:" "`info`, :func:`warning`, :func:`error` and :func:`critical`, they will check " "to see if no destination is set; and if one is not set, they will set a " "destination of the console (``sys.stderr``) and a default format for the " "displayed message before delegating to the root logger to do the actual " "message output." msgstr "" "Par défaut, aucune destination n'est prédéfinie pour les messages de " "journalisation. Vous pouvez définir une destination (comme la console ou un " "fichier) en utilisant :func:`basicConfig` comme dans les exemples donnés " "dans le tutoriel. Si vous appelez les fonctions :func:`debug`, :func:" "`info`, :func:`warning`, :func:`error` et :func:`critical`, celles-ci " "vérifient si une destination a été définie ; si ce n'est pas le cas, la " "destination est assignée à la console (``sys.stderr``) avec un format par " "défaut pour le message affiché, avant d'être déléguée au *logger* racine, " "qui sort le message." #: howto/logging.rst:401 msgid "The default format set by :func:`basicConfig` for messages is:" msgstr "" "Le format par défaut des messages est défini par :func:`basicConfig` comme " "suit :" #: howto/logging.rst:407 msgid "" "You can change this by passing a format string to :func:`basicConfig` with " "the *format* keyword argument. For all options regarding how a format string " "is constructed, see :ref:`formatter-objects`." msgstr "" "Vous pouvez modifier ce comportement en passant une chaîne de formatage à :" "func:`basicConfig` par l'argument nommé *format*. Consultez :ref:`formatter-" "objects` pour toutes les options de construction de cette chaîne de " "formatage." #: howto/logging.rst:412 msgid "Logging Flow" msgstr "Flux du processus de journalisation" #: howto/logging.rst:414 msgid "" "The flow of log event information in loggers and handlers is illustrated in " "the following diagram." msgstr "" "Le flux des informations associées à un évènement dans les *loggers* et les " "*handlers* est illustré dans le diagramme suivant." #: howto/logging.rst:420 msgid "Loggers" msgstr "Loggers" #: howto/logging.rst:422 msgid "" ":class:`Logger` objects have a threefold job. First, they expose several " "methods to application code so that applications can log messages at " "runtime. Second, logger objects determine which log messages to act upon " "based upon severity (the default filtering facility) or filter objects. " "Third, logger objects pass along relevant log messages to all interested log " "handlers." msgstr "" "Les objets de classe :class:`Logger` ont un rôle triple. Premièrement, ils " "exposent plusieurs méthodes au code de l'application, de manière à ce " "qu'elle puisse enregistrer des messages en cours d'exécution. Deuxièmement, " "les objets *logger* déterminent sur quel message agir selon leur sévérité (à " "partir des filtres par défaut) ou selon les objets *filter* associés. " "Troisièmement, les objets *logger* transmettent les messages pertinents à " "tous les *handlers* concernés." #: howto/logging.rst:428 msgid "" "The most widely used methods on logger objects fall into two categories: " "configuration and message sending." msgstr "" "Les méthodes des objets *logger* les plus utilisées appartiennent à deux " "catégories : la configuration et l'envoi de messages." #: howto/logging.rst:431 msgid "These are the most common configuration methods:" msgstr "Voici les méthodes de configuration les plus communes :" #: howto/logging.rst:433 msgid "" ":meth:`Logger.setLevel` specifies the lowest-severity log message a logger " "will handle, where debug is the lowest built-in severity level and critical " "is the highest built-in severity. For example, if the severity level is " "INFO, the logger will handle only INFO, WARNING, ERROR, and CRITICAL " "messages and will ignore DEBUG messages." msgstr "" ":meth:`Logger.setLevel` spécifie le plus bas niveau de sévérité qu'un " "*logger* traitera. Ainsi, ``DEBUG`` est le niveau de sévérité défini par " "défaut le plus bas et ``CRITICAL`` est le plus haut. Par exemple, si le " "niveau de sévérité est ``INFO``, le *logger* ne traite que les messages de " "niveau ``INFO``, ``WARNING``, ``ERROR`` et ``CRITICAL`` ; il ignore les " "messages de niveau DEBUG." #: howto/logging.rst:439 msgid "" ":meth:`Logger.addHandler` and :meth:`Logger.removeHandler` add and remove " "handler objects from the logger object. Handlers are covered in more detail " "in :ref:`handler-basic`." msgstr "" ":meth:`Logger.addHandler` et :meth:`Logger.removeHandler` ajoutent ou " "enlèvent des objets *handlers* au *logger*. Les objets *handlers* sont " "expliqués plus en détail dans :ref:`handler-basic`." #: howto/logging.rst:443 msgid "" ":meth:`Logger.addFilter` and :meth:`Logger.removeFilter` add and remove " "filter objects from the logger object. Filters are covered in more detail " "in :ref:`filter`." msgstr "" ":meth:`Logger.addFilter` et :meth:`Logger.removeFilter` ajoutent ou enlèvent " "des objets *filter* au *logger*. Les objets *filters* sont expliqués plus en " "détail dans :ref:`filter`." #: howto/logging.rst:447 msgid "" "You don't need to always call these methods on every logger you create. See " "the last two paragraphs in this section." msgstr "" "Comme nous l'expliquons aux deux derniers paragraphes de cette section, vous " "n'avez pas besoin de faire appel à ces méthodes à chaque fois que vous créez " "un *logger*." #: howto/logging.rst:450 msgid "" "With the logger object configured, the following methods create log messages:" msgstr "" "Une fois que l'objet *logger* est correctement configuré, les méthodes " "suivantes permettent de créer un message :" #: howto/logging.rst:452 msgid "" ":meth:`Logger.debug`, :meth:`Logger.info`, :meth:`Logger.warning`, :meth:" "`Logger.error`, and :meth:`Logger.critical` all create log records with a " "message and a level that corresponds to their respective method names. The " "message is actually a format string, which may contain the standard string " "substitution syntax of ``%s``, ``%d``, ``%f``, and so on. The rest of their " "arguments is a list of objects that correspond with the substitution fields " "in the message. With regard to ``**kwargs``, the logging methods care only " "about a keyword of ``exc_info`` and use it to determine whether to log " "exception information." msgstr "" "Les méthodes :meth:`Logger.debug`, :meth:`Logger.info`, :meth:`Logger." "warning`, :meth:`Logger.error` et :meth:`Logger.critical` créent des entrées " "de journal avec un message et un niveau correspondant à leur nom. Le message " "est en fait une chaîne de caractères qui peut contenir la syntaxe standard " "de substitution de chaînes de caractères : ``%s``, ``%d``, ``%f``, etc. " "L'argument suivant est une liste des objets correspondant aux champs à " "substituer dans le message. En ce qui concerne ``**kwargs``, les méthodes de " "``logging`` ne tiennent compte que du mot clef ``exc_info`` et l'utilisent " "pour déterminer s'il faut enregistrer les informations associées à une " "exception." #: howto/logging.rst:462 msgid "" ":meth:`Logger.exception` creates a log message similar to :meth:`Logger." "error`. The difference is that :meth:`Logger.exception` dumps a stack trace " "along with it. Call this method only from an exception handler." msgstr "" ":meth:`Logger.exception` crée un message similaire à :meth:`Logger.error`. " "La différence est que :meth:`Logger.exception` ajoute la trace de la pile " "d'exécution au message. On ne peut appeler cette méthode qu'à l'intérieur " "d'un bloc de gestion d'exception." #: howto/logging.rst:466 msgid "" ":meth:`Logger.log` takes a log level as an explicit argument. This is a " "little more verbose for logging messages than using the log level " "convenience methods listed above, but this is how to log at custom log " "levels." msgstr "" ":meth:`Logger.log` prend le niveau de sévérité comme argument explicite. " "C'est un peu plus verbeux pour enregistrer des messages que d'utiliser les " "méthodes plus pratiques décrites si dessus, mais c'est ce qui permet " "d'enregistrer des messages pour des niveaux de sévérité définis par " "l'utilisateur." #: howto/logging.rst:470 msgid "" ":func:`getLogger` returns a reference to a logger instance with the " "specified name if it is provided, or ``root`` if not. The names are period-" "separated hierarchical structures. Multiple calls to :func:`getLogger` with " "the same name will return a reference to the same logger object. Loggers " "that are further down in the hierarchical list are children of loggers " "higher up in the list. For example, given a logger with a name of ``foo``, " "loggers with names of ``foo.bar``, ``foo.bar.baz``, and ``foo.bam`` are all " "descendants of ``foo``." msgstr "" ":func:`getLogger` renvoie une référence à un objet *logger* du nom spécifié " "si celui-ci est donné en argument. Dans le cas contraire, c'est " "l'enregistreur racine. Les noms sont des structures hiérarchiques séparées " "par des points. Des appels répétés à :func:`getLogger` avec le même nom " "renvoient une référence au même objet *logger*. Les *loggers* qui sont plus " "bas dans cette liste hiérarchique sont des enfants des *loggers* plus haut " "dans la liste. Par exemple, si un enregistreur a le nom ``foo``, les " "enregistreurs avec les noms ``foo.bar``, ``foo.bar.baz`` et ``foo.bam`` sont " "tous des descendants de ``foo``." #: howto/logging.rst:478 msgid "" "Loggers have a concept of *effective level*. If a level is not explicitly " "set on a logger, the level of its parent is used instead as its effective " "level. If the parent has no explicit level set, *its* parent is examined, " "and so on - all ancestors are searched until an explicitly set level is " "found. The root logger always has an explicit level set (``WARNING`` by " "default). When deciding whether to process an event, the effective level of " "the logger is used to determine whether the event is passed to the logger's " "handlers." msgstr "" "On associe aux *loggers* un concept de *niveau effectif*. Si aucun niveau " "n'est explicitement défini pour un *logger*, c'est le niveau du parent qui " "est utilisé comme niveau effectif. Si le parent n'a pas de niveau défini, " "c'est celui de *son* parent qui est considéré, et ainsi de suite ; on " "examine tous les ancêtres jusqu'à ce qu'un niveau explicite soit trouvé. Le " "*logger root* a toujours un niveau explicite (``WARNING`` par défaut). Quand " "le *logger* traite un événement, c'est ce niveau effectif qui est utilisé " "pour déterminer si cet événement est transmis à ses *handlers*." #: howto/logging.rst:486 msgid "" "Child loggers propagate messages up to the handlers associated with their " "ancestor loggers. Because of this, it is unnecessary to define and configure " "handlers for all the loggers an application uses. It is sufficient to " "configure handlers for a top-level logger and create child loggers as " "needed. (You can, however, turn off propagation by setting the *propagate* " "attribute of a logger to ``False``.)" msgstr "" "Les *loggers* fils font remonter leurs messages aux *handlers* associés à " "leurs *loggers* parents. De ce fait, il n'est pas nécessaire de définir et " "configurer des *handlers* pour tous les *loggers* employés par une " "application. Il suffit de configurer les *handlers* pour un *logger* de haut " "niveau et de créer des *loggers* fils quand c'est nécessaire (on peut " "cependant empêcher la propagation aux ancêtres des messages en donnant la " "valeur ``False`` à l'attribut *propagate* d'un *logger*)." #: howto/logging.rst:497 msgid "Handlers" msgstr "Handlers" #: howto/logging.rst:499 msgid "" ":class:`~logging.Handler` objects are responsible for dispatching the " "appropriate log messages (based on the log messages' severity) to the " "handler's specified destination. :class:`Logger` objects can add zero or " "more handler objects to themselves with an :meth:`~Logger.addHandler` " "method. As an example scenario, an application may want to send all log " "messages to a log file, all log messages of error or higher to stdout, and " "all messages of critical to an email address. This scenario requires three " "individual handlers where each handler is responsible for sending messages " "of a specific severity to a specific location." msgstr "" "Les objets de type :class:`~logging.Handler` sont responsables de la " "distribution des messages (selon leur niveau de sévérité) vers les " "destinations spécifiées pour ce *handler*. Les objets :class:`Logger` " "peuvent ajouter des objets *handler* à eux-mêmes en appelant :meth:`~Logger." "addHandler`. Pour donner un exemple, une application peut envoyer tous les " "messages dans un fichier journal, tous les messages de niveau ``ERROR`` ou " "supérieur vers la sortie standard, et tous les messages de niveau " "``CRITICAL`` vers une adresse de courriel. Dans ce scénario, nous avons " "besoin de trois *handlers*, responsable chacun d'envoyer des messages d'une " "sévérité donnée vers une destination donnée." #: howto/logging.rst:509 msgid "" "The standard library includes quite a few handler types (see :ref:`useful-" "handlers`); the tutorials use mainly :class:`StreamHandler` and :class:" "`FileHandler` in its examples." msgstr "" "La bibliothèque standard inclut déjà un bon nombre de types de gestionnaires " "(voir :ref:`useful-handlers`) ; le tutoriel utilise surtout :class:" "`StreamHandler` et :class:`FileHandler` dans ses exemples." #: howto/logging.rst:513 msgid "" "There are very few methods in a handler for application developers to " "concern themselves with. The only handler methods that seem relevant for " "application developers who are using the built-in handler objects (that is, " "not creating custom handlers) are the following configuration methods:" msgstr "" "Peu de méthodes des objets *handlers* sont intéressantes pour les " "développeurs. Les seules méthodes intéressantes lorsqu'on utilise les objets " "*handlers* natifs (c'est-à-dire si l'on ne crée pas de *handler* " "personnalisé) sont les méthodes de configuration suivantes :" #: howto/logging.rst:518 msgid "" "The :meth:`~Handler.setLevel` method, just as in logger objects, specifies " "the lowest severity that will be dispatched to the appropriate destination. " "Why are there two :func:`setLevel` methods? The level set in the logger " "determines which severity of messages it will pass to its handlers. The " "level set in each handler determines which messages that handler will send " "on." msgstr "" "La méthode :meth:`~Handler.setLevel`, comme celle des objets *logger* permet " "de spécifier le plus bas niveau de sévérité qui sera distribué à la " "destination appropriée. Pourquoi y a-t-il deux méthodes :func:`setLevel` ? " "Le niveau défini dans le *logger* détermine quelle sévérité doit avoir un " "message pour être transmis à ses *handlers*. Le niveau mis pour chaque " "*handler* détermine quels messages seront envoyés aux destinations." #: howto/logging.rst:524 msgid "" ":meth:`~Handler.setFormatter` selects a Formatter object for this handler to " "use." msgstr "" ":meth:`~Handler.setFormatter` sélectionne l'objet ``Formatter`` utilisé par " "ce ``handler``." #: howto/logging.rst:527 msgid "" ":meth:`~Handler.addFilter` and :meth:`~Handler.removeFilter` respectively " "configure and deconfigure filter objects on handlers." msgstr "" ":meth:`~Handler.addFilter` et :meth:`~Handler.removeFilter` configurent et " "respectivement dé-configurent des objets *filter* sur les *handlers*." #: howto/logging.rst:530 msgid "" "Application code should not directly instantiate and use instances of :class:" "`Handler`. Instead, the :class:`Handler` class is a base class that defines " "the interface that all handlers should have and establishes some default " "behavior that child classes can use (or override)." msgstr "" "Le code d'une application ne devrait ni instancier, ni utiliser d'instances " "de la classe :class:`Handler`. La classe :class:`Handler` est plutôt une " "classe mère qui définit l'interface que tous les gestionnaires doivent avoir " "et établit les comportements par défaut que les classes filles peuvent " "employer (ou redéfinir)." #: howto/logging.rst:537 msgid "Formatters" msgstr "Formatters" #: howto/logging.rst:539 msgid "" "Formatter objects configure the final order, structure, and contents of the " "log message. Unlike the base :class:`logging.Handler` class, application " "code may instantiate formatter classes, although you could likely subclass " "the formatter if your application needs special behavior. The constructor " "takes three optional arguments -- a message format string, a date format " "string and a style indicator." msgstr "" "Les objets *formatter* configurent l'ordre final, la structure et le contenu " "du message. Contrairement à la classe mère :class:`logging.Handler`, le code " "d'une application peut instancier un objet de classe *formatter*, même si " "vous pouvez toujours sous-classer *formatter* si vous avez besoin d'un " "comportement spécial dans votre application. Le constructeur a trois " "arguments optionnels : une chaîne de formatage du message, une chaîne de " "formatage de la date et un indicateur de style." #: howto/logging.rst:548 msgid "" "If there is no message format string, the default is to use the raw " "message. If there is no date format string, the default date format is:" msgstr "" "S'il n'y a pas de chaîne de formatage, la chaîne brute est utilisée par " "défaut. S'il n'y a pas de chaîne de formatage de date, le format de date par " "défaut est :" #: howto/logging.rst:555 msgid "" "with the milliseconds tacked on at the end. The ``style`` is one of ``'%'``, " "``'{'``, or ``'$'``. If one of these is not specified, then ``'%'`` will be " "used." msgstr "" "avec les millisecondes ajoutées à la fin. ``style`` est l'un des suivants : " "``'%'``, ``'{'``, ou ``'$'``. Si l'un de ces styles n'est pas spécifié, " "alors ``'%'`` sera utilisé." #: howto/logging.rst:558 msgid "" "If the ``style`` is ``'%'``, the message format string uses ``%()s`` styled string substitution; the possible keys are documented in :" "ref:`logrecord-attributes`. If the style is ``'{'``, the message format " "string is assumed to be compatible with :meth:`str.format` (using keyword " "arguments), while if the style is ``'$'`` then the message format string " "should conform to what is expected by :meth:`string.Template.substitute`." msgstr "" "Si l'argument ``style`` est ``'%'``, la chaîne de formatage utilise " "``%()s`` comme style de substitution de chaîne de " "caractères. Les clefs possibles sont documentées dans :ref:`logrecord-" "attributes`. Si le style est ``'{'``, le message de la chaîne de formatage " "est compatible avec :meth:`str.format` (en employant des arguments nommés). " "Enfin si le style est ``'$'`` alors la chaîne de formatage du message doit " "être conforme à ce qui est attendu de :meth:`string.Template.substitute`." #: howto/logging.rst:565 msgid "Added the ``style`` parameter." msgstr "Ajout du paramètre ``style``." #: howto/logging.rst:568 msgid "" "The following message format string will log the time in a human-readable " "format, the severity of the message, and the contents of the message, in " "that order::" msgstr "" "La chaîne de formatage de message suivante enregistrera le temps dans un " "format lisible par les humains, la sévérité du message et son contenu, dans " "cet ordre ::" #: howto/logging.rst:574 msgid "" "Formatters use a user-configurable function to convert the creation time of " "a record to a tuple. By default, :func:`time.localtime` is used; to change " "this for a particular formatter instance, set the ``converter`` attribute of " "the instance to a function with the same signature as :func:`time.localtime` " "or :func:`time.gmtime`. To change it for all formatters, for example if you " "want all logging times to be shown in GMT, set the ``converter`` attribute " "in the Formatter class (to ``time.gmtime`` for GMT display)." msgstr "" "Les *formatters* emploient une fonction configurable par l'utilisateur pour " "convertir le temps de création d'une entrée de journal en un *n*-uplet. Par " "défaut, :func:`time.localtime` est employé ; pour changer cela pour une " "instance particulière de *formatter*, assignez une fonction avec la même " "signature que :func:`time.localtime` ou :func:`time.gmtime` à l'attribut " "``converter`` de cette instance. Pour changer cela pour tous les " "*formatters*, par exemple si vous voulez que tous votre horodatage soit " "affiché en GMT, changez l'attribut ``converter`` de la classe ``Formatter`` " "en ``time.gmtime``." #: howto/logging.rst:584 msgid "Configuring Logging" msgstr "Configuration de ``logging``" #: howto/logging.rst:588 msgid "Programmers can configure logging in three ways:" msgstr "On peut configurer ``logging`` de trois façons :" #: howto/logging.rst:590 msgid "" "Creating loggers, handlers, and formatters explicitly using Python code that " "calls the configuration methods listed above." msgstr "" "Créer des *loggers*, *handlers* et *formatters* explicitement en utilisant " "du code Python qui appelle les méthodes de configuration listées ci-dessus." #: howto/logging.rst:592 msgid "" "Creating a logging config file and reading it using the :func:`fileConfig` " "function." msgstr "" "Créer un fichier de configuration de ``logging`` et le lire en employant la " "fonction :func:`fileConfig`." #: howto/logging.rst:594 msgid "" "Creating a dictionary of configuration information and passing it to the :" "func:`dictConfig` function." msgstr "" "Créer un dictionnaire d'informations de configuration et le passer à la " "fonction :func:`dictConfig`." #: howto/logging.rst:597 msgid "" "For the reference documentation on the last two options, see :ref:`logging-" "config-api`. The following example configures a very simple logger, a " "console handler, and a simple formatter using Python code::" msgstr "" "Pour la documentation de référence de ces deux dernières options, voyez :ref:" "`logging-config-api`. L'exemple suivant configure un *logger* très simple, " "un *handler* employant la console, et un *formatter* simple en utilisant du " "code Python ::" #: howto/logging.rst:627 msgid "" "Running this module from the command line produces the following output:" msgstr "" "L'exécution de ce module via la ligne de commande produit la sortie " "suivante :" #: howto/logging.rst:638 msgid "" "The following Python module creates a logger, handler, and formatter nearly " "identical to those in the example listed above, with the only difference " "being the names of the objects::" msgstr "" "Le module Python suivant crée un *logger*, un *handler* et un *formatter* " "identiques à ceux de l'exemple détaillé au-dessus, au nom des objets près ::" #: howto/logging.rst:657 msgid "Here is the logging.conf file:" msgstr "Voici le fichier *logging.conf* :" #: howto/logging.rst:689 msgid "" "The output is nearly identical to that of the non-config-file-based example:" msgstr "" "La sortie est presque identique à celle de l'exemple qui n'est pas basé sur " "un fichier de configuration :" #: howto/logging.rst:700 msgid "" "You can see that the config file approach has a few advantages over the " "Python code approach, mainly separation of configuration and code and the " "ability of noncoders to easily modify the logging properties." msgstr "" "Vous pouvez constater les avantages de l'approche par fichier de " "configuration par rapport à celle du code Python, principalement la " "séparation de la configuration et du code, et la possibilité pour une " "personne qui ne code pas de modifier facilement les propriétés de " "journalisation." #: howto/logging.rst:704 msgid "" "The :func:`fileConfig` function takes a default parameter, " "``disable_existing_loggers``, which defaults to ``True`` for reasons of " "backward compatibility. This may or may not be what you want, since it will " "cause any non-root loggers existing before the :func:`fileConfig` call to be " "disabled unless they (or an ancestor) are explicitly named in the " "configuration. Please refer to the reference documentation for more " "information, and specify ``False`` for this parameter if you wish." msgstr "" "La fonction :func:`fileConfig` accepte un paramètre par défaut " "``disable_existing_loggers``, qui vaut ``True`` par défaut pour des raisons " "de compatibilité ascendante. Ce n'est pas forcément ce que vous souhaitez : " "en effet, tous les *loggers* créés avant l'appel à :func:`fileConfig` seront " "désactivés sauf si eux-mêmes (ou l'un de leurs parents) sont explicitement " "nommés dans le fichier de configuration. Veuillez vous reporter à la " "documentation pour plus de détails, et donner la valeur ``False`` à ce " "paramètre si vous le souhaitez." #: howto/logging.rst:712 msgid "" "The dictionary passed to :func:`dictConfig` can also specify a Boolean value " "with key ``disable_existing_loggers``, which if not specified explicitly in " "the dictionary also defaults to being interpreted as ``True``. This leads to " "the logger-disabling behaviour described above, which may not be what you " "want - in which case, provide the key explicitly with a value of ``False``." msgstr "" "Le dictionnaire passé à :func:`dictConfig` peut aussi spécifier une valeur " "Booléenne pour la clef ``disable_existing_loggers``. Si cette valeur n'est " "pas donnée, elle est interprétée comme vraie par défaut. Cela conduit au " "comportement de désactivation des *loggers* décrit ci-dessus, qui n'est pas " "forcément celui que vous souhaitez ; dans ce cas, donnez explicitement la " "valeur ``False`` à cette clef." #: howto/logging.rst:722 msgid "" "Note that the class names referenced in config files need to be either " "relative to the logging module, or absolute values which can be resolved " "using normal import mechanisms. Thus, you could use either :class:`~logging." "handlers.WatchedFileHandler` (relative to the logging module) or ``mypackage." "mymodule.MyHandler`` (for a class defined in package ``mypackage`` and " "module ``mymodule``, where ``mypackage`` is available on the Python import " "path)." msgstr "" "Notez que les noms de classe référencés dans le fichier de configuration " "doivent être relatifs au module ``logging``, ou des valeurs absolues qui " "peuvent être résolues à travers les mécanismes d'importation habituels. " "Ainsi, on peut soit utiliser :class:`~logging.handlers.WatchedFileHandler` " "(relativement au module ``logging``) ou ``mypackage.mymodule.MyHandler`` " "(pour une classe définie dans le paquet ``mypackage`` et le module " "``mymodule``, si ``mypackage`` est disponible dans les chemins d'importation " "de Python)." #: howto/logging.rst:730 msgid "" "In Python 3.2, a new means of configuring logging has been introduced, using " "dictionaries to hold configuration information. This provides a superset of " "the functionality of the config-file-based approach outlined above, and is " "the recommended configuration method for new applications and deployments. " "Because a Python dictionary is used to hold configuration information, and " "since you can populate that dictionary using different means, you have more " "options for configuration. For example, you can use a configuration file in " "JSON format, or, if you have access to YAML processing functionality, a file " "in YAML format, to populate the configuration dictionary. Or, of course, you " "can construct the dictionary in Python code, receive it in pickled form over " "a socket, or use whatever approach makes sense for your application." msgstr "" "Dans Python 3.2, un nouveau moyen de configuration de la journalisation a " "été introduit, à l'aide de dictionnaires pour contenir les informations de " "configuration. Cela fournit un sur-ensemble de la fonctionnalité décrite ci-" "dessus basée sur un fichier de configuration et c’est la méthode recommandée " "pour les nouvelles applications et les déploiements. Étant donné qu'un " "dictionnaire Python est utilisé pour contenir des informations de " "configuration et que vous pouvez remplir ce dictionnaire à l'aide de " "différents moyens, vous avez plus d'options pour la configuration. Par " "exemple, vous pouvez utiliser un fichier de configuration au format JSON ou, " "si vous avez accès à la fonctionnalité de traitement YAML, un fichier au " "format YAML, pour remplir le dictionnaire de configuration. Ou bien sûr, " "vous pouvez construire le dictionnaire dans le code Python, le recevoir sous " "forme de *pickle* sur un connecteur, ou utiliser n'importe quelle approche " "suivant la logique de votre application." #: howto/logging.rst:742 msgid "" "Here's an example of the same configuration as above, in YAML format for the " "new dictionary-based approach:" msgstr "" "Voici un exemple définissant la même configuration que ci-dessus, au format " "YAML pour le dictionnaire correspondant à cette nouvelle approche :" #: howto/logging.rst:766 msgid "" "For more information about logging using a dictionary, see :ref:`logging-" "config-api`." msgstr "" "Pour plus d'informations sur la journalisation à l'aide d'un dictionnaire, " "consultez :ref:`logging-config-api`." #: howto/logging.rst:770 msgid "What happens if no configuration is provided" msgstr "Comportement par défaut (si aucune configuration n'est fournie)" #: howto/logging.rst:772 msgid "" "If no logging configuration is provided, it is possible to have a situation " "where a logging event needs to be output, but no handlers can be found to " "output the event. The behaviour of the logging package in these " "circumstances is dependent on the Python version." msgstr "" "Si aucune configuration de journalisation n'est fournie, il est possible " "d'avoir une situation où un événement doit faire l'objet d'une " "journalisation, mais où aucun gestionnaire ne peut être trouvé pour tracer " "l'événement. Le comportement du paquet ``logging`` dans ces circonstances " "dépend de la version Python." #: howto/logging.rst:777 msgid "For versions of Python prior to 3.2, the behaviour is as follows:" msgstr "" "Pour les versions de Python antérieures à 3.2, le comportement est le " "suivant :" #: howto/logging.rst:779 msgid "" "If *logging.raiseExceptions* is ``False`` (production mode), the event is " "silently dropped." msgstr "" "Si *logging.raiseExceptions* vaut ``False`` (mode production), l’événement " "est silencieusement abandonné." #: howto/logging.rst:782 msgid "" "If *logging.raiseExceptions* is ``True`` (development mode), a message 'No " "handlers could be found for logger X.Y.Z' is printed once." msgstr "" "Si *logging.raiseExceptions* vaut ``True`` (mode de développement), un " "message *No handlers could be found for logger X.Y.Z* est écrit sur la " "sortie standard une fois." #: howto/logging.rst:785 msgid "In Python 3.2 and later, the behaviour is as follows:" msgstr "Dans Python 3.2 et ultérieur, le comportement est le suivant :" #: howto/logging.rst:787 msgid "" "The event is output using a 'handler of last resort', stored in ``logging." "lastResort``. This internal handler is not associated with any logger, and " "acts like a :class:`~logging.StreamHandler` which writes the event " "description message to the current value of ``sys.stderr`` (therefore " "respecting any redirections which may be in effect). No formatting is done " "on the message - just the bare event description message is printed. The " "handler's level is set to ``WARNING``, so all events at this and greater " "severities will be output." msgstr "" "L'événement est sorti à l'aide d'un « gestionnaire de dernier recours », " "stocké dans ``logging.lastResort``. Ce gestionnaire interne n'est associé à " "aucun enregistreur et agit comme un :class:`~logging.StreamHandler` qui " "écrit le message de description de l'événement vers la valeur actuelle de " "``sys.stderr`` (par conséquent, en respectant les redirections qui peuvent " "être en vigueur). Aucun formatage n'est fait sur le message – juste le " "message de description de l'événement nu est affiché. Le niveau du " "gestionnaire est défini sur ``WARNING``, de sorte que tous les événements de " "cette sévérité et plus seront écrits." #: howto/logging.rst:796 msgid "" "To obtain the pre-3.2 behaviour, ``logging.lastResort`` can be set to " "``None``." msgstr "" "Pour obtenir un comportement antérieur à 3.2, ``logging.lastResort`` peut " "être mis à ``None``." #: howto/logging.rst:801 msgid "Configuring Logging for a Library" msgstr "Configuration de la journalisation pour une bibliothèque" #: howto/logging.rst:803 msgid "" "When developing a library which uses logging, you should take care to " "document how the library uses logging - for example, the names of loggers " "used. Some consideration also needs to be given to its logging " "configuration. If the using application does not use logging, and library " "code makes logging calls, then (as described in the previous section) events " "of severity ``WARNING`` and greater will be printed to ``sys.stderr``. This " "is regarded as the best default behaviour." msgstr "" "Lors du développement d'une bibliothèque qui utilise la journalisation, vous " "devez prendre soin de documenter la façon dont la bibliothèque utilise la " "journalisation (par exemple, les noms des enregistreurs utilisés). Consacrez " "aussi un peu de temps à la configuration de la journalisation. Si " "l'application utilisant votre bibliothèque n'utilise pas la journalisation " "et que le code de la bibliothèque effectue des appels de journalisation, " "alors (comme décrit dans la section précédente), les événements de gravité " "``WARNING`` et au-dessus seront écrits sur ``sys.stderr``. Cela est " "considéré comme le meilleur comportement par défaut." #: howto/logging.rst:811 msgid "" "If for some reason you *don't* want these messages printed in the absence of " "any logging configuration, you can attach a do-nothing handler to the top-" "level logger for your library. This avoids the message being printed, since " "a handler will always be found for the library's events: it just doesn't " "produce any output. If the library user configures logging for application " "use, presumably that configuration will add some handlers, and if levels are " "suitably configured then logging calls made in library code will send output " "to those handlers, as normal." msgstr "" "Si, pour une raison quelconque, vous ne voulez *pas* que ces messages soient " "affichés en l'absence de toute configuration de journalisation, vous pouvez " "attacher un gestionnaire *ne-fait-rien* à l'enregistreur de niveau supérieur " "de votre bibliothèque. Cela évite qu’un message ne soit écrit, puisqu’un " "gestionnaire sera toujours trouvé pour les événements de la bibliothèque, il " "ne produit tout simplement pas de sortie. Si celui qui utilise la " "bibliothèque configure la journalisation pour son application, il est " "vraisemblable que la configuration ajoutera certains gestionnaires et, si " "les niveaux sont convenablement configurés, alors la journalisation des " "appels effectués dans le code de bibliothèque enverra la sortie à ces " "gestionnaires, comme d'habitude." #: howto/logging.rst:820 msgid "" "A do-nothing handler is included in the logging package: :class:`~logging." "NullHandler` (since Python 3.1). An instance of this handler could be added " "to the top-level logger of the logging namespace used by the library (*if* " "you want to prevent your library's logged events being output to ``sys." "stderr`` in the absence of logging configuration). If all logging by a " "library *foo* is done using loggers with names matching 'foo.x', 'foo.x.y', " "etc. then the code::" msgstr "" "Un gestionnaire *ne-fait-rien* est inclus dans le paquet de " "journalisation : :class:`~logging.NullHandler` (depuis Python 3.1). Une " "instance de ce gestionnaire peut être ajoutée à l'enregistreur de niveau " "supérieur de l'espace de nommage de journalisation utilisé par la " "bibliothèque (*si* vous souhaitez empêcher la copie de la journalisation de " "votre bibliothèque dans ``sys.stderr`` en l'absence de configuration de " "journalisation). Si toute la journalisation par une bibliothèque *foo* est " "effectuée en utilisant des enregistreurs avec des noms correspondant à *foo." "x*, *foo.x.y*, etc., alors le code ::" #: howto/logging.rst:831 msgid "" "should have the desired effect. If an organisation produces a number of " "libraries, then the logger name specified can be 'orgname.foo' rather than " "just 'foo'." msgstr "" "doit avoir l'effet désiré. Si une organisation produit un certain nombre de " "bibliothèques, le nom de l'enregistreur spécifié peut être ``orgname.foo`` " "plutôt que simplement ``foo``." #: howto/logging.rst:835 msgid "" "It is strongly advised that you *do not log to the root logger* in your " "library. Instead, use a logger with a unique and easily identifiable name, " "such as the ``__name__`` for your library's top-level package or module. " "Logging to the root logger will make it difficult or impossible for the " "application developer to configure the logging verbosity or handlers of your " "library as they wish." msgstr "" "Il est fortement conseillé de *ne pas journaliser vers l'enregistreur " "racine* dans votre bibliothèque. À la place, utilisez un enregistreur avec " "un nom unique et facilement identifiable, tel que ``__name__`` pour le " "paquet ou le module de niveau supérieur de votre bibliothèque. La " "journalisation dans l'enregistreur racine rend difficile voire impossible " "pour le développeur de l'application de configurer la verbosité de " "journalisation ou les gestionnaires de votre bibliothèque comme il le " "souhaite." #: howto/logging.rst:842 msgid "" "It is strongly advised that you *do not add any handlers other than* :class:" "`~logging.NullHandler` *to your library's loggers*. This is because the " "configuration of handlers is the prerogative of the application developer " "who uses your library. The application developer knows their target audience " "and what handlers are most appropriate for their application: if you add " "handlers 'under the hood', you might well interfere with their ability to " "carry out unit tests and deliver logs which suit their requirements." msgstr "" "Il est vivement conseillé de ne *pas ajouter de gestionnaires autres que* :" "class:`~logging.NullHandler` *aux enregistreurs de votre bibliothèque*. Cela " "est dû au fait que la configuration des gestionnaires est la prérogative du " "développeur d'applications qui utilise votre bibliothèque. Le développeur " "d'applications connaît le public cible et les gestionnaires les plus " "appropriés pour ses applications : si vous ajoutez des gestionnaires « sous " "le manteau », vous pourriez bien interférer avec les tests unitaires et la " "journalisation qui convient à ses exigences." #: howto/logging.rst:853 msgid "Logging Levels" msgstr "Niveaux de journalisation" #: howto/logging.rst:855 msgid "" "The numeric values of logging levels are given in the following table. These " "are primarily of interest if you want to define your own levels, and need " "them to have specific values relative to the predefined levels. If you " "define a level with the same numeric value, it overwrites the predefined " "value; the predefined name is lost." msgstr "" "Les valeurs numériques des niveaux de journalisation sont données dans le " "tableau suivant. Celles-ci n'ont d'intérêt que si vous voulez définir vos " "propres niveaux, avec des valeurs spécifiques par rapport aux niveaux " "prédéfinis. Si vous définissez un niveau avec la même valeur numérique, il " "écrase la valeur prédéfinie ; le nom prédéfini est perdu." #: howto/logging.rst:862 msgid "Numeric value" msgstr "Valeur numérique" #: howto/logging.rst:864 msgid "50" msgstr "50" #: howto/logging.rst:866 msgid "40" msgstr "40" #: howto/logging.rst:868 msgid "30" msgstr "30" #: howto/logging.rst:870 msgid "20" msgstr "20" #: howto/logging.rst:872 msgid "10" msgstr "10" #: howto/logging.rst:874 msgid "``NOTSET``" msgstr "``NOTSET``" #: howto/logging.rst:874 msgid "0" msgstr "0" #: howto/logging.rst:877 msgid "" "Levels can also be associated with loggers, being set either by the " "developer or through loading a saved logging configuration. When a logging " "method is called on a logger, the logger compares its own level with the " "level associated with the method call. If the logger's level is higher than " "the method call's, no logging message is actually generated. This is the " "basic mechanism controlling the verbosity of logging output." msgstr "" "Les niveaux peuvent également être associés à des enregistreurs, étant " "définis soit par le développeur, soit par le chargement d'une configuration " "de journalisation enregistrée. Lorsqu'une méthode de journalisation est " "appelée sur un enregistreur, l'enregistreur compare son propre niveau avec " "le niveau associé à l'appel de méthode. Si le niveau de l'enregistreur est " "supérieur à l'appel de méthode, aucun message de journalisation n'est " "réellement généré. C'est le mécanisme de base contrôlant la verbosité de la " "sortie de journalisation." #: howto/logging.rst:884 msgid "" "Logging messages are encoded as instances of the :class:`~logging.LogRecord` " "class. When a logger decides to actually log an event, a :class:`~logging." "LogRecord` instance is created from the logging message." msgstr "" "Les messages de journalisation sont codés en tant qu'instances de :class:" "`~logging.LogRecord`. Lorsqu'un enregistreur décide de réellement " "enregistrer un événement, une instance de :class:`~logging.LogRecord` est " "créée à partir du message de journalisation." #: howto/logging.rst:888 msgid "" "Logging messages are subjected to a dispatch mechanism through the use of :" "dfn:`handlers`, which are instances of subclasses of the :class:`Handler` " "class. Handlers are responsible for ensuring that a logged message (in the " "form of a :class:`LogRecord`) ends up in a particular location (or set of " "locations) which is useful for the target audience for that message (such as " "end users, support desk staff, system administrators, developers). Handlers " "are passed :class:`LogRecord` instances intended for particular " "destinations. Each logger can have zero, one or more handlers associated " "with it (via the :meth:`~Logger.addHandler` method of :class:`Logger`). In " "addition to any handlers directly associated with a logger, *all handlers " "associated with all ancestors of the logger* are called to dispatch the " "message (unless the *propagate* flag for a logger is set to a false value, " "at which point the passing to ancestor handlers stops)." msgstr "" "Les messages de journalisation sont soumis à un mécanisme d'expédition via " "l'utilisation de :dfn:`handlers`, qui sont des instances de sous-classes de " "la classe :class:`Handler`. Les gestionnaires sont chargés de s'assurer " "qu'un message journalisé (sous la forme d'un :class:`LogRecord`) atterrit " "dans un emplacement particulier (ou un ensemble d'emplacements) qui est " "utile pour le public cible pour ce message (tels que les utilisateurs " "finaux, le personnel chargé de l'assistance aux utilisateurs, les " "administrateurs système ou les développeurs). Des instances de :class:" "`LogRecord` adaptées à leur destination finale sont passées aux " "gestionnaires destinées à des destinations particulières. Chaque " "enregistreur peut avoir zéro, un ou plusieurs gestionnaires associés à celui-" "ci (via la méthode :meth:`~Logger.addHandler` de :class:`Logger`). En plus " "de tous les gestionnaires directement associés à un enregistreur, *tous les " "gestionnaires associés à tous les ancêtres de l'enregistreur* sont appelés " "pour envoyer le message (à moins que l'indicateur *propager* pour un " "enregistreur soit défini sur la valeur ``False``, auquel cas le passage au " "gestionnaire ancêtre s'arrête)." #: howto/logging.rst:902 msgid "" "Just as for loggers, handlers can have levels associated with them. A " "handler's level acts as a filter in the same way as a logger's level does. " "If a handler decides to actually dispatch an event, the :meth:`~Handler." "emit` method is used to send the message to its destination. Most user-" "defined subclasses of :class:`Handler` will need to override this :meth:" "`~Handler.emit`." msgstr "" "Tout comme pour les enregistreurs, les gestionnaires peuvent avoir des " "niveaux associés. Le niveau d'un gestionnaire agit comme un filtre de la " "même manière que le niveau d'un enregistreur. Si un gestionnaire décide de " "réellement distribuer un événement, la méthode :meth:`~Handler.emit` est " "utilisée pour envoyer le message à sa destination. La plupart des sous-" "classes définies par l'utilisateur de :class:`Handler` devront remplacer ce :" "meth:`~Handler.emit`." #: howto/logging.rst:911 msgid "Custom Levels" msgstr "Niveaux personnalisés" #: howto/logging.rst:913 msgid "" "Defining your own levels is possible, but should not be necessary, as the " "existing levels have been chosen on the basis of practical experience. " "However, if you are convinced that you need custom levels, great care should " "be exercised when doing this, and it is possibly *a very bad idea to define " "custom levels if you are developing a library*. That's because if multiple " "library authors all define their own custom levels, there is a chance that " "the logging output from such multiple libraries used together will be " "difficult for the using developer to control and/or interpret, because a " "given numeric value might mean different things for different libraries." msgstr "" "La définition de vos propres niveaux est possible, mais ne devrait pas être " "nécessaire, car les niveaux existants ont été choisis par expérience. " "Cependant, si vous êtes convaincu que vous avez besoin de niveaux " "personnalisés, prenez grand soin à leur réalisation et il est pratiquement " "certain que c’est *une très mauvaise idée de définir des niveaux " "personnalisés si vous développez une bibliothèque*. Car si plusieurs auteurs " "de bibliothèque définissent tous leurs propres niveaux personnalisés, il y a " "une chance que la sortie de journalisation de ces multiples bibliothèques " "utilisées ensemble sera difficile pour le développeur à utiliser pour " "contrôler et/ou interpréter, car une valeur numérique donnée peut signifier " "des choses différentes pour différentes bibliothèques." #: howto/logging.rst:926 msgid "Useful Handlers" msgstr "Gestionnaires utiles" #: howto/logging.rst:928 msgid "" "In addition to the base :class:`Handler` class, many useful subclasses are " "provided:" msgstr "" "En plus de la classe mère :class:`Handler`, de nombreuses sous-classes " "utiles sont fournies :" #: howto/logging.rst:931 msgid "" ":class:`StreamHandler` instances send messages to streams (file-like " "objects)." msgstr "" "Les instances :class:`StreamHandler` envoient des messages aux flux (objets " "de type fichier)." #: howto/logging.rst:934 msgid ":class:`FileHandler` instances send messages to disk files." msgstr "" "Les instances :class:`FileHandler` envoient des messages à des fichiers sur " "le disque." #: howto/logging.rst:936 msgid "" ":class:`~handlers.BaseRotatingHandler` is the base class for handlers that " "rotate log files at a certain point. It is not meant to be instantiated " "directly. Instead, use :class:`~handlers.RotatingFileHandler` or :class:" "`~handlers.TimedRotatingFileHandler`." msgstr "" ":class:`~handlers.BaseRotatingHandler` est la classe mère pour les " "gestionnaires qui assurent la rotation des fichiers de journalisation à " "partir d’un certain point. Elle n'est pas destinée à être instanciée " "directement. Utilisez plutôt :class:`~handlers.RotatingFileHandler` ou :" "class:`~handlers.TimedRotatingFileHandler`." #: howto/logging.rst:941 msgid "" ":class:`~handlers.RotatingFileHandler` instances send messages to disk " "files, with support for maximum log file sizes and log file rotation." msgstr "" "Les instances :class:`~handlers.RotatingFileHandler` envoient des messages à " "des fichiers sur le disque, avec la prise en charge des tailles maximales de " "fichiers de journalisation et de la rotation des fichiers de journalisation." #: howto/logging.rst:944 msgid "" ":class:`~handlers.TimedRotatingFileHandler` instances send messages to disk " "files, rotating the log file at certain timed intervals." msgstr "" "Les instances de :class:`~handlers.TimedRotatingFileHandler` envoient des " "messages aux fichiers de disque, en permutant le fichier journal à " "intervalles réguliers." #: howto/logging.rst:947 msgid "" ":class:`~handlers.SocketHandler` instances send messages to TCP/IP sockets. " "Since 3.4, Unix domain sockets are also supported." msgstr "" "Les instances de :class:`~handlers.SocketHandler` envoient des messages aux " "connecteurs TCP/IP. Depuis 3.4, les connecteurs UNIX sont également pris en " "charge." #: howto/logging.rst:950 msgid "" ":class:`~handlers.DatagramHandler` instances send messages to UDP sockets. " "Since 3.4, Unix domain sockets are also supported." msgstr "" "Les instances de :class:`~handlers.DatagramHandler` envoient des messages " "aux connecteurs UDP. Depuis 3.4, les connecteurs UNIX sont également pris en " "charge." #: howto/logging.rst:953 msgid "" ":class:`~handlers.SMTPHandler` instances send messages to a designated email " "address." msgstr "" "Les instances de :class:`~handlers.SMTPHandler` envoient des messages à une " "adresse e-mail désignée." #: howto/logging.rst:956 msgid "" ":class:`~handlers.SysLogHandler` instances send messages to a Unix syslog " "daemon, possibly on a remote machine." msgstr "" "Les instances de :class:`~handlers.SysLogHandler` envoient des messages à un " "*daemon* *syslog* UNIX, éventuellement sur un ordinateur distant." #: howto/logging.rst:959 msgid "" ":class:`~handlers.NTEventLogHandler` instances send messages to a Windows " "NT/2000/XP event log." msgstr "" "Les instances de :class:`~handlers.NTEventLogHandler` envoient des messages " "à un journal des événements Windows NT/2000/XP." #: howto/logging.rst:962 msgid "" ":class:`~handlers.MemoryHandler` instances send messages to a buffer in " "memory, which is flushed whenever specific criteria are met." msgstr "" "Les instances de :class:`~handlers.MemoryHandler` envoient des messages à un " "tampon en mémoire, qui est vidé chaque fois que des critères spécifiques " "sont remplis." #: howto/logging.rst:965 msgid "" ":class:`~handlers.HTTPHandler` instances send messages to an HTTP server " "using either ``GET`` or ``POST`` semantics." msgstr "" "Les instances de :class:`~handlers.HTTPHandler` envoient des messages à un " "serveur HTTP à l'aide de la sémantique ``GET`` ou ``POST``." #: howto/logging.rst:968 msgid "" ":class:`~handlers.WatchedFileHandler` instances watch the file they are " "logging to. If the file changes, it is closed and reopened using the file " "name. This handler is only useful on Unix-like systems; Windows does not " "support the underlying mechanism used." msgstr "" "Les instances de :class:`~handlers.WatchedFileHandler` surveillent le " "fichier sur lequel elles se connectent. Si le fichier change, il est fermé " "et rouvert à l'aide du nom de fichier. Ce gestionnaire n'est utile que sur " "les systèmes de type UNIX ; Windows ne prend pas en charge le mécanisme sous-" "jacent utilisé." #: howto/logging.rst:973 msgid "" ":class:`~handlers.QueueHandler` instances send messages to a queue, such as " "those implemented in the :mod:`queue` or :mod:`multiprocessing` modules." msgstr "" "Les instances de :class:`~handlers.QueueHandler` envoient des messages à une " "file d'attente, telles que celles implémentées dans les modules :mod:`queue` " "ou :mod:`multiprocessing`." #: howto/logging.rst:976 msgid "" ":class:`NullHandler` instances do nothing with error messages. They are used " "by library developers who want to use logging, but want to avoid the 'No " "handlers could be found for logger XXX' message which can be displayed if " "the library user has not configured logging. See :ref:`library-config` for " "more information." msgstr "" "Les instances :class:`NullHandler` ne font rien avec les messages d'erreur. " "Ils sont utilisés par les développeurs de bibliothèques qui veulent utiliser " "la journalisation, mais qui veulent éviter les messages de type *No handlers " "could be found for logger XXX*, affiché si celui qui utilise la bibliothèque " "n'a pas configuré la journalisation. Voir :ref:`library-config` pour plus " "d'informations." #: howto/logging.rst:982 msgid "The :class:`NullHandler` class." msgstr "La classe :class:`NullHandler`." #: howto/logging.rst:985 msgid "The :class:`~handlers.QueueHandler` class." msgstr "La classe :class:`~handlers.QueueHandler`." #: howto/logging.rst:988 msgid "" "The :class:`NullHandler`, :class:`StreamHandler` and :class:`FileHandler` " "classes are defined in the core logging package. The other handlers are " "defined in a sub-module, :mod:`logging.handlers`. (There is also another sub-" "module, :mod:`logging.config`, for configuration functionality.)" msgstr "" "Les classes :class:`NullHandler`, :class:`StreamHandler` et :class:" "`FileHandler` sont définies dans le module de journalisation de base. Les " "autres gestionnaires sont définis dans un sous-module, :mod:`logging." "handlers` (il existe également un autre sous-module, :mod:`logging.config`, " "pour la fonctionnalité de configuration)." #: howto/logging.rst:993 msgid "" "Logged messages are formatted for presentation through instances of the :" "class:`Formatter` class. They are initialized with a format string suitable " "for use with the % operator and a dictionary." msgstr "" "Les messages journalisés sont mis en forme pour la présentation via des " "instances de la classe :class:`Formatter`. Ils sont initialisés avec une " "chaîne de format appropriée pour une utilisation avec l'opérateur % et un " "dictionnaire." #: howto/logging.rst:997 msgid "" "For formatting multiple messages in a batch, instances of :class:`~handlers." "BufferingFormatter` can be used. In addition to the format string (which is " "applied to each message in the batch), there is provision for header and " "trailer format strings." msgstr "" "Pour formater plusieurs messages dans un lot, des instances de :class:" "`~handlers.BufferingFormatter` peuvent être utilisées. En plus de la chaîne " "de format (qui est appliquée à chaque message dans le lot), il existe des " "dispositions pour les chaînes de format d'en-tête et de fin." #: howto/logging.rst:1002 msgid "" "When filtering based on logger level and/or handler level is not enough, " "instances of :class:`Filter` can be added to both :class:`Logger` and :class:" "`Handler` instances (through their :meth:`~Handler.addFilter` method). " "Before deciding to process a message further, both loggers and handlers " "consult all their filters for permission. If any filter returns a false " "value, the message is not processed further." msgstr "" "Lorsque le filtrage basé sur le niveau de l'enregistreur et/ou le niveau du " "gestionnaire ne suffit pas, les instances de :class:`Filter` peuvent être " "ajoutées aux deux instances de :class:`Logger` et :class:`Handler` (par le " "biais de leur méthode :meth:`~Handler.addFilter`). Avant de décider de " "traiter un message plus loin, les enregistreurs et les gestionnaires " "consultent tous leurs filtres pour obtenir l'autorisation. Si un filtre " "renvoie une valeur ``False``, le traitement du message est arrêté." #: howto/logging.rst:1009 msgid "" "The basic :class:`Filter` functionality allows filtering by specific logger " "name. If this feature is used, messages sent to the named logger and its " "children are allowed through the filter, and all others dropped." msgstr "" "La fonctionnalité de base :class:`Filter` permet de filtrer par nom de " "*logger* spécifique. Si cette fonctionnalité est utilisée, les messages " "envoyés à l'enregistreur nommé et à ses enfants sont autorisés via le filtre " "et tous les autres sont abandonnés." #: howto/logging.rst:1017 msgid "Exceptions raised during logging" msgstr "Exceptions levées par la journalisation" #: howto/logging.rst:1019 msgid "" "The logging package is designed to swallow exceptions which occur while " "logging in production. This is so that errors which occur while handling " "logging events - such as logging misconfiguration, network or other similar " "errors - do not cause the application using logging to terminate prematurely." msgstr "" "Le paquet de journalisation est conçu pour ne pas faire apparaître les " "exceptions qui se produisent lors de la journalisation en production. Il " "s'agit de sorte que les erreurs qui se produisent lors de la gestion des " "événements de journalisation (telles qu'une mauvaise configuration de la " "journalisation, une erreur réseau ou d'autres erreurs similaires) ne " "provoquent pas l'arrêt de l'application utilisant la journalisation." #: howto/logging.rst:1024 msgid "" ":class:`SystemExit` and :class:`KeyboardInterrupt` exceptions are never " "swallowed. Other exceptions which occur during the :meth:`~Handler.emit` " "method of a :class:`Handler` subclass are passed to its :meth:`~Handler." "handleError` method." msgstr "" "Les exceptions :class:`SystemExit` et :class:`KeyboardInterrupt` ne sont " "jamais passées sous silence. Les autres exceptions qui se produisent pendant " "la méthode :meth:`~Handler.emit` d'une sous-classe :class:`Handler` sont " "passées à sa méthode :meth:`~Handler.handleError`." #: howto/logging.rst:1029 msgid "" "The default implementation of :meth:`~Handler.handleError` in :class:" "`Handler` checks to see if a module-level variable, :data:`raiseExceptions`, " "is set. If set, a traceback is printed to :data:`sys.stderr`. If not set, " "the exception is swallowed." msgstr "" "L'implémentation par défaut de :meth:`~Handler.handleError` dans la classe :" "class:`Handler` vérifie si une variable au niveau du module, :data:" "`raiseExceptions`, est définie. Si cette valeur est définie, la trace de la " "pile d'appels est affichée sur :data:`sys.stderr`. Si elle n'est pas " "définie, l'exception est passée sous silence." #: howto/logging.rst:1034 msgid "" "The default value of :data:`raiseExceptions` is ``True``. This is because " "during development, you typically want to be notified of any exceptions that " "occur. It's advised that you set :data:`raiseExceptions` to ``False`` for " "production usage." msgstr "" "La valeur par défaut de :data:`raiseExceptions` est ``True``. C'est parce " "que pendant le développement, vous voulez généralement être notifié de " "toutes les exceptions qui se produisent. Il est conseillé de définir :data:" "`raiseExceptions` à ``False`` pour une utilisation en production." #: howto/logging.rst:1044 msgid "Using arbitrary objects as messages" msgstr "Utilisation d'objets arbitraires comme messages" #: howto/logging.rst:1046 msgid "" "In the preceding sections and examples, it has been assumed that the message " "passed when logging the event is a string. However, this is not the only " "possibility. You can pass an arbitrary object as a message, and its :meth:" "`~object.__str__` method will be called when the logging system needs to " "convert it to a string representation. In fact, if you want to, you can " "avoid computing a string representation altogether - for example, the :class:" "`~handlers.SocketHandler` emits an event by pickling it and sending it over " "the wire." msgstr "" "Dans les sections et exemples précédents, il a été supposé que le message " "passé lors de la journalisation de l'événement est une chaîne. Cependant, ce " "n'est pas la seule possibilité. Vous pouvez passer un objet arbitraire en " "tant que message et sa méthode :meth:`~object.__str__` est appelée lorsque " "le système de journalisation doit le convertir en une représentation sous " "forme de chaîne. En fait, si vous le souhaitez, vous pouvez complètement " "éviter de calculer une représentation sous forme de chaîne. Par exemple, les " "gestionnaires :class:`~handlers.SocketHandler` émettent un événement en lui " "appliquant *pickle* et en l'envoyant sur le réseau." #: howto/logging.rst:1057 msgid "Optimization" msgstr "Optimisation" #: howto/logging.rst:1059 msgid "" "Formatting of message arguments is deferred until it cannot be avoided. " "However, computing the arguments passed to the logging method can also be " "expensive, and you may want to avoid doing it if the logger will just throw " "away your event. To decide what to do, you can call the :meth:`~Logger." "isEnabledFor` method which takes a level argument and returns true if the " "event would be created by the Logger for that level of call. You can write " "code like this::" msgstr "" "La mise en forme des arguments de message est différée jusqu'à ce qu'elle ne " "puisse pas être évitée. Toutefois, le calcul des arguments passés à la " "méthode de journalisation peut également être coûteux et vous voudrez peut-" "être éviter de le faire si l'enregistreur va simplement jeter votre " "événement. Pour décider de ce qu'il faut faire, vous pouvez appeler la " "méthode :meth:`~Logger.isEnabledFor` qui prend en argument le niveau et " "renvoie ``True`` si un événement est créé par l'enregistreur pour ce niveau " "d'appel. Vous pouvez écrire un code qui ressemble à ça ::" #: howto/logging.rst:1071 msgid "" "so that if the logger's threshold is set above ``DEBUG``, the calls to :func:" "`expensive_func1` and :func:`expensive_func2` are never made." msgstr "" "de sorte que si le seuil du journaliseur est défini au-dessus de ``DEBUG``, " "les appels à :func:`expensive_func1` et :func:`expensive_func2` ne sont " "jamais faits." #: howto/logging.rst:1074 msgid "" "In some cases, :meth:`~Logger.isEnabledFor` can itself be more expensive " "than you'd like (e.g. for deeply nested loggers where an explicit level is " "only set high up in the logger hierarchy). In such cases (or if you want to " "avoid calling a method in tight loops), you can cache the result of a call " "to :meth:`~Logger.isEnabledFor` in a local or instance variable, and use " "that instead of calling the method each time. Such a cached value would only " "need to be recomputed when the logging configuration changes dynamically " "while the application is running (which is not all that common)." msgstr "" "Dans certains cas, :meth:`~Logger.isEnabledFor` peut être plus coûteux que " "vous le souhaitez (par exemple pour les enregistreurs profondément imbriqués " "où un niveau explicite n'est défini que dans la hiérarchie des " "enregistreurs). Dans de tels cas (ou si vous souhaitez éviter d'appeler une " "méthode dans des boucles optimisées), vous pouvez mettre en cache le " "résultat d'un appel à :meth:`~Logger.isEnabledFor` dans une variable locale " "ou d'instance, et l'utiliser au lieu d'appeler la méthode à chaque fois. Une " "telle valeur mise en cache ne doit être recalculée que lorsque la " "configuration de journalisation change dynamiquement pendant l'exécution de " "l'application (ce qui est rarement le cas)." #: howto/logging.rst:1083 msgid "" "There are other optimizations which can be made for specific applications " "which need more precise control over what logging information is collected. " "Here's a list of things you can do to avoid processing during logging which " "you don't need:" msgstr "" "Il existe d'autres optimisations qui peuvent être faites pour des " "applications spécifiques qui nécessitent un contrôle plus précis sur les " "informations de journalisation collectées. Voici une liste de choses que " "vous pouvez faire pour éviter le traitement pendant la journalisation dont " "vous n'avez pas besoin :" #: howto/logging.rst:1089 msgid "What you don't want to collect" msgstr "Ce que vous ne voulez pas collecter" #: howto/logging.rst:1089 msgid "How to avoid collecting it" msgstr "Comment éviter de le collecter" #: howto/logging.rst:1091 msgid "Information about where calls were made from." msgstr "Informations sur l'endroit où les appels ont été faits." #: howto/logging.rst:1091 msgid "" "Set ``logging._srcfile`` to ``None``. This avoids calling :func:`sys." "_getframe`, which may help to speed up your code in environments like PyPy " "(which can't speed up code that uses :func:`sys._getframe`)." msgstr "" "Définissez ``logging._srcfile`` à ``None``. Cela évite d'appeler :func:`sys." "_getframe`, qui peut aider à accélérer votre code dans des environnements " "comme PyPy (qui ne peut pas accélérer le code qui utilise :func:`sys." "_getframe`)." #: howto/logging.rst:1097 msgid "Threading information." msgstr "Informations de *threading*." #: howto/logging.rst:1097 msgid "Set ``logging.logThreads`` to ``False``." msgstr "Mettez ``logging.logThreads`` à ``False``." #: howto/logging.rst:1099 msgid "Current process ID (:func:`os.getpid`)" msgstr "Identifiant du processus courant (résultat de :func:`os.getpid`)" #: howto/logging.rst:1099 msgid "Set ``logging.logProcesses`` to ``False``." msgstr "Mettez ``logging.logProcesses`` à ``False``." #: howto/logging.rst:1101 msgid "" "Current process name when using ``multiprocessing`` to manage multiple " "processes." msgstr "" "Nom du processus actuel, si vous vous servez de ``multiprocessing`` pour " "gérer plusieurs processus à la fois" #: howto/logging.rst:1101 msgid "Set ``logging.logMultiprocessing`` to ``False``." msgstr "Mettez ``logging.logMultiProcessing`` à ``False``." #: howto/logging.rst:1105 msgid "" "Also note that the core logging module only includes the basic handlers. If " "you don't import :mod:`logging.handlers` and :mod:`logging.config`, they " "won't take up any memory." msgstr "" "Notez également que le module de journalisation principale inclut uniquement " "les gestionnaires de base. Si vous n'importez pas :mod:`logging.handlers` " "et :mod:`logging.config`, ils ne prendront pas de mémoire." #: howto/logging.rst:1112 msgid "Module :mod:`logging`" msgstr "Module :mod:`logging`" #: howto/logging.rst:1112 msgid "API reference for the logging module." msgstr "Référence d'API pour le module de journalisation." #: howto/logging.rst:1115 msgid "Module :mod:`logging.config`" msgstr "Module :mod:`logging.config`" #: howto/logging.rst:1115 msgid "Configuration API for the logging module." msgstr "API de configuration pour le module de journalisation." #: howto/logging.rst:1118 msgid "Module :mod:`logging.handlers`" msgstr "Module :mod:`logging.handlers`" #: howto/logging.rst:1118 msgid "Useful handlers included with the logging module." msgstr "Gestionnaires utiles inclus avec le module de journalisation." #: howto/logging.rst:1120 msgid ":ref:`A logging cookbook `" msgstr ":ref:`A logging cookbook `" #~ msgid "Process information." #~ msgstr "Informations sur le processus."