1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #coding:utf-8 import logging import sys import os import datetime from logging import handlers class Logger( object ): def __init__( self ,name): LOGGING_TO_CONSOLE = True LOGGING_LEVEL = logging.DEBUG LOGGING_FORMATTER = '%(asctime)s|%(filename)s %(funcName)s|line:%(lineno)d|%(levelname)s|%(message)s' logger = logging.getLogger(name) logger.setLevel(LOGGING_LEVEL) path = os.path.abspath( "../log" ) data = datetime.date.today() filename = os.path.join(path, str (data).replace( "-" ," ")+" .log") if not os.path.isdir(path): os.mkdir(path) formatter = logging.Formatter(LOGGING_FORMATTER,datefmt = '%Y-%m-%d %X' ) # file_handler = handlers.TimedRotatingFileHandler(filename=filename, when="h", interval=1, backupCount=10) # file_handler.suffix = "%Y.%m.%d_%H.log" # file_handler.setFormatter(formatter) # logger.addHandler(file_handler) handler = handlers.RotatingFileHandler(filename, mode = 'a+' ,maxBytes = 1024 , backupCount = 10 ) handler.setFormatter(formatter) logger.addHandler(handler) if LOGGING_TO_CONSOLE: stream_handler = logging.StreamHandler(sys.stderr) stream_handler.setFormatter(formatter) logger.addHandler(stream_handler) self .logger = logger def getLogger( self ): return self .logger |
[test.py]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from logger import Logger logger = Logger( "my_log" ).getLogger() def test(): try : b = 9 * 9 4 / 0 logger.info( "b={}" . format (b)) except Exception as e: print ( "except:{}" . format (e)) logger.error(e) test() #2022-07-27 14:43:09|tests.py test|line:13|INFO|b=81 #2022-07-27 14:43:14|tests.py test|line:16|INFO|division by zero |
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统