"""
# filename: 文件名
# format: 数据的格式化输出. 最终在日志文件中的样子
# 时间-名称-级别-模块: 错误信息
# datefmt: 时间的格式
# level: 错误的级别权重, 当错误的级别权重⼤于等于leval的时候才会写入⽂件
logging.basicConfig(filename='x1.txt',
format='%(asctime)s - %(name)s - %(levelname)s -%
(module)s: %(message)s',datefmt='%Y-%m-%d %H:%M:%S',level=10)
# 当前配置表示10以上的分数会被写⼊文件
# CRITICAL = 50
# FATAL = CRITICAL
# ERROR = 40
# WARNING = 30
# WARN = WARNING
# INFO = 20
# DEBUG = 10
# NOTSET = 0
logging.critical("我是critical") # 50分
logging.error("我是error") # 40分
logging.warning("我是警告") # 30
logging.info("我是基本信息") # 20
logging.debug("我是调试") # 10
logging.log(2, "我是自定义") # 自定义,看着给分;
可以设置不同的日志等级,用于控制日志的输出,
日志等级:使用范围
FATAL:致命错误
CRITICAL:特别糟糕的事情,如内存耗尽、磁盘空间为空,一般很少使用
ERROR:发生错误时,如IO操作失败或者连接问题
WARNING:发生很重要的事件,但是并不是错误时,如用户登录密码错误
INFO:处理请求或者状态变化等日常事务
DEBUG:调试过程中使用DEBUG等级,如算法中每个循环的中间状态
"""
# 一般会通过文件助手(FileHandler)来记录一个或多个日志
import logging
# 创建一个操作⽇志的对象logger(依赖FileHandler)
file_handler = logging.FileHandler('l1.log', 'a', encoding='utf-8')
file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - % (levelname)s -%(module)s: %(message)s"))
logger1 = logging.Logger('s1', level=logging.ERROR)
logger1.addHandler(file_handler)
logger1.error('我是A系统')
# 再创建一个操作日志的对象logger(依赖FileHandler)
file_handler2 = logging.FileHandler('l2.log', 'a', encoding='utf-8')
file_handler2.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s"))
logger2 = logging.Logger('s2', level=logging.ERROR)
logger2.addHandler(file_handler2)
logger2.error('我是B系统')
# FileHandler 实例
import logging
import traceback
class LoggerHelper(object):
_i = None
@classmethod
def instance(cls):
if cls._i:
return cls._i
else:
cls._i = LoggerHelper() # LoggerHelper()
return cls._i # obj
def __init__(self):
error_log_file = logging.FileHandler('cdn_refersh_error.log', 'a+', encoding='utf-8')
error_log_fmt = logging.Formatter(fmt="%(asctime)s %(name)s %(message)s")
error_log_file.setFormatter(error_log_fmt)
error_logger = logging.Logger('ERROR', level=logging.ERROR)
error_logger.addHandler(error_log_file)
self.error_logger = error_logger
access_log_file = logging.FileHandler('cdn_refersh_access.log', 'a+', encoding='utf-8')
access_log_fmt = logging.Formatter(fmt="%(asctime)s %(name)s %(message)s")
access_log_file.setFormatter(access_log_fmt)
access_logger = logging.Logger('INFO', level=logging.INFO)
access_logger.addHandler(access_log_file)
self.access_logger = access_logger
log = LoggerHelper.instance()
try:
print(1 / 0)
except Exception as e:
log.error_logger.log(logging.ERROR, e)
log.error_logger.error(traceback.format_exc())
log.access_logger.log(logging.INFO, e)
log.access_logger.info(e)