diff --git a/dictionaries/howto_logging-cookbook.txt b/dictionaries/howto_logging-cookbook.txt index 155dd0ddff..f2e60af7c8 100644 --- a/dictionaries/howto_logging-cookbook.txt +++ b/dictionaries/howto_logging-cookbook.txt @@ -1,3 +1,5 @@ +Gist +Gunicorn LogRecord LoggerAdapters QueueHandler diff --git a/howto/logging-cookbook.po b/howto/logging-cookbook.po index 4b48b89b78..cbe2b590ab 100644 --- a/howto/logging-cookbook.po +++ b/howto/logging-cookbook.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-10-25 19:47+0200\n" -"PO-Revision-Date: 2021-11-26 15:32+0100\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" +"PO-Revision-Date: 2022-10-27 15:51-0300\n" +"Last-Translator: Carlos A. Crespo \n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.10.3\n" +"X-Generator: Poedit 3.0.1\n" #: ../Doc/howto/logging-cookbook.rst:5 msgid "Logging Cookbook" @@ -34,14 +35,14 @@ msgid "Vinay Sajip " msgstr "Vinay Sajip " #: ../Doc/howto/logging-cookbook.rst:9 -#, fuzzy msgid "" "This page contains a number of recipes related to logging, which have been " "found useful in the past. For links to tutorial and reference information, " "please see :ref:`cookbook-ref-links`." msgstr "" "Esta página contiene un número de recetas sobre *logging*, que han sido " -"útiles en el pasado." +"útiles en el pasado. Para obtener enlaces al tutorial e información de " +"referencia, consulte :ref:`cookbook-ref-links`." #: ../Doc/howto/logging-cookbook.rst:16 msgid "Using logging in multiple modules" @@ -209,10 +210,16 @@ msgid "" "the directory exists and that you have the permissions to create and update " "files in it." msgstr "" +"Tenga en cuenta que la elección anterior del nombre del archivo de registro " +"``/tmp/myapp.log`` implica el uso de una ubicación estándar para los " +"archivos temporales en los sistemas POSIX. En Windows, es posible que tenga " +"que elegir un nombre de directorio diferente para el registro - sólo " +"asegúrese de que el directorio existe y que tiene los permisos para crear y " +"actualizar archivos en él." #: ../Doc/howto/logging-cookbook.rst:282 msgid "Custom handling of levels" -msgstr "" +msgstr "Gestión personalizada de niveles" #: ../Doc/howto/logging-cookbook.rst:284 msgid "" @@ -221,22 +228,27 @@ msgid "" "get processed by a handler. To do this, you need to use filters. Let's look " "at a scenario where you want to arrange things as follows:" msgstr "" +"A veces, es posible que desee hacer algo ligeramente diferente del manejo " +"estándar de niveles, donde todos los niveles por encima de un umbral son " +"procesados por un gestor. Para ello, es necesario utilizar filtros. Veamos " +"un escenario en el que se desea organizar las cosas de la siguiente manera:" #: ../Doc/howto/logging-cookbook.rst:289 msgid "Send messages of severity ``INFO`` and ``WARNING`` to ``sys.stdout``" -msgstr "" +msgstr "Enviar mensajes de gravedad ``INFO`` y ``WARNING`` a ``sys.stdout``" #: ../Doc/howto/logging-cookbook.rst:290 msgid "Send messages of severity ``ERROR`` and above to ``sys.stderr``" -msgstr "" +msgstr "Enviar mensajes de gravedad ``ERROR`` y superiores a ``sys.stderr``" #: ../Doc/howto/logging-cookbook.rst:291 msgid "Send messages of severity ``DEBUG`` and above to file ``app.log``" msgstr "" +"Envía los mensajes de gravedad ``DEBUG`` y superiores al archivo ``app.log``" #: ../Doc/howto/logging-cookbook.rst:293 msgid "Suppose you configure logging with the following JSON:" -msgstr "" +msgstr "Supongamos que se configura el registro con el siguiente JSON:" #: ../Doc/howto/logging-cookbook.rst:335 msgid "" @@ -246,16 +258,24 @@ msgid "" "those messages and add it to the relevant handler. This can be configured by " "adding a ``filters`` section parallel to ``formatters`` and ``handlers``:" msgstr "" +"Esta configuración hace *casi* lo que queremos, excepto que ``sys.stdout`` " +"mostraría mensajes de gravedad ``ERROR`` y superiores, así como mensajes " +"``INFO`` y ``WARNING``. Para evitarlo, podemos configurar un filtro que " +"excluya esos mensajes y añadirlo al gestor correspondiente. Esto se puede " +"configurar añadiendo una sección ``filters`` paralela a ``formatters`` y " +"``handlers``:" #: ../Doc/howto/logging-cookbook.rst:350 msgid "and changing the section on the ``stdout`` handler to add it:" -msgstr "" +msgstr "y cambiando la sección del gestor ``stdout`` para añadirlo:" #: ../Doc/howto/logging-cookbook.rst:362 msgid "" "A filter is just a function, so we can define the ``filter_maker`` (a " "factory function) as follows:" msgstr "" +"Un filtro no es más que una función, por lo que podemos definir el " +"``filter_maker`` (una función de fábrica) como sigue:" #: ../Doc/howto/logging-cookbook.rst:375 msgid "" @@ -267,18 +287,27 @@ msgid "" "filter_maker`` in the filter configuration. You will need to change that if " "you define it in a different module." msgstr "" +"Esto convierte el argumento de la cadena de caracteres pasada en un nivel " +"numérico, y retorna una función que sólo retorna ``True`` si el nivel del " +"registro pasado está en o por debajo del nivel especificado. Ten en cuenta " +"que en este ejemplo se ha definido el ``filter_maker`` en un script de " +"prueba ``main.py`` que se ejecuta desde la línea de comandos, por lo que su " +"módulo será ``__main__`` - de ahí el ``__main__.filter_maker`` en la " +"configuración del filtro. Tendrás que cambiar eso si lo defines en un módulo " +"diferente." #: ../Doc/howto/logging-cookbook.rst:383 msgid "With the filter added, we can run ``main.py``, which in full is:" msgstr "" +"Con el filtro añadido, podemos ejecutar ``main.py``, que en su totalidad es:" #: ../Doc/howto/logging-cookbook.rst:453 msgid "And after running it like this:" -msgstr "" +msgstr "Y después de ejecutarlo de esta manera:" #: ../Doc/howto/logging-cookbook.rst:459 msgid "We can see the results are as expected:" -msgstr "" +msgstr "Podemos ver que los resultados son los esperados:" #: ../Doc/howto/logging-cookbook.rst:485 msgid "Configuration server example" @@ -409,6 +438,14 @@ msgid "" "application, to use the above approach for logging, so that any blocking " "code runs only in the ``QueueListener`` thread." msgstr "" +"Aunque la discusión anterior no se refería específicamente al código " +"asíncrono, sino más bien a los gestores de logging lentos, hay que tener en " +"cuenta que cuando se realiza logging desde código asíncrono, los gestores de " +"red e incluso de archivos podrían dar problemas (bloqueo del bucle de " +"eventos) porque parte del logging se realiza desde los internos de :mod:" +"`asyncio`. Podría ser mejor, si se utiliza cualquier código asíncrono en una " +"aplicación, utilizar el enfoque anterior para el logging, de modo que " +"cualquier código de bloqueo se ejecute sólo en el hilo ``QueueListener``." #: ../Doc/howto/logging-cookbook.rst:615 msgid "" @@ -478,7 +515,7 @@ msgstr "" #: ../Doc/howto/logging-cookbook.rst:766 msgid "Running a logging socket listener in production" -msgstr "" +msgstr "Ejecutando un logging de socket oyente en producción" #: ../Doc/howto/logging-cookbook.rst:768 msgid "" @@ -489,6 +526,13 @@ msgid "" "using Supervisor: you will need to change the ``/path/to/`` parts in the " "Gist to reflect the actual paths you want to use." msgstr "" +"Para ejecutar un logging oyente en producción, es posible que tenga que " +"utilizar una herramienta de gestión de procesos como ` Supervisor `_. `Aquí `_ hay un Gist que proporciona los " +"archivos básicos para ejecutar la funcionalidad anterior utilizando " +"Supervisor: tendrá que cambiar las partes ``/path/to/`` en el Gist para " +"reflejar las rutas reales que desea utilizar." #: ../Doc/howto/logging-cookbook.rst:779 msgid "Adding contextual information to your logging output" @@ -685,7 +729,7 @@ msgstr "que cuando se ejecuta, produce algo como:" #: ../Doc/howto/logging-cookbook.rst:938 msgid "Use of ``contextvars``" -msgstr "" +msgstr "Uso de ``contextvars``" #: ../Doc/howto/logging-cookbook.rst:940 msgid "" @@ -696,6 +740,13 @@ msgid "" "logs can populated with contextual information such as, for example, request " "attributes handled by web applications." msgstr "" +"Desde la versión 3.7 de Python, el módulo :mod:`contextvars` ha " +"proporcionado almacenamiento local de contexto que funciona tanto para las " +"necesidades de procesamiento de :mod:`threading` como de :mod:`asyncio`. " +"Este tipo de almacenamiento puede ser, por tanto, preferible a los hilos " +"locales. El siguiente ejemplo muestra cómo, en un entorno multihilo, los " +"logs pueden rellenarse con información contextual como, por ejemplo, los " +"atributos de las peticiones gestionadas por las aplicaciones web." #: ../Doc/howto/logging-cookbook.rst:946 msgid "" @@ -707,10 +758,19 @@ msgid "" "application's log file, while including in the log additional contextual " "information such as client IP, HTTP request method and client username?" msgstr "" +"A modo de ilustración, digamos que tienes diferentes aplicaciones web, cada " +"una de ellas independiente de la otra, pero que se ejecutan en el mismo " +"proceso de Python y utilizan una biblioteca común a todas ellas. ¿Cómo puede " +"cada una de estas aplicaciones tener su propio registro, donde todos los " +"mensajes de logging de la biblioteca (y otro código de procesamiento de " +"solicitudes) se dirigen al archivo de registro de la aplicación apropiada, " +"mientras se incluye en el registro información contextual adicional como la " +"IP del cliente, el método de solicitud HTTP y el nombre de usuario del " +"cliente?" #: ../Doc/howto/logging-cookbook.rst:953 msgid "Let's assume that the library can be simulated by the following code:" -msgstr "" +msgstr "Supongamos que la biblioteca se puede simular con el siguiente código:" #: ../Doc/howto/logging-cookbook.rst:969 msgid "" @@ -718,6 +778,9 @@ msgid "" "classes, ``Request`` and ``WebApp``. These simulate how real threaded web " "applications work - each request is handled by a thread:" msgstr "" +"Podemos simular las aplicaciones web múltiples mediante dos clases simples, " +"``Request`` y ``WebApp``. Éstas simulan cómo funcionan las aplicaciones web " +"reales con hilos, cada petición es manejada por un hilo:" #: ../Doc/howto/logging-cookbook.rst:1113 msgid "" @@ -729,11 +792,18 @@ msgid "" "dummy request will always appear together in a log line). This is " "illustrated by the following shell output:" msgstr "" +"Si ejecuta lo anterior, debería encontrar que aproximadamente la mitad de " +"las peticiones van a :file:`app1.log` y el resto a :file:`app2.log`, y las " +"todas las peticiones se registran en :file:`app.log`. Cada registro " +"específico de la aplicación web contendrá únicamente entradas de log para " +"esa aplicación web, y la información de las peticiones se mostrará de forma " +"consistente en el registro (es decir, la información de cada petición " +"ficticia aparecerá siempre junta en una línea de log). Esto se ilustra con " +"la siguiente salida del shell:" #: ../Doc/howto/logging-cookbook.rst:1160 -#, fuzzy msgid "Imparting contextual information in handlers" -msgstr "Usar filtros para impartir información contextual" +msgstr "Impartir información contextual en los gestores" #: ../Doc/howto/logging-cookbook.rst:1162 msgid "" @@ -742,6 +812,11 @@ msgid "" "handlers, you can use a filter that returns a new :class:`~LogRecord` " "instead of modifying it in-place, as shown in the following script::" msgstr "" +"Cada :class:`~Handler` tiene su propia cadena de filtros. Si quieres añadir " +"información contextual a una :class:`LogRecord` sin filtrarla a otros " +"gestores, puedes utilizar un filtro que retorna una nueva :class:" +"`~LogRecord` en lugar de modificarlo in situ, como se muestra en el " +"siguiente script::" #: ../Doc/howto/logging-cookbook.rst:1189 msgid "Logging to a single file from multiple processes" @@ -874,7 +949,7 @@ msgstr "a esto (recuerda el primer *import* :mod:`concurrent.futures`)::" #: ../Doc/howto/logging-cookbook.rst:1466 msgid "Deploying Web applications using Gunicorn and uWSGI" -msgstr "" +msgstr "Despliegue de aplicaciones web con Gunicorn y uWSGI" #: ../Doc/howto/logging-cookbook.rst:1468 msgid "" @@ -887,6 +962,15 @@ msgid "" "process management tool such as Supervisor - see `Running a logging socket " "listener in production`_ for more details." msgstr "" +"Cuando se despliegan aplicaciones web utilizando `Gunicorn `_ o `uWSGI `_ (o " +"similares), se crean múltiples procesos de trabajo para gestionar las " +"peticiones de los clientes. En estos entornos, evite crear gestores basados " +"directamente en archivos en su aplicación web. En su lugar, utilice un :" +"class:`SocketHandler` para registrar desde la aplicación web al oyente en un " +"proceso separado. Esto puede configurarse usando una herramienta de gestión " +"de procesos como Supervisor - vea `Running a logging socket listener in " +"production`_ para más detalles." #: ../Doc/howto/logging-cookbook.rst:1478 msgid "Using file rotation" @@ -953,7 +1037,7 @@ msgid "" msgstr "" "Cuando se agregó logging a la biblioteca estándar de Python, la única forma " "de formatear mensajes con contenido variable era usar el método de formateo " -"'%'. Desde entonces, Python ha ganado dos nuevos enfoques de formato: :class:" +"%. Desde entonces, Python ha ganado dos nuevos enfoques de formato: :class:" "`string.Template` (agregado en Python 2.4) y :meth:`str.format` (agregado en " "Python 2.6)." @@ -989,8 +1073,7 @@ msgid "" msgstr "" "Tenga en cuenta que el formato de logging para la salida final a los logs es " "completamente independiente de cómo se construye un mensaje de logging " -"individual. Para eso todavía puede usar el formateo \"%\", como se muestra " -"aquí:" +"individual. Para eso todavía puede usar el formateo %, como se muestra aquí:" #: ../Doc/howto/logging-cookbook.rst:1588 #, python-format @@ -2155,6 +2238,8 @@ msgstr "Por supuesto, puede utilizar las formas de decoración convencionales::" #: ../Doc/howto/logging-cookbook.rst:2899 msgid "Sending logging messages to email, with buffering" msgstr "" +"Enviando mensajes de logging al correo electrónico, con almacenamiento en " +"búfer" #: ../Doc/howto/logging-cookbook.rst:2901 msgid "" @@ -2166,6 +2251,14 @@ msgid "" "need to send things via SMTP. (Run the downloaded script with the ``-h`` " "argument to see the required and optional arguments.)" msgstr "" +"Para ilustrar cómo puede enviar mensajes de logging por correo electrónico, " +"de modo que se envíe un número determinado de mensajes, puede usar la " +"subclase :class:`~logging.handlers.BufferingHandler`. En el siguiente " +"ejemplo, que puedes adaptar a tus necesidades específicas, se proporciona un " +"sencillo arnés de pruebas que permite ejecutar el script con argumentos de " +"línea de comandos especificando lo que normalmente necesitas para enviar " +"cosas por SMTP. (Ejecute el script descargado con el argumento ``-h`` para " +"ver los argumentos necesarios y opcionales)." #: ../Doc/howto/logging-cookbook.rst:2973 msgid "" @@ -2174,19 +2267,23 @@ msgid "" "emails will each have ten log messages, and the eleventh will have two " "messages. That makes up 102 messages as specified in the script." msgstr "" +"Si ejecuta este script y su servidor SMTP está correctamente configurado, " +"debería ver que envía once correos electrónicos al destinatario que usted " +"especifique. Los primeros diez correos electrónicos tendrán cada uno diez " +"mensajes de log, y el undécimo tendrá dos mensajes. Eso hace 102 mensajes " +"como se especifica en el script." #: ../Doc/howto/logging-cookbook.rst:2981 msgid "Formatting times using UTC (GMT) via configuration" msgstr "Formateo de horas usando UTC (GMT) a través de la configuración" #: ../Doc/howto/logging-cookbook.rst:2983 -#, fuzzy msgid "" "Sometimes you want to format times using UTC, which can be done using a " "class such as ``UTCFormatter``, shown below::" msgstr "" "A veces desea formatear las horas usando UTC, lo que se puede hacer usando " -"una clase como `UTCFormatter`, como se muestra a continuación::" +"una clase como ``UTCFormatter``, como se muestra a continuación::" #: ../Doc/howto/logging-cookbook.rst:2992 msgid "" @@ -2471,7 +2568,7 @@ msgstr "" #: ../Doc/howto/logging-cookbook.rst:3550 msgid "Logging to syslog with RFC5424 support" -msgstr "" +msgstr "Logging en syslog con soporte RFC5424" #: ../Doc/howto/logging-cookbook.rst:3552 msgid "" @@ -2482,6 +2579,13 @@ msgid "" "been widespread deployment of it in syslog servers, the :class:`~logging." "handlers.SysLogHandler` functionality has not been updated." msgstr "" +"Aunque :rfc:`5424` data de 2009, la mayoría de los servidores de syslog " +"están configurados por defecto para utilizar el antiguo :rfc:`3164`, que " +"data de 2001. Cuando se añadió ``logging`` a Python en 2003, soportaba el " +"anterior (y único existente) protocolo en ese momento. Desde que salió el " +"RFC5424, como no ha habido un despliegue generalizado del mismo en los " +"servidores de syslog, la funcionalidad :class:`~logging.handlers." +"SysLogHandler` no ha sido actualizada." #: ../Doc/howto/logging-cookbook.rst:3559 msgid "" @@ -2489,6 +2593,10 @@ msgid "" "and if you need to be able to log to a syslog server with support for it, " "you can do so with a subclassed handler which looks something like this::" msgstr "" +"El RFC 5424 contiene algunas características útiles como el soporte para " +"datos estructurados, y si necesitas poder registrar en un servidor syslog " +"con soporte para ello, puedes hacerlo con una subclase *handler* que se " +"parezca a esto::" #: ../Doc/howto/logging-cookbook.rst:3625 msgid "" @@ -2498,10 +2606,16 @@ msgid "" "your speciric needs. With the above handler, you'd pass structured data " "using something like this::" msgstr "" +"Tendrá que estar familiarizado con el RFC 5424 para entender completamente " +"el código anterior, y puede ser que tenga necesidades ligeramente diferentes " +"(por ejemplo, para la forma de pasar los datos estructurales al log). No " +"obstante, lo anterior debería poder adaptarse a sus necesidades específicas. " +"Con el gestor anterior, usted pasaría datos estructurados usando algo como " +"esto::" #: ../Doc/howto/logging-cookbook.rst:3639 msgid "How to treat a logger like an output stream" -msgstr "" +msgstr "Cómo tratar un logger como una salida stream" #: ../Doc/howto/logging-cookbook.rst:3641 msgid "" @@ -2510,17 +2624,22 @@ msgid "" "logger. You can do this using a class which wraps a logger with a file-like " "API. Here's a short script illustrating such a class:" msgstr "" +"A veces, necesitas interactuar con una API de terceros que espera un objeto " +"tipo archivo para escribir, pero quieres dirigir la salida de la API a un " +"logger. Puedes hacer esto usando una clase que envuelva un logger con una " +"API tipo archivo. Aquí hay un pequeño script que ilustra tal clase:" #: ../Doc/howto/logging-cookbook.rst:3681 -#, fuzzy msgid "When this script is run, it prints" -msgstr "Cuando se ejecuta el script anterior, se imprime:" +msgstr "Cuando se ejecuta este script, se imprime" #: ../Doc/howto/logging-cookbook.rst:3688 msgid "" "You could also use ``LoggerWriter`` to redirect ``sys.stdout`` and ``sys." "stderr`` by doing something like this:" msgstr "" +"También puedes usar ``LoggerWriter`` para redirigir ``sys.stdout`` y ``sys." +"stderr`` haciendo algo así:" #: ../Doc/howto/logging-cookbook.rst:3698 msgid "" @@ -2529,6 +2648,11 @@ msgid "" "stderr`` value *before* it is overwritten by a ``LoggerWriter`` instance). " "Then, you'd get this kind of result:" msgstr "" +"Debería hacer esto *después* de configurar logging para sus necesidades. En " +"el ejemplo anterior, la llamada :func:`~logging.basicConfig` hace esto " +"(utilizando el valor de ``sys.stderr`` *antes* de que sea sobrescrito por " +"una instancia de ``LoggerWriter``). Entonces, obtendrías este tipo de " +"resultado:" #: ../Doc/howto/logging-cookbook.rst:3711 msgid "" @@ -2536,6 +2660,9 @@ msgid "" "func:`~logging.basicConfig`, but you can use a different formatter when you " "configure logging." msgstr "" +"Por supuesto, los ejemplos anteriores muestran la salida según el formato " +"utilizado por :func:`~logging.basicConfig`, pero puede utilizar un " +"formateador diferente cuando configure logging." #: ../Doc/howto/logging-cookbook.rst:3715 msgid "" @@ -2543,10 +2670,14 @@ msgid "" "and the sequence of write calls which you are intercepting. For example, " "with the definition of ``LoggerWriter`` above, if you have the snippet" msgstr "" +"Ten en cuenta que con el esquema anterior, estás un poco a merced del " +"buffering y de la secuencia de llamadas de escritura que estás " +"interceptando. Por ejemplo, con la definición de ``LoggerWriter`` anterior, " +"si tienes el fragmento" #: ../Doc/howto/logging-cookbook.rst:3724 msgid "then running the script results in" -msgstr "" +msgstr "entonces la ejecución del script da como resultado" #: ../Doc/howto/logging-cookbook.rst:3742 msgid "" @@ -2557,12 +2688,20 @@ msgid "" "when newlines are seen. Let's use a slghtly better implementation of " "``LoggerWriter``:" msgstr "" +"Como puedes ver, esta salida no es ideal. Esto se debe a que el código " +"subyacente que escribe en ``sys.stderr`` hace múltiples escrituras, cada una " +"de las cuales resulta en una línea de registro separada (por ejemplo, las " +"tres últimas líneas de arriba). Para evitar este problema, es necesario " +"almacenar las cosas y sólo emitir líneas de logging cuando se vean nuevas " +"líneas. Utilicemos una implementación ligeramente mejor de ``LoggerWriter``:" #: ../Doc/howto/logging-cookbook.rst:3767 msgid "" "This just buffers up stuff until a newline is seen, and then logs complete " "lines. With this approach, you get better output:" msgstr "" +"Esto sólo almacena cosas hasta que se ve una nueva línea, y luego registra " +"las líneas completas. Con este enfoque, se obtiene una mejor salida:" #: ../Doc/howto/logging-cookbook.rst:3783 msgid "Patterns to avoid" @@ -2648,7 +2787,6 @@ msgstr "" "que apunten al mismo archivo." #: ../Doc/howto/logging-cookbook.rst:3817 -#, fuzzy msgid "" "An attempt to delete a file (e.g. during file rotation) silently fails, " "because there is another reference pointing to it. This can lead to " @@ -2661,7 +2799,9 @@ msgstr "" "archivos) falla silenciosamente, porque hay otra referencia que apunta a él. " "Esto puede generar confusión y una pérdida de tiempo de depuración: las " "entradas del registro terminan en lugares inesperados o se pierden por " -"completo." +"completo. O un archivo que debía ser movido permanece en su lugar, y crece " +"en tamaño inesperadamente a pesar de que la rotación basada en el tamaño " +"está supuestamente en su lugar." #: ../Doc/howto/logging-cookbook.rst:3824 msgid "" @@ -2740,14 +2880,12 @@ msgstr "" #: ../Doc/howto/logging-cookbook.rst:3860 msgid "Other resources" -msgstr "" +msgstr "Otros recursos" #: ../Doc/howto/logging-cookbook.rst:3873 -#, fuzzy msgid ":ref:`Basic Tutorial `" -msgstr ":ref:`Un tutorial básico de logging `" +msgstr ":ref:`Tutorial Básico `" #: ../Doc/howto/logging-cookbook.rst:3875 -#, fuzzy msgid ":ref:`Advanced Tutorial `" -msgstr ":ref:`Un tutorial de logging más avanzado `" +msgstr ":ref:`Tutoriol Avanzado `" pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy