diff --git a/TRANSLATORS b/TRANSLATORS index ff5e80aca6..c012ce0cc2 100644 --- a/TRANSLATORS +++ b/TRANSLATORS @@ -24,6 +24,7 @@ Martín Gaitán (@mgaitan) Manuel Kaufmann (@humitos) Pablo Lobariñas (@Qkolnek) Alvar Maciel (@alvarmaciel @amaciel) +Briceida Mariscal (@BriceidaMars) Juan Sebastián Marquez (@juansemarquez) Cristián Maureira-Fredes (@cmaureir) Cristian Andrés Maximiliano Mayuti (@mayuti) diff --git a/dictionaries/howto_logging.txt b/dictionaries/howto_logging.txt new file mode 100644 index 0000000000..2c6361b695 --- /dev/null +++ b/dictionaries/howto_logging.txt @@ -0,0 +1,6 @@ +PyPy +logging +syslog +deshabilitación +desconfiguran +superconjunto diff --git a/howto/logging.po b/howto/logging.po index 7c43f03163..c797e8b44d 100644 --- a/howto/logging.po +++ b/howto/logging.po @@ -1,37 +1,39 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. -# Maintained by the python-doc-es workteam. +# Maintained by the python-doc-es workteam. # docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ # Check https://github.com/PyCampES/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-06 11:59-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-05-29 17:19-0700\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3.1\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es_US\n" #: ../Doc/howto/logging.rst:3 msgid "Logging HOWTO" -msgstr "" +msgstr "HOWTO Hacer Registros (*Logging*)" #: ../Doc/howto/logging.rst:0 msgid "Author" -msgstr "" +msgstr "Autor" #: ../Doc/howto/logging.rst:5 msgid "Vinay Sajip " -msgstr "" +msgstr "Vinay Sajip " #: ../Doc/howto/logging.rst:12 msgid "Basic Logging Tutorial" -msgstr "" +msgstr "Tutorial Básico de *Logging*" #: ../Doc/howto/logging.rst:14 msgid "" @@ -43,10 +45,18 @@ msgid "" "which the developer ascribes to the event; the importance can also be called " "the *level* or *severity*." msgstr "" +"*Logging* es un medio de rastrear los eventos que ocurren cuando se ejecuta " +"algún software. El desarrollador del software agrega llamadas de registro a " +"su código para indicar que ciertos eventos han ocurrido. Un evento se " +"describe mediante un mensaje descriptivo que puede contener opcionalmente " +"datos variables (es decir, datos que son potencialmente diferentes para cada " +"ocurrencia del evento). Los eventos también tienen una importancia que el " +"desarrollador atribuye al evento; la importancia también puede llamarse el " +"*nivel* o la *severidad*." #: ../Doc/howto/logging.rst:23 msgid "When to use logging" -msgstr "" +msgstr "Cuándo usar *logging*" #: ../Doc/howto/logging.rst:25 msgid "" @@ -55,71 +65,94 @@ msgid "" "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 "" +"*Logging* proporciona un conjunto de funciones convenientes para un uso " +"sencillo de registro. Estas son :func:`debug`, :func:`info`, :func:" +"`warning`, :func:`error` y :func:`critical`. Para determinar cuándo usar el " +"registro, vea la tabla de abajo, que indica, para cada una de las tareas " +"comunes, la mejor herramienta a usar para ello." #: ../Doc/howto/logging.rst:31 msgid "Task you want to perform" -msgstr "" +msgstr "La tarea que quieres realizar" #: ../Doc/howto/logging.rst:31 msgid "The best tool for the task" -msgstr "" +msgstr "La mejor herramienta para la tarea" #: ../Doc/howto/logging.rst:33 msgid "" "Display console output for ordinary usage of a command line script or program" msgstr "" +"Mostrar salidas de la consola para el uso ordinario de un programa o guion " +"(script) de línea de comandos" #: ../Doc/howto/logging.rst:33 msgid ":func:`print`" -msgstr "" +msgstr ":func:`print`" #: ../Doc/howto/logging.rst:37 msgid "" "Report events that occur during normal operation of a program (e.g. for " "status monitoring or fault investigation)" msgstr "" +"Reportar eventos que ocurren durante el funcionamiento normal de un programa " +"(por ejemplo, para la supervisión del estado o la investigación de fallos)" #: ../Doc/howto/logging.rst:37 msgid "" ":func:`logging.info` (or :func:`logging.debug` for very detailed output for " "diagnostic purposes)" msgstr "" +":func:`logging.info` (o :func:`logging.debug` para salidas de registro muy " +"detalladas con fines de diagnóstico)" #: ../Doc/howto/logging.rst:42 msgid "Issue a warning regarding a particular runtime event" msgstr "" +"Emitir una advertencia con respecto a un evento de tiempo de ejecución en " +"particular" #: ../Doc/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` en el código de la biblioteca si el problema es " +"evitable y la aplicación cliente debe ser modificada para eliminar la " +"advertencia" #: ../Doc/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 no hay nada que la aplicación cliente pueda hacer " +"sobre la situación, pero el evento debe ser anotado" #: ../Doc/howto/logging.rst:52 msgid "Report an error regarding a particular runtime event" msgstr "" +"Reportar un error con respecto a un evento particular al tiempo de ejecución" #: ../Doc/howto/logging.rst:52 msgid "Raise an exception" -msgstr "" +msgstr "Lanza una excepción" #: ../Doc/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 "" +"Reporta la supresión de un error sin invocar una excepción (por ejemplo, el " +"manejador de errores en un proceso de servidor de larga duración)" #: ../Doc/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` o :func:`logging.critical` " +"según sea apropiado para el error específico y el dominio de la aplicación" #: ../Doc/howto/logging.rst:62 msgid "" @@ -127,35 +160,40 @@ msgid "" "they are used to track. The standard levels and their applicability are " "described below (in increasing order of severity):" msgstr "" +"Las funciones de registro se denominan según el nivel o la gravedad de los " +"eventos que se utilizan para rastrear. A continuación se describen los " +"niveles estándar y su aplicabilidad (en orden creciente de gravedad):" #: ../Doc/howto/logging.rst:69 ../Doc/howto/logging.rst:846 msgid "Level" -msgstr "" +msgstr "Nivel" #: ../Doc/howto/logging.rst:69 msgid "When it's used" -msgstr "" +msgstr "Cuando es usado" #: ../Doc/howto/logging.rst:71 ../Doc/howto/logging.rst:856 msgid "``DEBUG``" -msgstr "" +msgstr "``DEBUG``" #: ../Doc/howto/logging.rst:71 msgid "" "Detailed information, typically of interest only when diagnosing problems." msgstr "" +"Información detallada, típicamente de interés sólo durante el diagnóstico de " +"problemas." #: ../Doc/howto/logging.rst:74 ../Doc/howto/logging.rst:854 msgid "``INFO``" -msgstr "" +msgstr "``INFO``" #: ../Doc/howto/logging.rst:74 msgid "Confirmation that things are working as expected." -msgstr "" +msgstr "Confirmación de que las cosas están funcionando como se esperaba." #: ../Doc/howto/logging.rst:77 ../Doc/howto/logging.rst:852 msgid "``WARNING``" -msgstr "" +msgstr "``WARNING``" #: ../Doc/howto/logging.rst:77 msgid "" @@ -163,26 +201,33 @@ msgid "" "problem in the near future (e.g. 'disk space low'). The software is still " "working as expected." msgstr "" +"Un indicio de que algo inesperado sucedió, o indicativo de algún problema en " +"el futuro cercano (por ejemplo, \"espacio de disco bajo\"). El software " +"sigue funcionando como se esperaba." #: ../Doc/howto/logging.rst:82 ../Doc/howto/logging.rst:850 msgid "``ERROR``" -msgstr "" +msgstr "``ERROR``" #: ../Doc/howto/logging.rst:82 msgid "" "Due to a more serious problem, the software has not been able to perform " "some function." msgstr "" +"Debido a un problema más grave, el software no ha sido capaz de realizar " +"alguna función." #: ../Doc/howto/logging.rst:85 ../Doc/howto/logging.rst:848 msgid "``CRITICAL``" -msgstr "" +msgstr "``CRITICAL``" #: ../Doc/howto/logging.rst:85 msgid "" "A serious error, indicating that the program itself may be unable to " "continue running." msgstr "" +"Un grave error, que indica que el programa en sí mismo puede ser incapaz de " +"seguir funcionando." #: ../Doc/howto/logging.rst:89 msgid "" @@ -190,6 +235,9 @@ msgid "" "and above will be tracked, unless the logging package is configured to do " "otherwise." msgstr "" +"El nivel por defecto es ``WARNING``, lo que significa que sólo los eventos " +"de este nivel y superiores serán rastreados, a menos que el paquete de " +"registro esté configurado para hacer lo contrario." #: ../Doc/howto/logging.rst:93 msgid "" @@ -197,18 +245,21 @@ msgid "" "of handling tracked events is to print them to the console. Another common " "way is to write them to a disk file." msgstr "" +"Los eventos que se rastrean pueden ser manejados en diferentes maneras. La " +"forma más simple de manejar los eventos rastreados es imprimirlos en la " +"consola o terminal. Otra forma común es escribirlos en un archivo de disco." #: ../Doc/howto/logging.rst:101 msgid "A simple example" -msgstr "" +msgstr "Un simple ejemplo" #: ../Doc/howto/logging.rst:103 msgid "A very simple example is::" -msgstr "" +msgstr "Un ejemplo muy simple es::" #: ../Doc/howto/logging.rst:109 msgid "If you type these lines into a script and run it, you'll see:" -msgstr "" +msgstr "Si escribes estas líneas en un script y lo ejecutas, verás:" #: ../Doc/howto/logging.rst:115 msgid "" @@ -219,10 +270,17 @@ msgid "" "explained later. The actual output can be formatted quite flexibly if you " "need that; formatting options will also be explained later." msgstr "" +"impreso en la consola. El mensaje ``INFO`` no aparece porque el nivel por " +"defecto es ``WARNING``. El mensaje impreso incluye la indicación del nivel y " +"la descripción del evento proporcionado en la llamada de registro, es decir, " +"\"¡Cuidado!\". No te preocupes por la parte de la ‘root’ por ahora: se " +"explicará más adelante. La salida real puede ser formateada con bastante " +"flexibilidad si lo necesita; las opciones de formato también se explicarán " +"más adelante." #: ../Doc/howto/logging.rst:124 msgid "Logging to a file" -msgstr "" +msgstr "Logging a un archivo" #: ../Doc/howto/logging.rst:126 msgid "" @@ -231,12 +289,18 @@ msgid "" "Python interpreter, and don't just continue from the session described " "above::" msgstr "" +"Una situación muy común es la de registrar archivos de log, así que veamos " +"eso a continuación. Asegúrese de intentar lo siguiente en un intérprete de " +"Python recién iniciado, y no sólo continúe de la sesión descrita " +"anteriormente::" #: ../Doc/howto/logging.rst:136 msgid "" "And now if we open the file and look at what we have, we should find the log " "messages:" msgstr "" +"Y ahora si abrimos el archivo y miramos lo que tenemos, deberíamos encontrar " +"los mensajes de registro:" #: ../Doc/howto/logging.rst:145 msgid "" @@ -244,17 +308,24 @@ msgid "" "threshold for tracking. In this case, because we set the threshold to " "``DEBUG``, all of the messages were printed." msgstr "" +"Este ejemplo también muestra cómo se puede establecer el nivel de registro " +"que actúa como umbral para el rastreo. En este caso, como establecimos el " +"umbral en ``DEBUG``, todos los mensajes fueron impresos." #: ../Doc/howto/logging.rst:149 msgid "" "If you want to set the logging level from a command-line option such as:" msgstr "" +"Si quieres establecer el nivel de registro desde una opción de línea de " +"comandos como:" #: ../Doc/howto/logging.rst:155 msgid "" "and you have the value of the parameter passed for ``--log`` in some " "variable *loglevel*, you can use::" msgstr "" +"y tienes el valor del parámetro pasado por ``--log`` en alguna variable " +"*loglevel*, puedes usar::" #: ../Doc/howto/logging.rst:160 msgid "" @@ -262,6 +333,9 @@ msgid "" "argument. You may want to error check any user input value, perhaps as in " "the following example::" msgstr "" +"para obtener el valor que pasarás a :func:`basicConfig` mediante el " +"argumento *level*. Puede que quieras comprobar un error por cualquier valor " +"de entrada del usuario, quizás como en el siguiente ejemplo::" #: ../Doc/howto/logging.rst:172 msgid "" @@ -270,6 +344,10 @@ msgid "" "configuration facility, only the first call will actually do anything: " "subsequent calls are effectively no-ops." msgstr "" +"La llamada a :func:`basicConfig` debería venir *antes* de cualquier llamada " +"a :func:`debug`, :func:`info` etc. Como se pretende hacer una simple " +"facilidad de configuración única, sólo la primera llamada hará realmente " +"algo: las llamadas subsiguientes son efectivamente no-ops." #: ../Doc/howto/logging.rst:177 msgid "" @@ -278,26 +356,35 @@ msgid "" "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 ejecutas el script anterior varias veces, los mensajes de las ejecuciones " +"sucesivas se añaden al archivo *example.log*. Si quieres que cada ejecución " +"se inicie de nuevo, sin recordar los mensajes de ejecuciones anteriores, " +"puedes especificar el argumento *filemode*, cambiando la llamada en el " +"ejemplo anterior a::" #: ../Doc/howto/logging.rst:184 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 impresión será la misma que antes, pero el archivo de registro ya no se " +"adjunta, por lo que los mensajes de las ejecuciones anteriores se pierden." #: ../Doc/howto/logging.rst:189 msgid "Logging from multiple modules" -msgstr "" +msgstr "*Logging* de múltiples módulos" #: ../Doc/howto/logging.rst:191 msgid "" "If your program consists of multiple modules, here's an example of how you " "could organize logging in it::" msgstr "" +"Si su programa consiste de múltiples módulos, aquí hay un ejemplo de cómo " +"podría organizar el inicio de sesión en él::" #: ../Doc/howto/logging.rst:215 msgid "If you run *myapp.py*, you should see this in *myapp.log*:" -msgstr "" +msgstr "Si ejecutas *myapp.py*, deberías ver esto en *myapp.log*:" #: ../Doc/howto/logging.rst:223 msgid "" @@ -309,20 +396,30 @@ msgid "" "to refer to the documentation beyond the tutorial level -- see :ref:`logging-" "advanced-tutorial`." msgstr "" +"que es lo que esperabas ver. Puedes generalizar esto a múltiples módulos, " +"usando el modelo en *mylib.py*. Ten en cuenta que para este simple patrón de " +"uso, no sabrás, mirando en el archivo de registro, *donde* en tu aplicación " +"vinieron tus mensajes, aparte de mirar la descripción del evento. Si quieres " +"rastrear la ubicación de tus mensajes, tendrás que consultar la " +"documentación más allá del nivel del tutorial -- ver :ref:`logging-advanced-" +"tutorial`." #: ../Doc/howto/logging.rst:233 msgid "Logging variable data" -msgstr "" +msgstr "Registrar datos de variables" #: ../Doc/howto/logging.rst:235 msgid "" "To log variable data, use a format string for the event description message " "and append the variable data as arguments. For example::" msgstr "" +"Para registrar los datos de variables, utilice una cadena de formato para el " +"mensaje de descripción del evento y añada los datos variables como " +"argumentos. Por ejemplo::" #: ../Doc/howto/logging.rst:241 msgid "will display:" -msgstr "" +msgstr "se mostrará:" #: ../Doc/howto/logging.rst:247 msgid "" @@ -333,20 +430,29 @@ msgid "" "options *are* supported, but exploring them is outside the scope of this " "tutorial: see :ref:`formatting-styles` for more information." msgstr "" +"Como puedes ver, la fusión de datos de variables en el mensaje de " +"descripción de eventos utiliza el viejo estilo % de formato de cadena de " +"caracteres. Esto es para compatibilidad retrospectiva : el paquete de " +"registro precede las nuevas opciones de formato como :meth:`str.format` y :" +"class:`string.Template`. Estas nuevas opciones de formato *son* compatibles, " +"pero explorarlas está fuera del alcance de este tutorial: ver :ref:" +"`formatting-styles` para más información." #: ../Doc/howto/logging.rst:256 msgid "Changing the format of displayed messages" -msgstr "" +msgstr "Cambiar el formato de los mensajes mostrados" #: ../Doc/howto/logging.rst:258 msgid "" "To change the format which is used to display messages, you need to specify " "the format you want to use::" msgstr "" +"Para cambiar el formato que se utiliza para visualizar los mensajes, es " +"necesario especificar el formato que se desea utilizar::" #: ../Doc/howto/logging.rst:267 msgid "which would print:" -msgstr "" +msgstr "que se imprimirá:" #: ../Doc/howto/logging.rst:275 msgid "" @@ -357,20 +463,28 @@ msgid "" "including variable data) and perhaps to display when the event occurred. " "This is described in the next section." msgstr "" +"Noten que la ‘root’ que aparecía en los ejemplos anteriores ha desaparecido. " +"Para un conjunto completo de cosas que pueden aparecer en formato de " +"cadenas, puede consultar la documentación de :ref:`logrecord-attributes`, " +"pero para un uso sencillo, sólo necesita el *levelname* (gravedad), " +"*message* (descripción del evento, incluyendo los datos variables) y tal vez " +"mostrar cuándo ocurrió el evento. Esto se describe en la siguiente sección." #: ../Doc/howto/logging.rst:284 msgid "Displaying the date/time in messages" -msgstr "" +msgstr "Visualización de la fecha/hora en los mensajes" #: ../Doc/howto/logging.rst:286 msgid "" "To display the date and time of an event, you would place '%(asctime)s' in " "your format string::" msgstr "" +"Para mostrar la fecha y la hora de un evento, usted colocaría '%(asctime)s' " +"en su cadena de formato::" #: ../Doc/howto/logging.rst:293 msgid "which should print something like this:" -msgstr "" +msgstr "que debería imprimir algo como esto:" #: ../Doc/howto/logging.rst:299 msgid "" @@ -378,20 +492,26 @@ msgid "" "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 "" +"El formato por defecto para la visualización de la fecha/hora (mostrado " +"arriba) es como ISO8601 o :rfc:`3339`. Si necesita más control sobre el " +"formato de la fecha/hora, proporcione un argumento *datefmt* a " +"``basicConfig``, como en este ejemplo::" #: ../Doc/howto/logging.rst:307 msgid "which would display something like this:" -msgstr "" +msgstr "que mostraría algo como esto:" #: ../Doc/howto/logging.rst:313 msgid "" "The format of the *datefmt* argument is the same as supported by :func:`time." "strftime`." msgstr "" +"El formato del argumento *datefmt* es el mismo que el soportado por :func:" +"`time.strftime`." #: ../Doc/howto/logging.rst:318 msgid "Next Steps" -msgstr "" +msgstr "Próximos pasos" #: ../Doc/howto/logging.rst:320 msgid "" @@ -401,6 +521,11 @@ msgid "" "time in reading the following sections. If you're ready for that, grab some " "of your favourite beverage and carry on." msgstr "" +"Eso concluye el tutorial básico. Debería ser suficiente para ponerte en " +"marcha con el registro. Hay mucho más que el paquete de registro ofrece, " +"pero para obtener lo mejor de él, tendrá que invertir un poco más de su " +"tiempo en la lectura de las siguientes secciones. Si estás listo para eso, " +"toma un poco de tu bebida favorita y sigue adelante." #: ../Doc/howto/logging.rst:326 msgid "" @@ -410,6 +535,11 @@ msgid "" "group (available at https://groups.google.com/forum/#!forum/comp.lang." "python) and you should receive help before too long." msgstr "" +"Si sus necesidades de registro son sencillas, utilice los ejemplos previos " +"para incorporar el registro en sus propios scripts, y si tiene problemas o " +"no entiende algo, por favor publique una pregunta en el grupo Usenet de comp." +"lang.python (disponible en https://groups.google.com/forum/#!forum/comp.lang." +"python) y debería recibir ayuda antes de que transcurra demasiado tiempo." #: ../Doc/howto/logging.rst:332 msgid "" @@ -417,42 +547,57 @@ msgid "" "slightly more advanced/in-depth tutorial than the basic one above. After " "that, you can take a look at the :ref:`logging-cookbook`." msgstr "" +"¿Todavía esta aquí? Puedes seguir leyendo las siguientes secciones, que " +"proporcionan un tutorial un poco más avanzado y profundo que el básico de " +"arriba. Después de eso, puedes echar un vistazo al :ref:`logging-cookbook`." #: ../Doc/howto/logging.rst:340 msgid "Advanced Logging Tutorial" -msgstr "" +msgstr "Tutorial de registro avanzado" #: ../Doc/howto/logging.rst:342 msgid "" "The logging library takes a modular approach and offers several categories " "of components: loggers, handlers, filters, and formatters." msgstr "" +"La biblioteca de logging adopta un enfoque modular y ofrece varias " +"categorías de componentes: registradores, gestores, filtros y formateadores." #: ../Doc/howto/logging.rst:345 msgid "Loggers expose the interface that application code directly uses." msgstr "" +"Los registradores exponen la interfaz que el código de la aplicación utiliza " +"directamente." #: ../Doc/howto/logging.rst:346 msgid "" "Handlers send the log records (created by loggers) to the appropriate " "destination." msgstr "" +"Los gestores envían los registros de log (creados por los registradores) al " +"destino apropiado." #: ../Doc/howto/logging.rst:348 msgid "" "Filters provide a finer grained facility for determining which log records " "to output." msgstr "" +"Los filtros proporcionan una instalación de grano más fino para determinar " +"qué registros de log se deben producir." #: ../Doc/howto/logging.rst:350 msgid "Formatters specify the layout of log records in the final output." msgstr "" +"Los formatos especifican la disposición de los archivos de log en el " +"resultado final." #: ../Doc/howto/logging.rst:352 msgid "" "Log event information is passed between loggers, handlers, filters and " "formatters in a :class:`LogRecord` instance." msgstr "" +"La información de los eventos de registro se pasa entre los registradores, " +"gestores, filtros y formateadores en una instancia :class:`LogRecord`." #: ../Doc/howto/logging.rst:355 msgid "" @@ -464,18 +609,32 @@ msgid "" "want, and indicate the area of an application in which a logged message " "originates." msgstr "" +"El registro se realiza llamando a métodos en instancias de la clase :class:" +"`Logger` (de aquí en adelante llamada :dfn:`loggers`). Cada instancia tiene " +"un nombre, y se organizan conceptualmente en una jerarquía de espacios de " +"nombres utilizando puntos (puntos) como separadores. Por ejemplo, un " +"registrador llamado \"scan\" es el padre de los registradores \"scan.text\", " +"\"scan.html\" y \"scan.pdf\". Los nombres de los registradores pueden ser " +"cualquier cosa que se desee, e indican el área de una aplicación en la que " +"se origina un mensaje registrado." #: ../Doc/howto/logging.rst:362 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 "" +"Una buena convención que se puede utilizar para nombrar a los registradores " +"es utilizar un registrador a nivel de módulo, en cada módulo que utilice el " +"registro, llamado de la siguiente manera::" #: ../Doc/howto/logging.rst:367 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 "" +"Esto significa que los nombres de los registradores rastrean la jerarquía de " +"paquetes/módulos, y es intuitivamente obvio donde se registran los eventos " +"sólo a partir del nombre del registrador." #: ../Doc/howto/logging.rst:370 msgid "" @@ -485,6 +644,11 @@ msgid "" "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 raíz de la jerarquía de los registradores se llama root *logger*. Ese es " +"el registrador usado por las funciones :func:`debug`, :func:`info`, :func:" +"`warning`, :func:`error` y :func:`critícal`, que sólo llaman al mismo método " +"del registrador raíz. Las funciones y los métodos tienen las mismas firmas. " +"El nombre del root *logger* se imprime como ‘root’ en la salida registrada." #: ../Doc/howto/logging.rst:376 msgid "" @@ -496,6 +660,14 @@ msgid "" "destination class if you have special requirements not met by any of the " "built-in handler classes." msgstr "" +"Por supuesto, es posible registrar mensajes a diferentes destinos. El " +"paquete incluye soporte para escribir mensajes de registro en archivos, " +"ubicaciones HTTP GET/POST, correo electrónico a través de SMTP, sockets " +"genéricos, colas o mecanismos de registro específicos del sistema operativo " +"como syslog o el registro de eventos de Windows NT. Los destinos son " +"servidos por clases :dfn:`handler`. Puedes crear tu propia clase de destino " +"de registro si tienes requisitos especiales que no se cumplen con ninguna de " +"las clases de gestor incorporadas." #: ../Doc/howto/logging.rst:383 msgid "" @@ -508,10 +680,20 @@ msgid "" "displayed message before delegating to the root logger to do the actual " "message output." msgstr "" +"Por defecto, no se establece ningún destino para los mensajes de registro. " +"Puede especificar un destino (como consola o archivo) usando :func:" +"`basicConfig` como en los ejemplos del tutorial. Si llama a las funciones :" +"func:`debug`, :func:`info`, :func:`warning`, :func:`error` y :func:" +"`critical`, ellas comprobarán si no hay ningún destino establecido; y si no " +"hay ninguno establecido, establecerán un destino de la consola (``sys." +"stderr``) y un formato por defecto para el mensaje mostrado antes de delegar " +"en el registrador root para hacer la salida real del mensaje." #: ../Doc/howto/logging.rst:391 msgid "The default format set by :func:`basicConfig` for messages is:" msgstr "" +"El formato por defecto establecido por :func:`basicConfig` para los mensajes " +"es:" #: ../Doc/howto/logging.rst:397 msgid "" @@ -519,20 +701,25 @@ msgid "" "the *format* keyword argument. For all options regarding how a format string " "is constructed, see :ref:`formatter-objects`." msgstr "" +"Puedes cambiar esto pasando una cadena de formato a :func:`basicConfig` con " +"el argumento de la palabra clave *format*. Para todas las opciones relativas " +"a cómo se construye una cadena de formato, ver :ref:`formatter-objects`." #: ../Doc/howto/logging.rst:402 msgid "Logging Flow" -msgstr "" +msgstr "Flujo de Registro" #: ../Doc/howto/logging.rst:404 msgid "" "The flow of log event information in loggers and handlers is illustrated in " "the following diagram." msgstr "" +"En el siguiente diagrama se ilustra el flujo de información de los eventos " +"de registro en los registradores y gestores." #: ../Doc/howto/logging.rst:410 msgid "Loggers" -msgstr "" +msgstr "Registradores" #: ../Doc/howto/logging.rst:412 msgid "" @@ -543,16 +730,25 @@ msgid "" "Third, logger objects pass along relevant log messages to all interested log " "handlers." msgstr "" +"Los objetos de :class:`Logger` tienen un trabajo triple. Primero, exponen " +"varios métodos al código de la aplicación para que las aplicaciones puedan " +"registrar mensajes en tiempo de ejecución. Segundo, los objetos *logger* " +"determinan sobre qué mensajes de registro actuar en base de la severidad (la " +"facilidad de filtrado por defecto) o los objetos de filtro. Tercero, los " +"objetos registradores pasan los mensajes de registro relevantes a todos los " +"manejadores de registro interesados." #: ../Doc/howto/logging.rst:418 msgid "" "The most widely used methods on logger objects fall into two categories: " "configuration and message sending." msgstr "" +"Los métodos más utilizados en los objetos de registro se dividen en dos " +"categorías: configuración y envío de mensajes." #: ../Doc/howto/logging.rst:421 msgid "These are the most common configuration methods:" -msgstr "" +msgstr "Estos son los métodos de configuración más comunes:" #: ../Doc/howto/logging.rst:423 msgid "" @@ -562,6 +758,11 @@ msgid "" "INFO, the logger will handle only INFO, WARNING, ERROR, and CRITICAL " "messages and will ignore DEBUG messages." msgstr "" +":meth:`Logger.setLevel` especifica el mensaje de registro de menor gravedad " +"que un registrador manejará, donde debug es el nivel de gravedad incorporado " +"más bajo y *critical* es el de mayor gravedad incorporado. Por ejemplo, si " +"el nivel de severidad es INFO, el registrador sólo manejará los mensajes " +"INFO, WARNING, ERROR y CRITICAL e ignorará los mensajes DEBUG." #: ../Doc/howto/logging.rst:429 msgid "" @@ -569,6 +770,9 @@ msgid "" "handler objects from the logger object. Handlers are covered in more detail " "in :ref:`handler-basic`." msgstr "" +":meth:`Logger.addHandler` y :meth:`Logger.removeHandler` agregan y quitan " +"los objetos *handler* del objeto *logger*. Los manejadores (*handlers*) se " +"tratan con más detalle en :ref:`handler-basic`." #: ../Doc/howto/logging.rst:433 msgid "" @@ -576,17 +780,24 @@ msgid "" "filter objects from the logger object. Filters are covered in more detail " "in :ref:`filter`." msgstr "" +":meth:`Logger.addFilter` y :meth:`Logger.removeFilter` agregan y quitan los " +"objetos de filtro del objeto logger. Los filtros se tratan con más detalle " +"en :ref:`filter`." #: ../Doc/howto/logging.rst:437 msgid "" "You don't need to always call these methods on every logger you create. See " "the last two paragraphs in this section." msgstr "" +"No es necesario que siempre llames a estos métodos en cada registrador que " +"crees. Vea los dos últimos párrafos de esta sección." #: ../Doc/howto/logging.rst:440 msgid "" "With the logger object configured, the following methods create log messages:" msgstr "" +"Con el objeto *logger* configurado, los siguientes métodos crean mensajes de " +"log:" #: ../Doc/howto/logging.rst:442 msgid "" @@ -600,6 +811,16 @@ msgid "" "about a keyword of ``exc_info`` and use it to determine whether to log " "exception information." msgstr "" +":meth:`Logger.debug`, :meth:`Logger.info`, :meth:`Logger.warning`, :meth:" +"`Logger.error`, y :meth:`Logger.critical` todos crean registros de registro " +"con un mensaje y un nivel que corresponde a sus respectivos nombres de " +"método. El mensaje es en realidad una cadena de formato, que puede contener " +"la sintaxis estándar de sustitución de cadenas de ``%s``, ``%d``, ``%f``, y " +"así sucesivamente. El resto de sus argumentos es una lista de objetos que " +"se corresponden con los campos de sustitución del mensaje. Con respecto a " +"``**kwargs``, los métodos de registro sólo se preocupan por una palabra " +"clave de ``exc_info`` y la usan para determinar si registran información de " +"excepción." #: ../Doc/howto/logging.rst:452 msgid "" @@ -607,6 +828,10 @@ msgid "" "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` crea un mensaje de registro similar a :meth:`Logger." +"error`. La diferencia es que :meth:`Logger.exception` vuelca un rastro de " +"pila junto con él. Llama a este método sólo desde un manejador de " +"excepciones." #: ../Doc/howto/logging.rst:456 msgid "" @@ -615,6 +840,10 @@ msgid "" "convenience methods listed above, but this is how to log at custom log " "levels." msgstr "" +":meth:`Logger.log` toma un nivel de log como argumento explícito. Esto es " +"un poco más verboso para el registro de mensajes que usar los métodos de " +"conveniencia de nivel de registro listados arriba, pero así es como se " +"registra en niveles de registro personalizados." #: ../Doc/howto/logging.rst:460 msgid "" @@ -627,6 +856,14 @@ msgid "" "loggers with names of ``foo.bar``, ``foo.bar.baz``, and ``foo.bam`` are all " "descendants of ``foo``." msgstr "" +":func:`getLogger` retorna una referencia a una instancia de *logger* con el " +"nombre especificado si se proporciona, o ``root`` si no. Los nombres son " +"estructuras jerárquicas separadas por períodos. Múltiples llamadas a :func:" +"`getLogger` con el mismo nombre retornarán una referencia al mismo objeto " +"*logger*. Los *loggers* que están más abajo en la lista jerárquica son " +"hijos de los *loggers* que están más arriba en la lista. Por ejemplo, dado " +"un *logger* con un nombre de ``foo``, los *loggers* con nombres de ``foo." +"bar``, ``foo.bar.baz``, y ``foo.bam`` son todos descendientes de ``foo``." #: ../Doc/howto/logging.rst:468 msgid "" @@ -639,6 +876,15 @@ msgid "" "the logger is used to determine whether the event is passed to the logger's " "handlers." msgstr "" +"Los registradores tienen un concepto de *nivel efectivo*. Si un nivel no se " +"establece explícitamente en un registrador, el nivel de su clase padre se " +"utiliza en su lugar como su nivel efectivo. Si el padre no tiene un nivel " +"explícito establecido, *su* padre es examinado, y así sucesivamente - se " +"buscan todos los ancestros hasta que se encuentra un nivel explícitamente " +"establecido. El registrador raíz siempre tiene un conjunto de niveles " +"explícito (``Advertencia`` por defecto). Cuando se decide si se procesa un " +"evento, el nivel efectivo del registrador se utiliza para determinar si el " +"evento se pasa a los manejadores del registrador." #: ../Doc/howto/logging.rst:476 msgid "" @@ -649,10 +895,17 @@ msgid "" "needed. (You can, however, turn off propagation by setting the *propagate* " "attribute of a logger to ``False``.)" msgstr "" +"Los *loggers* inferiores propagan mensajes hasta los gestores asociados con " +"sus *loggers* ancestros. Debido a esto, no es necesario definir y configurar " +"los manejadores para todos los registradores que utiliza una aplicación. " +"Basta con configurar los manejadores para un registrador de nivel superior y " +"crear registradores hijos según sea necesario. (Sin embargo, puedes " +"desactivar la propagación estableciendo el atributo *propagate* de un " +"*logger* en ``False``.)" #: ../Doc/howto/logging.rst:487 msgid "Handlers" -msgstr "" +msgstr "Gestores" #: ../Doc/howto/logging.rst:489 msgid "" @@ -666,6 +919,17 @@ msgid "" "individual handlers where each handler is responsible for sending messages " "of a specific severity to a specific location." msgstr "" +"Los objetos :class:`~logging.Handler` son responsables de enviar los " +"mensajes de registro apropiados (basados en la severidad de los mensajes de " +"registro) al destino especificado por el handler. :class:`Logger` los " +"objetos pueden añadir cero o más objetos *handler* a sí mismos con un " +"método :meth:`~Logger.addHandler`. Como escenario de ejemplo, una " +"aplicación puede querer enviar todos los mensajes de registro a un archivo " +"de registro, todos los mensajes de registro de error o superiores a stdout, " +"y todos los mensajes de crítico a una dirección de correo electrónico. Este " +"escenario requiere tres manejadores individuales donde cada manejador es " +"responsable de enviar mensajes de una severidad específica a una ubicación " +"específica." #: ../Doc/howto/logging.rst:499 msgid "" @@ -673,6 +937,9 @@ msgid "" "handlers`); the tutorials use mainly :class:`StreamHandler` and :class:" "`FileHandler` in its examples." msgstr "" +"La biblioteca estándar incluye bastantes tipos de *handler* (ver :ref:" +"`useful-handlers`); los tutoriales usan principalmente :class:" +"`StreamHandler` y :class:`FileHandler` en sus ejemplos." #: ../Doc/howto/logging.rst:503 msgid "" @@ -681,6 +948,11 @@ msgid "" "application developers who are using the built-in handler objects (that is, " "not creating custom handlers) are the following configuration methods:" msgstr "" +"Hay muy pocos métodos en un manejador para que los desarrolladores de " +"aplicaciones se preocupen. Los únicos métodos de manejador que parecen " +"relevantes para los desarrolladores de aplicaciones que utilizan los objetos " +"de manejador incorporados (es decir, que no crean manejadores " +"personalizados) son los siguientes métodos de configuración:" #: ../Doc/howto/logging.rst:508 msgid "" @@ -691,18 +963,28 @@ msgid "" "level set in each handler determines which messages that handler will send " "on." msgstr "" +"El método :meth:`~Handler.setLevel`, al igual que en los objetos de " +"*logger*, especifica la menor gravedad que será enviada al destino " +"apropiado. ¿Por qué hay dos métodos :func:`setLevel`? El nivel establecido " +"en el registrador determina qué gravedad de los mensajes pasará a sus " +"manejadores. El nivel establecido en cada manejador determina qué mensajes " +"enviará ese manejador." #: ../Doc/howto/logging.rst:514 msgid "" ":meth:`~Handler.setFormatter` selects a Formatter object for this handler to " "use." msgstr "" +":meth:`~Handler.setFormatter` selecciona un objeto *Formatter* para que este " +"*handler* lo use." #: ../Doc/howto/logging.rst:517 msgid "" ":meth:`~Handler.addFilter` and :meth:`~Handler.removeFilter` respectively " "configure and deconfigure filter objects on handlers." msgstr "" +":meth:`~Handler.addFilter` y :meth:`~Handler.removeFilter` respectivamente " +"configuran y desconfiguran los objetos del filtro en los handlers." #: ../Doc/howto/logging.rst:520 msgid "" @@ -711,10 +993,14 @@ msgid "" "the interface that all handlers should have and establishes some default " "behavior that child classes can use (or override)." msgstr "" +"El código de la aplicación no debe instanciar directamente y usar instancias " +"de :class:`Handler`. En su lugar, la clase :class:`Handler` es una clase " +"base que define la interfaz que todos los *handlers* deben tener y establece " +"algún comportamiento por defecto que las clases hijas pueden usar (o anular)." #: ../Doc/howto/logging.rst:527 msgid "Formatters" -msgstr "" +msgstr "Formateadores" #: ../Doc/howto/logging.rst:529 msgid "" @@ -725,18 +1011,30 @@ msgid "" "takes three optional arguments -- a message format string, a date format " "string and a style indicator." msgstr "" +"Los objetos de formato configuran el orden final, la estructura y el " +"contenido del mensaje de registro. A diferencia de la clase base :class:" +"`logging.Handler`, el código de la aplicación puede instanciar clases de " +"formateo, aunque probablemente podría subclasificar el formateo si su " +"aplicación necesita un comportamiento especial. El constructor toma tres " +"argumentos opcionales -- una cadena de formato de mensaje, una cadena de " +"formato de fecha y un indicador de estilo." #: ../Doc/howto/logging.rst:538 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 "" +"Si no hay una cadena de formato de mensaje, el valor predeterminado es " +"utilizar el mensaje en bruto. Si no hay una cadena de formato de fecha, el " +"formato de fecha por defecto es:" #: ../Doc/howto/logging.rst:545 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 "" +"con los milisegundos clavados al final. El ``style`` es uno de `%`, ‘{‘ o " +"‘$’. Si uno de estos no se especifica, entonces se usará ‘%’." #: ../Doc/howto/logging.rst:548 msgid "" @@ -747,10 +1045,17 @@ msgid "" "arguments), while if the style is '$' then the message format string should " "conform to what is expected by :meth:`string.Template.substitute`." msgstr "" +"Si el ``style`` es '%', la cadena del formato de mensaje utiliza ``" +"%()s`` estilo de sustitución de cadena; las posibles claves " +"están documentadas en :ref:`logrecord-attributes`. Si el estilo es '{', se " +"asume que la cadena del formato del mensaje es compatible con :meth:`str." +"format` (usando argumentos de palabras clave), mientras que si el estilo es " +"'$' entonces la cadena del formato del mensaje debe ajustarse a lo que se " +"espera de :meth:`string.Template.substitute`." #: ../Doc/howto/logging.rst:555 msgid "Added the ``style`` parameter." -msgstr "" +msgstr "Añadió el parámetro ``style``." #: ../Doc/howto/logging.rst:558 msgid "" @@ -758,6 +1063,9 @@ msgid "" "format, the severity of the message, and the contents of the message, in " "that order::" msgstr "" +"La siguiente cadena de formato de mensaje registrará la hora en un formato " +"legible para los humanos, la gravedad del mensaje y el contenido del " +"mensaje, en ese orden::" #: ../Doc/howto/logging.rst:564 msgid "" @@ -769,32 +1077,46 @@ msgid "" "want all logging times to be shown in GMT, set the ``converter`` attribute " "in the Formatter class (to ``time.gmtime`` for GMT display)." msgstr "" +"Los formateadores utilizan una función configurable por el usuario para " +"convertir la hora de creación de un registro en una tupla. Por defecto, se " +"utiliza :func:`time.localtime`; para cambiar esto para una instancia de " +"formateador particular, establezca el atributo ``converter`` de la instancia " +"a una función con la misma firma que :func:`time.localtime` o :func:`time." +"gmtime`. Para cambiarlo para todos los formateadores, por ejemplo si quieres " +"que todas las horas de registro se muestren en GMT, establece el atributo " +"``converter`` en la clase *Formatter* (a ``time.gmtime`` para mostrar GMT)." #: ../Doc/howto/logging.rst:574 msgid "Configuring Logging" -msgstr "" +msgstr "Configuración del registro" #: ../Doc/howto/logging.rst:578 msgid "Programmers can configure logging in three ways:" -msgstr "" +msgstr "Los programadores pueden configurar el registro en tres maneras:" #: ../Doc/howto/logging.rst:580 msgid "" "Creating loggers, handlers, and formatters explicitly using Python code that " "calls the configuration methods listed above." msgstr "" +"Creando registradores, manejadores y formateadores explícitamente usando " +"código Python que llama a los métodos de configuración listados arriba." #: ../Doc/howto/logging.rst:582 msgid "" "Creating a logging config file and reading it using the :func:`fileConfig` " "function." msgstr "" +"Creando un archivo de configuración de registro y leyéndolo usando la " +"función :func:`fileConfig`." #: ../Doc/howto/logging.rst:584 msgid "" "Creating a dictionary of configuration information and passing it to the :" "func:`dictConfig` function." msgstr "" +"Creando un diccionario de información de configuración y pasándolo a la " +"función :func:`dictConfig`." #: ../Doc/howto/logging.rst:587 msgid "" @@ -802,11 +1124,16 @@ msgid "" "config-api`. The following example configures a very simple logger, a " "console handler, and a simple formatter using Python code::" msgstr "" +"Para la documentación de referencia sobre las dos últimas opciones, vea :ref:" +"`logging-config-api`. El siguiente ejemplo configura un *logger* muy " +"simple, un manejador de consola, y un formateador simple usando código " +"Python::" #: ../Doc/howto/logging.rst:617 msgid "" "Running this module from the command line produces the following output:" msgstr "" +"Ejecutar este módulo desde la línea de comandos produce la siguiente salida:" #: ../Doc/howto/logging.rst:628 msgid "" @@ -814,15 +1141,20 @@ msgid "" "identical to those in the example listed above, with the only difference " "being the names of the objects::" msgstr "" +"El siguiente módulo de Python crea un registrador, manejador y formateador " +"casi idéntico a los del ejemplo anterior, con la única diferencia de los " +"nombres de los objetos::" #: ../Doc/howto/logging.rst:647 msgid "Here is the logging.conf file:" -msgstr "" +msgstr "Aquí está el archivo logging.conf:" #: ../Doc/howto/logging.rst:680 msgid "" "The output is nearly identical to that of the non-config-file-based example:" msgstr "" +"La salida es casi idéntica a la del ejemplo basado en un archivo no " +"configurado:" #: ../Doc/howto/logging.rst:691 msgid "" @@ -830,6 +1162,10 @@ msgid "" "Python code approach, mainly separation of configuration and code and the " "ability of noncoders to easily modify the logging properties." msgstr "" +"Se puede ver que el enfoque del archivo de configuración tiene algunas " +"ventajas sobre el enfoque del código Python, principalmente la separación de " +"la configuración y el código y la capacidad de los no codificadores de " +"modificar fácilmente las propiedades de registro." #: ../Doc/howto/logging.rst:695 msgid "" @@ -841,6 +1177,14 @@ msgid "" "configuration. Please refer to the reference documentation for more " "information, and specify ``False`` for this parameter if you wish." msgstr "" +"La función :func:`fileConfig`` toma un parámetro por defecto, " +"``disable_existing_loggers``, que por defecto es ``True`` por razones de " +"compatibilidad retroactiva. Esto puede ser o no lo que usted quiera, ya que " +"causará que cualquier registrador no existente antes de la llamada :func:" +"`fileConfig` sea desactivado a menos que ellos (o un ancestro) sean " +"nombrados explícitamente en la configuración. Por favor, consulte la " +"documentación de referencia para más información, y especifique ``False`` " +"para este parámetro si lo desea." #: ../Doc/howto/logging.rst:703 msgid "" @@ -850,6 +1194,13 @@ msgid "" "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 "" +"El diccionario pasado a :func:`dictConfig` también puede especificar un " +"valor booleano con la tecla ``disable_existing_loggers``, que si no se " +"especifica explícitamente en el diccionario también se interpreta por " +"defecto como ``True``. Esto lleva al comportamiento de deshabilitación de " +"los registradores descrito anteriormente, que puede no ser lo que usted " +"desea - en cuyo caso, proporcione a la clave explícitamente un valor de " +"``False``." #: ../Doc/howto/logging.rst:713 msgid "" @@ -861,6 +1212,14 @@ msgid "" "module ``mymodule``, where ``mypackage`` is available on the Python import " "path)." msgstr "" +"Obsérvese que los nombres de clase a los que se hace referencia en los " +"archivos de configuración deben ser relativos al módulo de registro, o bien " +"valores absolutos que puedan resolverse mediante mecanismos de importación " +"normales. Por lo tanto, puedes usar :class:`~logging.handlers." +"WatchedFileHandler` (relativo al módulo de registro) o ``mypackage.mymodule." +"MyHandler`` (para una clase definida en el paquete ``mypackage`` y el módulo " +"``mymodule``, donde ``mypackage`` está disponible en la ruta de importación " +"de Python)." #: ../Doc/howto/logging.rst:721 msgid "" @@ -876,22 +1235,40 @@ msgid "" "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 "" +"En Python 3.2, se ha introducido un nuevo medio para configurar el registro, " +"utilizando diccionarios para guardar la información de configuración. Esto " +"proporciona un superconjunto de la funcionalidad del enfoque basado en " +"archivos de configuración descrito anteriormente, y es el método de " +"configuración recomendado para nuevas aplicaciones y despliegues. Dado que " +"se utiliza un diccionario de Python para guardar información de " +"configuración, y dado que se puede rellenar ese diccionario utilizando " +"diferentes medios, se dispone de más opciones de configuración. Por ejemplo, " +"puede utilizar un archivo de configuración en formato JSON o, si tiene " +"acceso a la funcionalidad de procesamiento YAML, un archivo en formato YAML, " +"para rellenar el diccionario de configuración. O, por supuesto, puedes " +"construir el diccionario en código Python, recibirlo en forma encurtida " +"sobre un zócalo, o usar cualquier enfoque que tenga sentido para tu " +"aplicación." #: ../Doc/howto/logging.rst:733 msgid "" "Here's an example of the same configuration as above, in YAML format for the " "new dictionary-based approach:" msgstr "" +"Aquí hay un ejemplo de la misma configuración que arriba, en formato YAML " +"para el nuevo enfoque basado en el diccionario:" #: ../Doc/howto/logging.rst:757 msgid "" "For more information about logging using a dictionary, see :ref:`logging-" "config-api`." msgstr "" +"Para más información sobre el registro usando un diccionario, ver :ref:" +"`logging-config-api`." #: ../Doc/howto/logging.rst:761 msgid "What happens if no configuration is provided" -msgstr "" +msgstr "¿Qué pasa si no se proporciona ninguna configuración" #: ../Doc/howto/logging.rst:763 msgid "" @@ -900,26 +1277,38 @@ msgid "" "output the event. The behaviour of the logging package in these " "circumstances is dependent on the Python version." msgstr "" +"Si no se proporciona una configuración de registro, es posible que se " +"produzca una situación en la que sea necesario dar salida a un suceso de " +"registro, pero no se puede encontrar a ningún gestor para dar salida al " +"suceso. El comportamiento del paquete de registro en estas circunstancias " +"depende de la versión de Python." #: ../Doc/howto/logging.rst:768 msgid "For versions of Python prior to 3.2, the behaviour is as follows:" msgstr "" +"Para las versiones de Python anteriores a la 3.2, el comportamiento es el " +"siguiente:" #: ../Doc/howto/logging.rst:770 msgid "" "If *logging.raiseExceptions* is ``False`` (production mode), the event is " "silently dropped." msgstr "" +"Si *logging.raiseExceptions* es ``Falso`` (modo de producción), el evento es " +"abandonado silenciosamente." #: ../Doc/howto/logging.rst:773 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* es ``True`` (modo de desarrollo), se imprime " +"una vez un mensaje '*No handlers could be found for logger X.Y.Z*' ('No se " +"pudo encontrar ningún manejador (*handler*) para el *logger* X.Y.Z')." #: ../Doc/howto/logging.rst:776 msgid "In Python 3.2 and later, the behaviour is as follows:" -msgstr "" +msgstr "En Python 3.2 y posteriores, el comportamiento es el siguiente:" #: ../Doc/howto/logging.rst:778 msgid "" @@ -932,16 +1321,26 @@ msgid "" "handler's level is set to ``WARNING``, so all events at this and greater " "severities will be output." msgstr "" +"El evento es emitido usando un ‘handler de último recurso’, almacenado en " +"``logging.lastResort``. Este manejador interno no está asociado con ningún " +"logger, y actúa como un :class:`~logging.StreamHandler`` que escribe el " +"mensaje de descripción del evento con el valor actual de ``sys.stderr`` " +"(respetando así cualquier redireccionamiento que pueda estar en vigor). No " +"se hace ningún tipo de formateo en el mensaje, sólo se imprime el mensaje de " +"descripción del evento. El nivel del manejador se establece en ``WARNING``, " +"por lo que todos los eventos de esta y mayores severidades serán emitidos." #: ../Doc/howto/logging.rst:787 msgid "" "To obtain the pre-3.2 behaviour, ``logging.lastResort`` can be set to " "``None``." msgstr "" +"Para obtener el comportamiento anterior a la 3.2, ``logging.lastResort`` se " +"puede configurar como ``None``." #: ../Doc/howto/logging.rst:792 msgid "Configuring Logging for a Library" -msgstr "" +msgstr "Configurando Logging para una biblioteca" #: ../Doc/howto/logging.rst:794 msgid "" @@ -953,6 +1352,14 @@ msgid "" "of severity ``WARNING`` and greater will be printed to ``sys.stderr``. This " "is regarded as the best default behaviour." msgstr "" +"Cuando se desarrolla una biblioteca que utiliza el registro, se debe tener " +"cuidado de documentar la forma en que la biblioteca utiliza el registro, por " +"ejemplo, los nombres de los registradores utilizados. También hay que tener " +"en cuenta su configuración de registro. Si la aplicación que lo utiliza no " +"usa el registro, y el código de la biblioteca hace llamadas de registro, " +"entonces (como se describe en la sección anterior) los eventos de gravedad " +"``WARNING`` y mayores se imprimirán en ``sys.stderr``. Esto se considera el " +"mejor comportamiento por defecto." #: ../Doc/howto/logging.rst:802 msgid "" @@ -965,6 +1372,16 @@ msgid "" "suitably configured then logging calls made in library code will send output " "to those handlers, as normal." msgstr "" +"Si por alguna razón usted *no* quiere que estos mensajes se impriman en " +"ausencia de cualquier configuración de registro, puede adjuntar un manejador " +"de no hacer nada al registrador de nivel superior de su biblioteca. Esto " +"evita que el mensaje se imprima, ya que siempre se encontrará un manejador " +"para los eventos de la biblioteca: simplemente no produce ninguna salida. Si " +"el usuario de la biblioteca configura el registro para el uso de la " +"aplicación, presumiblemente esa configuración añadirá algunos manejadores, y " +"si los niveles están configurados adecuadamente, entonces las llamadas de " +"registro realizadas en el código de la biblioteca enviarán una salida a esos " +"manejadores, como es normal." #: ../Doc/howto/logging.rst:811 msgid "" @@ -976,6 +1393,14 @@ msgid "" "library *foo* is done using loggers with names matching 'foo.x', 'foo.x.y', " "etc. then the code::" msgstr "" +"Un manejador de no hacer nada está incluido en el paquete de registro: :" +"class:`~logging.NullHandler` (desde Python 3.1). Una instancia de este " +"manejador podría ser añadida al *logger* de nivel superior del espacio de " +"nombres de registro usado por la biblioteca (*si* quieres evitar que los " +"eventos de registro de tu biblioteca se envíen a ``sys.stderr`` en ausencia " +"de la configuración de registro). Si todo el registro de una biblioteca " +"*foo* se hace usando registradores con nombres que coincidan con 'foo.x', " +"'foo.x.y', etc. entonces el código::" #: ../Doc/howto/logging.rst:822 msgid "" @@ -983,6 +1408,9 @@ msgid "" "libraries, then the logger name specified can be 'orgname.foo' rather than " "just 'foo'." msgstr "" +"debería tener el efecto deseado. Si una organización produce varias " +"bibliotecas, el nombre del registrador especificado puede ser ‘orgname.foo’ " +"en lugar de sólo ‘foo’." #: ../Doc/howto/logging.rst:826 msgid "" @@ -994,10 +1422,18 @@ msgid "" "handlers 'under the hood', you might well interfere with their ability to " "carry out unit tests and deliver logs which suit their requirements." msgstr "" +"Se recomienda encarecidamente que *no añada ningún otro manejador que no " +"sea* :class:`~logging.NullHandler` *a los loggers de su biblioteca*. Esto se " +"debe a que la configuración de los *handlers* es prerrogativa del " +"desarrollador de aplicaciones que utiliza su biblioteca. El desarrollador de " +"la aplicación conoce su público objetivo y qué manejadores son los más " +"apropiados para su aplicación: si añades manejadores ‘bajo el capó’, podrías " +"interferir en su capacidad de realizar pruebas unitarias y entregar " +"registros que se ajusten a sus necesidades." #: ../Doc/howto/logging.rst:837 msgid "Logging Levels" -msgstr "" +msgstr "Niveles de registro" #: ../Doc/howto/logging.rst:839 msgid "" @@ -1007,38 +1443,43 @@ msgid "" "define a level with the same numeric value, it overwrites the predefined " "value; the predefined name is lost." msgstr "" +"Los valores numéricos de los niveles de registro se indican en el siguiente " +"cuadro. Éstos son de interés principalmente si se desea definir los propios " +"niveles y se necesita que tengan valores específicos en relación con los " +"niveles predefinidos. Si se define un nivel con el mismo valor numérico, " +"éste sobrescribe el valor predefinido; el nombre predefinido se pierde." #: ../Doc/howto/logging.rst:846 msgid "Numeric value" -msgstr "" +msgstr "Valor numérico" #: ../Doc/howto/logging.rst:848 msgid "50" -msgstr "" +msgstr "50" #: ../Doc/howto/logging.rst:850 msgid "40" -msgstr "" +msgstr "40" #: ../Doc/howto/logging.rst:852 msgid "30" -msgstr "" +msgstr "30" #: ../Doc/howto/logging.rst:854 msgid "20" -msgstr "" +msgstr "20" #: ../Doc/howto/logging.rst:856 msgid "10" -msgstr "" +msgstr "10" #: ../Doc/howto/logging.rst:858 msgid "``NOTSET``" -msgstr "" +msgstr "``NOTSET``" #: ../Doc/howto/logging.rst:858 msgid "0" -msgstr "" +msgstr "0" #: ../Doc/howto/logging.rst:861 msgid "" @@ -1049,6 +1490,13 @@ msgid "" "the method call's, no logging message is actually generated. This is the " "basic mechanism controlling the verbosity of logging output." msgstr "" +"Los niveles también pueden asociarse con los registradores, siendo " +"establecidos por el desarrollador o mediante la carga de una configuración " +"de registro guardada. Cuando se llama a un método de registro en un " +"registrador, éste compara su propio nivel con el nivel asociado a la llamada " +"del método. Si el nivel del registrador es superior al de la llamada al " +"método, no se genera ningún mensaje de registro. Este es el mecanismo básico " +"que controla la verbosidad de la salida del registro." #: ../Doc/howto/logging.rst:868 msgid "" @@ -1056,6 +1504,10 @@ msgid "" "class. When a logger decides to actually log an event, a :class:`~logging." "LogRecord` instance is created from the logging message." msgstr "" +"Los mensajes de registro se codifican como instancias de la clase :class:" +"`logging.LogRecord`. Cuando un *logger* decide registrar realmente un " +"evento, se crea una instancia :class:`~logging.LogRecord` a partir del " +"mensaje de registro." #: ../Doc/howto/logging.rst:872 msgid "" @@ -1073,6 +1525,21 @@ msgid "" "message (unless the *propagate* flag for a logger is set to a false value, " "at which point the passing to ancestor handlers stops)." msgstr "" +"Los mensajes de registro están sujetos a un mecanismo de envío mediante el " +"uso de :dfn:`handlers`, que son instancias de subclases de la clase :class:" +"`Handler`. Los gestores son responsables de asegurar que un mensaje " +"registrado (en forma de :class:`LogRecord`) termine en una ubicación " +"particular (o conjunto de ubicaciones) que sea útil para el público al que " +"va dirigido ese mensaje (como usuarios finales, personal de asistencia " +"técnica, administradores de sistemas, desarrolladores). Los manejadores " +"pasan instancias :class:`LogRecord` destinadas a destinos particulares. Cada " +"*logger* puede tener cero, uno o más manejadores asociados a él (a través " +"del método :meth:`~Logger.addHandler` de :class:`Logger`). Además de los " +"*handlers* directamente asociados a un *logger*, todos los manejadores " +"(*handlers*) asociados a todos los ancestros del *logger* son llamados a " +"enviar el mensaje (a menos que el flag *propagate* de un *logger* se " +"establezca en un valor falso, en cuyo caso el paso a los *handlers* " +"ancestrales se detiene)." #: ../Doc/howto/logging.rst:886 msgid "" @@ -1083,10 +1550,16 @@ msgid "" "defined subclasses of :class:`Handler` will need to override this :meth:" "`~Handler.emit`." msgstr "" +"Al igual que para los *logger*, los gestores pueden tener niveles asociados " +"a ellos. El nivel de un gestor actúa como un filtro de la misma manera que " +"el nivel de un *logger*. Si un manejador (*handler*) decide realmente enviar " +"un evento, el método :meth:`~Handler.emit` se utiliza para enviar el mensaje " +"a su destino. La mayoría de las subclases definidas por el usuario de :class:" +"`Handler` necesitarán anular este :meth:`~Handler.emit`." #: ../Doc/howto/logging.rst:895 msgid "Custom Levels" -msgstr "" +msgstr "Niveles personalizados" #: ../Doc/howto/logging.rst:897 msgid "" @@ -1100,26 +1573,42 @@ msgid "" "difficult for the using developer to control and/or interpret, because a " "given numeric value might mean different things for different libraries." msgstr "" +"Definir sus propios niveles es posible, pero no debería ser necesario, ya " +"que los niveles existentes se han elegido sobre la base de la experiencia " +"práctica. Sin embargo, si usted está convencido de que necesita niveles " +"personalizados, debe tener mucho cuidado al hacer esto, y es posiblemente " +"*una muy mala idea definir niveles personalizados si está desarrollando una " +"biblioteca*. Esto se debe a que si los autores de múltiples bibliotecas " +"definen sus propios niveles personalizados, existe la posibilidad de que el " +"resultado del registro de tales bibliotecas múltiples utilizadas " +"conjuntamente sea difícil de controlar y/o interpretar para el desarrollador " +"usuario, porque un valor numérico dado podría significar cosas diferentes " +"para diferentes bibliotecas." #: ../Doc/howto/logging.rst:910 msgid "Useful Handlers" -msgstr "" +msgstr "Gestores útiles" #: ../Doc/howto/logging.rst:912 msgid "" "In addition to the base :class:`Handler` class, many useful subclasses are " "provided:" msgstr "" +"Además de la base :class:`Handler` class, se proporcionan muchas subclases " +"útiles:" #: ../Doc/howto/logging.rst:915 msgid "" ":class:`StreamHandler` instances send messages to streams (file-like " "objects)." msgstr "" +":class:`StreamHandler` instancias envían mensajes a los *streams* (objetos " +"como de tipo archivo)." #: ../Doc/howto/logging.rst:918 msgid ":class:`FileHandler` instances send messages to disk files." msgstr "" +":class:`FileHandler` instancias enviar mensajes a los archivos del disco." #: ../Doc/howto/logging.rst:920 msgid "" @@ -1128,60 +1617,87 @@ msgid "" "directly. Instead, use :class:`~handlers.RotatingFileHandler` or :class:" "`~handlers.TimedRotatingFileHandler`." msgstr "" +":class:`~handlers.BaseRotatingHandler` es la clase base para los manejadores " +"(*handlers*) que rotan los archivos de registro en un punto determinado. No " +"está pensada para ser instanciada directamente. En su lugar, utilice :class:" +"`~handlers.RotatingFileHandler` o :class:`~handlers." +"TimedRotatingFileHandler`." #: ../Doc/howto/logging.rst:925 msgid "" ":class:`~handlers.RotatingFileHandler` instances send messages to disk " "files, with support for maximum log file sizes and log file rotation." msgstr "" +"Las instancias de :class:`~handlers.RotatingFileHandler` envían mensajes a " +"los archivos de disco, con soporte para el tamaño máximo de los archivos de " +"registro y la rotación de los mismos." #: ../Doc/howto/logging.rst:928 msgid "" ":class:`~handlers.TimedRotatingFileHandler` instances send messages to disk " "files, rotating the log file at certain timed intervals." msgstr "" +"Las instancias de :class:`~handlers.TimedRotatingFileHandler` envían " +"mensajes a los archivos de disco, rotando el archivo de registro a ciertos " +"intervalos de tiempo." #: ../Doc/howto/logging.rst:931 msgid "" ":class:`~handlers.SocketHandler` instances send messages to TCP/IP sockets. " "Since 3.4, Unix domain sockets are also supported." msgstr "" +"Las instancias de :class:`~handlers.SocketHandler` envían mensajes a los " +"sockets TCP/IP. Desde la versión 3.4, los sockets de dominio Unix también " +"están soportados." #: ../Doc/howto/logging.rst:934 msgid "" ":class:`~handlers.DatagramHandler` instances send messages to UDP sockets. " "Since 3.4, Unix domain sockets are also supported." msgstr "" +"Instancias de :class:`~handlers.DatagramHandler` envían mensajes a los " +"sockets UDP. Desde la versión 3.4, los sockets de dominio Unix también están " +"soportados." #: ../Doc/howto/logging.rst:937 msgid "" ":class:`~handlers.SMTPHandler` instances send messages to a designated email " "address." msgstr "" +"Las instancias de :class:`~handlers.SMTPHandler` envían mensajes a una " +"dirección de correo electrónico designada." #: ../Doc/howto/logging.rst:940 msgid "" ":class:`~handlers.SysLogHandler` instances send messages to a Unix syslog " "daemon, possibly on a remote machine." msgstr "" +"Las instancias de :class:`~handlers.SysLogHandler` envían mensajes a un " +"demonio del syslog de Unix, posiblemente en una máquina remota." #: ../Doc/howto/logging.rst:943 msgid "" ":class:`~handlers.NTEventLogHandler` instances send messages to a Windows " "NT/2000/XP event log." msgstr "" +"Las instancias de :class:`~handlers.NTEventLogHandler` envían mensajes a un " +"registro de eventos de Windows NT/2000/XP." #: ../Doc/howto/logging.rst:946 msgid "" ":class:`~handlers.MemoryHandler` instances send messages to a buffer in " "memory, which is flushed whenever specific criteria are met." msgstr "" +"Las instancias de :class:`~handlers.MemoryHandler` envían mensajes a un " +"buffer en la memoria, que es limpiado cuando se cumplen ciertos criterios." #: ../Doc/howto/logging.rst:949 msgid "" ":class:`~handlers.HTTPHandler` instances send messages to an HTTP server " "using either ``GET`` or ``POST`` semantics." msgstr "" +"Las instancias de :class:`~handlers.HTTPHandler` envían mensajes a un " +"servidor HTTP usando la semántica de \"GET\" o \"POST\"." #: ../Doc/howto/logging.rst:952 msgid "" @@ -1190,12 +1706,19 @@ msgid "" "name. This handler is only useful on Unix-like systems; Windows does not " "support the underlying mechanism used." msgstr "" +"Las instancias de :class:`~handlers.WatchedFileHandler` ven el archivo al " +"que están accediendo. Si el archivo cambia, se cierra y se vuelve a abrir " +"usando el nombre del archivo. Este manejador sólo es útil en sistemas tipo " +"Unix; Windows no soporta el mecanismo subyacente utilizado." #: ../Doc/howto/logging.rst:957 msgid "" ":class:`~handlers.QueueHandler` instances send messages to a queue, such as " "those implemented in the :mod:`queue` or :mod:`multiprocessing` modules." msgstr "" +"Las instancias de :class:`~handlers.QueueHandler` envían mensajes a una " +"cola, como los implementados en los módulos :mod:`queue` or :mod:" +"`multiprocessing`." #: ../Doc/howto/logging.rst:960 msgid "" @@ -1205,14 +1728,20 @@ msgid "" "the library user has not configured logging. See :ref:`library-config` for " "more information." msgstr "" +":class:`NullHandler` instancias no hacen nada con los mensajes de error. Son " +"utilizadas por los desarrolladores de bibliotecas que quieren utilizar el " +"registro, pero quieren evitar el mensaje \"No se pudo encontrar ningún " +"controlador para el registrador XXX\", que puede mostrarse si el usuario de " +"la biblioteca no ha configurado el registro. Vea :ref:`library-config` para " +"más información." #: ../Doc/howto/logging.rst:966 msgid "The :class:`NullHandler` class." -msgstr "" +msgstr "La clase :class:`NullHandler`." #: ../Doc/howto/logging.rst:969 msgid "The :class:`~handlers.QueueHandler` class." -msgstr "" +msgstr "La :class:`~handlers.QueueHandler` (La clase de gestores de Cola)." #: ../Doc/howto/logging.rst:972 msgid "" @@ -1221,6 +1750,11 @@ msgid "" "defined in a sub-module, :mod:`logging.handlers`. (There is also another sub-" "module, :mod:`logging.config`, for configuration functionality.)" msgstr "" +"Las clases :class:`NullHandler`, :class:`StreamHandler` y :class:" +"`FileHandler` están definidas en el paquete de registro del núcleo. Los " +"otros manejadores se definen en un sub-módulo, :mod:`logging.handlers`. " +"(También hay otro submódulo, :mod:`logging.config`, para la funcionalidad de " +"configuración)" #: ../Doc/howto/logging.rst:977 msgid "" @@ -1228,6 +1762,9 @@ msgid "" "class:`Formatter` class. They are initialized with a format string suitable " "for use with the % operator and a dictionary." msgstr "" +"Los mensajes registrados son formateados para su presentación a través de " +"instancias de la clase :class:`Formatter`. Se inicializan con una cadena de " +"formato adecuada para su uso con el operador % y un diccionario." #: ../Doc/howto/logging.rst:981 msgid "" @@ -1236,6 +1773,10 @@ msgid "" "applied to each message in the batch), there is provision for header and " "trailer format strings." msgstr "" +"Para dar formato a varios mensajes en un lote, se pueden utilizar instancias " +"de :class:`~handlers.BufferingFormatter`. Además de la cadena de formato " +"(que se aplica a cada mensaje del lote), hay una provisión para cadenas de " +"formato de cabecera y de trailer." #: ../Doc/howto/logging.rst:986 msgid "" @@ -1246,6 +1787,13 @@ msgid "" "consult all their filters for permission. If any filter returns a false " "value, the message is not processed further." msgstr "" +"Cuando el filtrado basado en el nivel de *logger* o el nivel de manejador " +"(*handler*) no es suficiente, se pueden añadir instancias de :class:`Filter` " +"tanto a :class:`Logger` como a :class:`Handler` instancias (a través de su " +"método :meth:`~Handler.addFilter`). Antes de decidir procesar un mensaje más " +"adelante, tanto los *loggers* como los manejadores (*handlers*) consultan " +"todos sus filtros para obtener permiso. Si algún filtro retorna un valor " +"falso, el mensaje no se procesa más." #: ../Doc/howto/logging.rst:993 msgid "" @@ -1253,10 +1801,14 @@ msgid "" "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 funcionalidad básica :class:`Filtro` permite filtrar por un nombre de " +"registro específico. Si se utiliza esta función, los mensajes enviados al " +"registrador nombrado y a sus hijos se permiten a través del filtro, y todos " +"los demás se eliminan." #: ../Doc/howto/logging.rst:1001 msgid "Exceptions raised during logging" -msgstr "" +msgstr "Excepciones lanzadas durante logging" #: ../Doc/howto/logging.rst:1003 msgid "" @@ -1265,6 +1817,11 @@ msgid "" "logging events - such as logging misconfiguration, network or other similar " "errors - do not cause the application using logging to terminate prematurely." msgstr "" +"El paquete de tala está diseñado para tragarse las excepciones que se " +"producen durante la tala en la producción. Esto es así para que los errores " +"que ocurren durante el manejo de los eventos de registro - como la mala " +"configuración del registro, errores de red u otros errores similares - no " +"causen que la aplicación que utiliza el registro termine prematuramente." #: ../Doc/howto/logging.rst:1008 msgid "" @@ -1273,6 +1830,10 @@ msgid "" "method of a :class:`Handler` subclass are passed to its :meth:`~Handler." "handleError` method." msgstr "" +"Las excepciones de :class:`SystemExit` (Salida del sistema) y :class:" +"`KeyboardInterrupt` (Interrupción del teclado) nunca se tragan. Otras " +"excepciones que ocurren durante el método :meth:`~Handler.emit` de una " +"subclase :class:`Handler` se pasan a su método :meth:`~Handler.handleError` ." #: ../Doc/howto/logging.rst:1013 msgid "" @@ -1281,6 +1842,10 @@ msgid "" "is set. If set, a traceback is printed to :data:`sys.stderr`. If not set, " "the exception is swallowed." msgstr "" +"La implementación por defecto de :meth:`~Handler.handleError` en :class:" +"`Handler` comprueba si una variable de nivel de módulo, :data:" +"`raiseExceptions`, está establecida. Si se establece, se imprime una traza " +"en :data:`sys.stderr`. Si no se establece, se traga la excepción." #: ../Doc/howto/logging.rst:1018 msgid "" @@ -1289,10 +1854,14 @@ msgid "" "occur. It's advised that you set :data:`raiseExceptions` to ``False`` for " "production usage." msgstr "" +"El valor por defecto de :data:`raiseExceptions` (lanzar excepciones) es " +"``True``. Esto se debe a que durante el desarrollo, normalmente quieres ser " +"notificado de cualquier excepción que ocurra. Se aconseja que establezca :" +"data:`raiseExceptions` a ``False`` para el uso en producción." #: ../Doc/howto/logging.rst:1028 msgid "Using arbitrary objects as messages" -msgstr "" +msgstr "Usando objetos arbitrarios como mensajes" #: ../Doc/howto/logging.rst:1030 msgid "" @@ -1305,10 +1874,18 @@ msgid "" "`~handlers.SocketHandler` emits an event by pickling it and sending it over " "the wire." msgstr "" +"En las secciones y ejemplos anteriores, se ha supuesto que el mensaje pasado " +"al registrar el suceso es una cadena. Sin embargo, esta no es la única " +"posibilidad. Se puede pasar un objeto arbitrario como mensaje, y su método :" +"meth:`~object.__str__` será llamado cuando el sistema de registro necesite " +"convertirlo en una representación de cadena. De hecho, si quieres, puedes " +"evitar computar una representación de cadena por completo - por ejemplo, el " +"método :class:`~handlers.SocketHandler` emite un evento al *pickling* y " +"enviarlo por el cable." #: ../Doc/howto/logging.rst:1041 msgid "Optimization" -msgstr "" +msgstr "Optimización" #: ../Doc/howto/logging.rst:1043 msgid "" @@ -1320,12 +1897,22 @@ msgid "" "event would be created by the Logger for that level of call. You can write " "code like this::" msgstr "" +"El formato de los argumentos del mensaje se aplaza hasta que no se pueda " +"evitar. Sin embargo, el cálculo de los argumentos pasados al método de " +"registro también puede ser costoso, y puede que quieras evitar hacerlo si el " +"registrador simplemente tirará tu evento. Para decidir qué hacer, puedes " +"llamar al método :meth:`~Logger.isEnabledFor` que toma un argumento de nivel " +"y retorna true si el evento sería creado por el *Logger* para ese nivel de " +"llamada. Puedes escribir código como este::" #: ../Doc/howto/logging.rst:1055 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 modo que si el umbral del registrador se establece por encima de " +"``DEBUG``, las llamadas a :func:`expensive_func1` y :func:`expensive_func2` " +"nunca se hacen." #: ../Doc/howto/logging.rst:1058 msgid "" @@ -1338,6 +1925,16 @@ msgid "" "need to be recomputed when the logging configuration changes dynamically " "while the application is running (which is not all that common)." msgstr "" +"En algunos casos, :meth:`~Logger.isEnabledFor` puede ser en sí mismo más " +"caro de lo que te gustaría (por ejemplo, para los *loggers* profundamente " +"anidados donde un nivel explícito sólo se establece en lo alto de la " +"jerarquía de *loggers*). En estos casos (o si quieres evitar llamar a un " +"método en bucles estrechos), puedes guardar en caché el resultado de una " +"llamada a :meth:`~Logger.isEnabledFor` en una variable local o de instancia, " +"y usarla en lugar de llamar al método cada vez. Tal valor en caché sólo " +"necesitaría ser recalculado cuando la configuración de registro cambie " +"dinámicamente mientras la aplicación se está ejecutando (lo cual no es tan " +"común)." #: ../Doc/howto/logging.rst:1067 msgid "" @@ -1346,18 +1943,22 @@ msgid "" "Here's a list of things you can do to avoid processing during logging which " "you don't need:" msgstr "" +"Hay otras optimizaciones que pueden hacerse para aplicaciones específicas " +"que necesitan un control más preciso sobre la información de registro que se " +"recoge. Aquí hay una lista de cosas que puede hacer para evitar el " +"procesamiento durante el registro que no necesita:" #: ../Doc/howto/logging.rst:1073 msgid "What you don't want to collect" -msgstr "" +msgstr "Lo que no quieres colectar" #: ../Doc/howto/logging.rst:1073 msgid "How to avoid collecting it" -msgstr "" +msgstr "Cómo evitar coleccionarlo" #: ../Doc/howto/logging.rst:1075 msgid "Information about where calls were made from." -msgstr "" +msgstr "Información sobre dónde se hicieron las llamadas." #: ../Doc/howto/logging.rst:1075 msgid "" @@ -1366,22 +1967,26 @@ msgid "" "(which can't speed up code that uses :func:`sys._getframe`), if and when " "PyPy supports Python 3.x." msgstr "" +"Ponga ``logging._srcfile`` a ``None``. Esto evita llamar a :func:`sys." +"_getframe`, lo que puede ayudar a acelerar tu código en entornos como PyPy " +"(cual no puede acelerar el código que usa :func:`sys._getframe`), siempre y " +"cuando PyPy soporte Python 3.x." #: ../Doc/howto/logging.rst:1083 msgid "Threading information." -msgstr "" +msgstr "Información sobre código con hilos." #: ../Doc/howto/logging.rst:1083 msgid "Set ``logging.logThreads`` to ``0``." -msgstr "" +msgstr "Ponga ``logging.logThreads`` en ``0``." #: ../Doc/howto/logging.rst:1085 msgid "Process information." -msgstr "" +msgstr "Procesar la información." #: ../Doc/howto/logging.rst:1085 msgid "Set ``logging.logProcesses`` to ``0``." -msgstr "" +msgstr "Ponga ``logging.logProcesses`` en ``0``." #: ../Doc/howto/logging.rst:1088 msgid "" @@ -1389,31 +1994,34 @@ msgid "" "you don't import :mod:`logging.handlers` and :mod:`logging.config`, they " "won't take up any memory." msgstr "" +"Observe también que el módulo de registro del núcleo sólo incluye los " +"gestores básicos. Si no importas :mod:`logging.handlers` y :mod:`logging." +"config`, no ocuparán ninguna memoria." #: ../Doc/howto/logging.rst:1095 msgid "Module :mod:`logging`" -msgstr "" +msgstr "Módulo :mod:`logging`" #: ../Doc/howto/logging.rst:1095 msgid "API reference for the logging module." -msgstr "" +msgstr "Referencia API para el módulo de registro." #: ../Doc/howto/logging.rst:1098 msgid "Module :mod:`logging.config`" -msgstr "" +msgstr "Módulo :mod:`logging.config`" #: ../Doc/howto/logging.rst:1098 msgid "Configuration API for the logging module." -msgstr "" +msgstr "API de configuración para el módulo de registro." #: ../Doc/howto/logging.rst:1101 msgid "Module :mod:`logging.handlers`" -msgstr "" +msgstr "Módulo :mod:`logging.handlers`" #: ../Doc/howto/logging.rst:1101 msgid "Useful handlers included with the logging module." -msgstr "" +msgstr "Gestores útiles incluidos en el módulo de registro." #: ../Doc/howto/logging.rst:1103 msgid ":ref:`A logging cookbook `" -msgstr "" +msgstr ":ref:`Un libro de recetas `"