import logging from logging.handlers import TimedRotatingFileHandler, RotatingFileHandler '' ' 级别 有 如下 : level = logging.NOTSET 0 level = logging.DEBUG 10 level = logging.INFO 20 level = logging.WARNING 30 level = logging.ERROR 40 level = logging .CRITICAL 50 logging.debug ('Este es un mensaje de depuración') logging.info ('Este es un mensaje de información') logging.warning ('Este es un mensaje de advertencia') logging.error ('Este es un mensaje de error' ) logging.critical ('Este es un mensaje crítico') logging.exception ('') 捕获 异常 # 写法 一 logging.basicConfig (filename = "test.log", filemode = "w", format = "% (asctime) s:% (pathname) s: 第% (lineno) d 行:% ( nombre) s:% (nombre de nivel) s:% (mensaje) s ", datefmt = "% Y-% m-% d% H:% M:% S", nivel = logging.NOTSET) a = 5 b = 0 try: c = a / b logging.info ('Este es un mensaje de información ') excepto Excepción como e: # 下面 三种 方式 三 选 一 , 推荐 使用 第 一种 # logging.exception ("Excepción ocurrida") # logging.error ("Excepción ocurrida", exc_info = True) # logging.log ( level = logging.DEBUG, msg = "Se produjo una excepción", exc_info = True) logging.error ('Esto es un mensaje de error') '' ' # 写法 二 logger = logging.getLogger ("logger") logger.setLevel (logging.DEBUG) logger.propagate = False handler1 = logging.StreamHandler () # handler2 = logging.FileHandler (filename = "test.log") '' ' TimedRotatingFileHandler (nombre de archivo [, cuando [, intervalo [, backupCount]]]) nombre de archivo es el prefijo del nombre del archivo de registro de salida y cuando una cadena se define de la siguiente manera: “S”: segundos “M”: minutos “H”: horas “D”: días “W”: día de la semana (0 = lunes) “medianoche ": Desplazarse en el intervalo de medianoche se refiere a cuántas unidades de tiempo de espera, Logger reconstruirá automáticamente el archivo, por supuesto, la creación de este archivo depende del nombre de archivo + sufijo, si este archivo tiene el mismo nombre que el archivo anterior, automáticamente Sobrescriba el archivo anterior, por lo que en algunos casos la definición de sufijo no puede repetirse debido a cuándo. backupCount es el número de registros retenidos. El valor predeterminado 0 no es eliminar automáticamente el registro. Si se establece en 10, la biblioteca determinará si hay más de 10 en el proceso de creación del archivo. Si excede, se eliminará del primero creado. '' ' # handler2 = TimedRotatingFileHandler (filename = "test.log", when = 'S', encoding = 'utf8', intervalo = 3, backupCount = 3) handler2 = RotatingFileHandler (filename = "test.log", mode = 'a' , maxBytes = 1, encoding = 'utf8', backupCount = 3) '' ' handler1.setLevel (logging.WARNING) handler2.setLevel (logging.WARNING) ' '' format_str = "% (asctime) s:% (pathname) s: 第% (lineno) d 行:% (nombre) s:% (nombre de nivel) s:% (mensaje) s " datefmt = '% Y-% m-% d% H:% M:% S' formatter = logging.Formatter (format_str, datefmt) handler1.setFormatter (formatter) handler2.setFormatter (formatter) logger.addHandler (handler1) logger.addHandler (handler2) a = 5 b = 0 try: c = a / b logger. info ('Este es un mensaje de información') excepto Excepción como e: # 下面 三种 方式 三 选 一 , 推荐 使用 第 一种 # logging.exception ("Se produjo una excepción") # logging.error ("Se produjo una excepción", exc_info = True) # logging.log (level = logging.DEBUG, msg = "Se produjo una excepción", exc_info = True) logger.error ('Este es un mensaje de error')
Fuente: https://blog.csdn.net/tangwendi/article/details/94843555