¿Cómo puedo usar el módulo de registro en Python para escribir en un archivo? Cada vez que intento usarlo, simplemente imprime el mensaje.
128
Un ejemplo de uso en logging.basicConfig
lugar delogging.fileHandler()
logging.basicConfig(filename=logname,
filemode='a',
format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
datefmt='%H:%M:%S',
level=logging.DEBUG)
logging.info("Running Urban Planning")
self.logger = logging.getLogger('urbanGUI')
En orden, las cinco partes hacen lo siguiente:
filename=logname
)filemode='a'
)format=...
)datefmt='%H:%M:%S'
)level=logging.DEBUG
).
if __name__ == '__main__':
si se ejecuta en apacheif __name__ == '__main__':
no se ejecuta.Tomado del " libro de recetas de registro ":
Y estás listo para irte.
PD: Asegúrate de leer también el CÓMO de registro .
fuente
logger.warning("message")
, no puedo usarlogger.info("message")
nilogger.debug("message")
. Eso es un poco molesto.logger.setLevel(logging.DEBUG)
. Los registradores se pueden configurar con varios controladores; el nivel configurado en el registrador determina qué mensajes de registro de nivel de gravedad enviar a cada uno de sus controladores, y los niveles establecidos en los controladores determinan qué niveles procesará el controlador. Tenga en cuenta que aquellos que quieran imprimir mensajes de información solo necesitan configurar estoINFO
tanto en el registrador como en el controlador.logger.setLevel(logging.DEBUG)
- gracias por los comentariosPrefiero usar un archivo de configuración. Me permite cambiar los niveles de registro, las ubicaciones, etc. sin cambiar el código cuando paso del desarrollo al lanzamiento. Simplemente empaqueto un archivo de configuración diferente con el mismo nombre y con los mismos registradores definidos.
Aquí está mi código para el archivo de configuración de registro
fuente
%%
en Python 3. por ejemplotime.strftime("%%Y%%m%%D")
http://docs.python.org/library/logging.html#logging.basicConfig
fuente
logging
documentación oficial del módulo lo permite. Incluso puedes elegir qué registros van a la terminal y cuáles van a un archivo, y muchas más aplicaciones interesantes. docs.python.org/3/howto/…aquí hay una forma más sencilla de hacerlo. esta solución no usa un diccionario de configuración y usa un controlador de archivos de rotación, así:
o así:
la variable de los manejadores debe ser iterable. logpath + filename y debug_level son solo variables que contienen la información respectiva. por supuesto, los valores para los parámetros de la función dependen de usted.
la primera vez que estaba usando el módulo de registro cometí el error de escribir lo siguiente, lo que genera un error de bloqueo del archivo del sistema operativo (lo anterior es la solución):
¡y Bob es tu tío!
fuente
http://docs.python.org/library/logging.handlers.html#filehandler
fuente
FileHandler
electrónico para diversas situaciones. (WatchedFileHandler
,RotatingFileHandler
, Etc.)fuente
fuente
Descripción del formato
Forma normal de llamar
Salida
Usando Dict, valores de llamada
otherMod2.py
Salida
fuente