values multiple loggeradapter logger log example disable_existing_loggers python datetime logging formatting

multiple - python logging example



¿Cómo personalizar el formato de hora para el registro de Python? (4)

De la documentación oficial sobre la clase de formateador:

El constructor toma dos argumentos opcionales: una cadena de formato de mensaje y una cadena de formato de fecha.

Entonces cambia

# create formatter formatter = logging.Formatter("%(asctime)s;%(levelname)s;%(message)s")

a

# create formatter formatter = logging.Formatter("%(asctime)s;%(levelname)s;%(message)s", "%Y-%m-%d %H:%M:%S")

Soy nuevo en el paquete de registro de Python y planeo usarlo para mi proyecto. Me gustaría personalizar el formato de tiempo a mi gusto. Aquí hay un código corto que copié de un tutorial:

import logging # create logger logger = logging.getLogger("logging_tryout2") logger.setLevel(logging.DEBUG) # create console handler and set level to debug ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # create formatter formatter = logging.Formatter("%(asctime)s;%(levelname)s;%(message)s") # add formatter to ch ch.setFormatter(formatter) # add ch to logger logger.addHandler(ch) # "application" code logger.debug("debug message") logger.info("info message") logger.warn("warn message") logger.error("error message") logger.critical("critical message")

Y aquí está el resultado:

2010-07-10 10:46:28,811;DEBUG;debug message 2010-07-10 10:46:28,812;INFO;info message 2010-07-10 10:46:28,812;WARNING;warn message 2010-07-10 10:46:28,812;ERROR;error message 2010-07-10 10:46:28,813;CRITICAL;critical message

Me gustaría acortar el formato del tiempo para simplemente '' 2010-07-10 10:46:28 '', dejando caer el sufijo mili-segundo. Miré el Formatter.formatTime, pero confundido. Agradezco tu ayuda para lograr mi objetivo. Gracias.


Para agregar a las otras respuestas, aquí están las listas de variables de la documentación de Python.

Directive Meaning Notes %a Locale’s abbreviated weekday name. %A Locale’s full weekday name. %b Locale’s abbreviated month name. %B Locale’s full month name. %c Locale’s appropriate date and time representation. %d Day of the month as a decimal number [01,31]. %H Hour (24-hour clock) as a decimal number [00,23]. %I Hour (12-hour clock) as a decimal number [01,12]. %j Day of the year as a decimal number [001,366]. %m Month as a decimal number [01,12]. %M Minute as a decimal number [00,59]. %p Locale’s equivalent of either AM or PM. (1) %S Second as a decimal number [00,61]. (2) %U Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0. (3) %w Weekday as a decimal number [0(Sunday),6]. %W Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0. (3) %x Locale’s appropriate date representation. %X Locale’s appropriate time representation. %y Year without century as a decimal number [00,99]. %Y Year with century as a decimal number. %z Time zone offset indicating a positive or negative time difference from UTC/GMT of the form +HHMM or -HHMM, where H represents decimal hour digits and M represents decimal minute digits [-23:59, +23:59]. %Z Time zone name (no characters if no time zone exists). %% A literal ''%'' character.


Usando logging.basicConfig, el siguiente ejemplo funciona para mí:

logging.basicConfig( filename=''HISTORYlistener.log'', level=logging.DEBUG, format=''%(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s'', datefmt="%Y-%m-%d %H:%M:%S")

Esto le permite formatear y configurar todo en una línea. Un registro de registro resultante se ve de la siguiente manera:

2014-05-26 12: 22: 52.376 historylistener CRÍTICO - principal: el registro de historial no se pudo iniciar


si usa logging.config.fileConfig con un archivo de configuración, use algo como:

[formatter_simpleFormatter] format=%(asctime)s - %(name)s - %(levelname)s - %(message)s datefmt=%Y-%m-%d %H:%M:%S