一、说明
日志模块是对 logging 模块的单例封装
特点:
- 可同时向控制台和文件输出日志,并可选择关闭其中一种方式的输出;
- 集成colorlog,实现根据日志等级不同,控制台输出日志颜色不同;
- 灵活切换是否输出调试内容
二、简单示例
安装 iupdatable 包
pip install --upgrade iupdatable
使用实例:
1 from iupdatable.logging.Logger import Logger 2 from iupdatable.logging.LogLevel import LogLevel 3 4 5 def test_logging(): 6 # 日志等级: 7 # CRITICAL 同:FATEL,下同 8 # ERROR 9 # WARNING 10 # INFO 11 # DEBUG 12 # NOTSET 按照 WARNING 级别输出 13 14 # 设置为 DEBUG,输出所有信息 15 # 设置为 WARNING, INFO、DEBUG 级别的日志就不会输出 16 Logger.get_instance().config(log_level=LogLevel.DEBUG) 17 18 Logger.get_instance().debug('debug message1') 19 Logger.get_instance().info('info message1') 20 Logger.get_instance().warning('warning message1') 21 Logger.get_instance().error('error message1') 22 Logger.get_instance().debug('debug message1', is_with_debug_info=True) # 要想输出具体的调试信息 23 Logger.get_instance().fatal('fatal message1') 24 Logger.get_instance().critical('critical message1') # fatal = critical 25 26 # 也可以输出变量 27 abc = [1, 2, 4] 28 Logger.get_instance().info(abc) 29 30 31 test_logging()
控制台输出:
上面的内容也会同时输出到 all.log 的日志文件中,此外 all.log 的日志会在新一天开始对日志按照天进行归档。
三、参数说明
1. Logger.get_instance().config(...)
该函数用于设置日志的各项配置
建议在日志使用前调用该函数。不调用该函数,直接使用日志的话,后台会按照默认参数调用该函数。
日志的使用过程中也可以重新调用该函数,对日志进行重新设置。
全部参数说明如下:
log_level: 日志输出等级,参考:LogLevel 的值,默认为 DEBUG 等级 log_file_full_path: 日志输出的文件名的完整路径,默认:all.log date_format: 每天日志前日期时间的格式,默认: %Y-%m-%d %H:%M:%S is_with_datetime: 是否在每条日志前添加日期时间,默认:True is_with_level: 是否在每天日志前添加日志等级,默认:True is_output_file: 是否将日志输出到文件,默认:True is_output_console: 是否将日志输出到控制台,默认:True is_colored: 是否将控制台的输出设为彩色,默认:True
2. is_with_debug_info
这个一个可选参数,所有的日志函数均有该项,表示是否在输出的日志中添加调试信息,包括:文件的具体位置,函数名,代码的行号,默认:False,即:默认不添加
使用下面代码举例:
1 from iupdatable.logging.Logger import Logger 2 from iupdatable.logging.LogLevel import LogLevel 3 4 5 def logging_debug_info(): 6 Logger.get_instance().debug('message', is_with_debug_info=True) 7 Logger.get_instance().info('message', is_with_debug_info=True) 8 Logger.get_instance().warning('message', is_with_debug_info=True) 9 Logger.get_instance().error('message', is_with_debug_info=True) 10 Logger.get_instance().fatal('message', is_with_debug_info=True) 11 Logger.get_instance().critical('message', is_with_debug_info=True) 12 13 14 logging_debug_info()
输出内容就会变成:
主要用途是在try except中使用,方便在日志中定位出错信息:
try: print('to do') except Exception as e: Logger.error(repr(e), is_with_debug_info=True)