python logging 开局
python logging 开局
import logging
from configparser import ConfigParser
import os
def set_log_level(file_config_path="",file_log_path="",file_log_level="INFO",console_log_level="INFO",simple_format=True):
#log_level will be usefull while file_config_path and file_log_path both are empty string
level_dict={
'CRITICAL' : logging.CRITICAL,
'FATAL' : logging.FATAL,
'ERROR' : logging.ERROR,
'WARNING' : logging.WARNING,
'WARN' : logging.WARN,
'INFO' : logging.INFO,
'DEBUG' : logging.DEBUG,
'NOTSET' : logging.NOTSET
}
'''
;配置文件样式 如下
;日志等级:
;FATAL:致命错误
;CRITICAL:特别糟糕的事情,如内存耗尽、磁盘空间为空,一般很少使用
;ERROR:发生错误时,如IO操作失败或者连接问题
;WARNING:发生很重要的事件,但是并不是错误时,如用户登录密码错误
;INFO:处理请求或者状态变化等日常事务
;DEBUG:调试过程中使用DEBUG等级,如算法中每个循环的中间状态
;CRITICAL = 50
;FATAL = CRITICAL
;ERROR = 40
;WARNING = 30
;WARN = WARNING
;INFO = 20
;DEBUG = 10
;NOTSET = 0
[default]
fileloglevel=INFO
consoleloglevel=WARN
'''
# 如果存在配置文件,level 从文件中读取
if file_config_path != "":
myConf=ConfigParser()
myConf.read(file_config_path,encoding='utf-8')
fileloglevel=myConf.get("default","fileloglevel")
consoleloglevel=myConf.get("default","consoleloglevel")
#如果不存在配置文件,level从文件的入参读取
else:
fileloglevel = file_log_level
consoleloglevel = console_log_level
#logger默认配置
logger = logging.getLogger(__name__)
logger.setLevel(level=logging.DEBUG)
#日志是否要打印时间,level,调用者等信息
if not simple_format :
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
else:
formatter = logging.Formatter('%(message)s')
#如果要记录日志到文件中,(入参有包含文件日志路径)
if file_log_path !="":
filehandler = logging.FileHandler(file_log_path, mode="w",encoding='UTF-8')
filehandler.setLevel(level_dict[fileloglevel])
filehandler.setFormatter(formatter)
logger.addHandler(filehandler)
#控制台日志配置
console_handler = logging.StreamHandler()
console_handler.setLevel(level_dict[consoleloglevel])
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
return logger
if __name__ == '__main__':
logger = set_log_level(file_log_path="test.log")
logger.debug("debug info")
logger.info("this is a info")
logger.warning("there is a warning")
logger.error("error!!!!")
logger.fatal("fatal!!!!!")
os.startfile('test.log')
浙公网安备 33010602011771号