setlevel print logger log info found for example disable_existing_loggers could python logging

print - Python logging y rotando archivos



python logging disable_existing_loggers (4)

Es posible que desee consultar WatchedFileHandler para implementar esto o, como alternativa, implementar la rotación de registros con RotatingFileHandler , ambos de los cuales se encuentran en el módulo logging.handlers .

Tengo un programa python que está escribiendo en un archivo de registro que está siendo rotado por el comando logrotate de Linux. Cuando esto suceda, debo indicar a mi programa que deje de escribir en el archivo anterior y comience a escribir en el nuevo. Puedo manejar la señal, pero ¿cómo le digo a Python que escriba en el nuevo archivo?

Estoy abriendo el archivo así:

logging.basicConfig(format=''%(asctime)s:%(filename)s:%(levelname)s:%(message)s'',filename=log_file, level=logging.INFO)

y escribiéndole así:

logging.log(level,"%s" % (msg))

Los módulos de registro se ven muy poderosos pero también abrumadores. Gracias.


No use logging.basicConfig , use WatchedFileHandler . Aquí es cómo usarlo.

import time import logging import logging.handlers def log_setup(): log_handler = logging.handlers.WatchedFileHandler(''my.log'') formatter = logging.Formatter( ''%(asctime)s program_name [%(process)d]: %(message)s'', ''%b %d %H:%M:%S'') formatter.converter = time.gmtime # if you want UTC time log_handler.setFormatter(formatter) logger = logging.getLogger() logger.addHandler(log_handler) logger.setLevel(logging.DEBUG) log_setup() logging.info(''Hello, World!'') import os os.rename(''my.log'', ''my.log-old'') logging.info(''Hello, New World!'')


Ya que la rotación ya está siendo realizada por logrotate , en su controlador de señales, debe llamar de nuevo logging.basicConfig(...) y eso debería volver a abrir el archivo de registro.


from logging import handlers handler = handlers.TimedRotatingFileHandler(filename, when=LOG_ROTATE) handler.setFormatter(logging.Formatter(log_format, datefmt="%d-%m-%Y %H:%M:%S")) #LOG_ROTATE = midnight #set your log format

Esto debería ayudarlo a manejar el registro giratorio.