【1】如何优雅的记录日志? logging

2019-09-29 17:41:04 浏览数 (2)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_40313634/article/details/100782614

logging 模块

1 小例子: 在log文件输出log

代码语言:javascript复制
# 内置库,不用安装
import logging 


logging.basicConfig(
    filename="test.log",  # 日志保存文件
    filemode="w",  # 文件权限
    datefmt="%d-%M-%Y %H:%M:%S",  # 打印的时间格式
    format="%(asctime)s %(name)s:%(levelname)s:%(message)s",  # 打印的日志消息的格式
    level=logging.DEBUG  # 打印的日志级别 >= 此级别的信息会被打印:NOTSET、DEBUG、INFO、WARNING、ERROR、CRITICAL
)

logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
结果
代码语言:javascript复制
# test.log
12-40-2019 14:40:17 root:DEBUG:This is a debug message
12-40-2019 14:40:17 root:INFO:This is an info message
12-40-2019 14:40:17 root:WARNING:This is a warning message
12-40-2019 14:40:17 root:ERROR:This is an error message
12-40-2019 14:40:17 root:CRITICAL:This is a critical message
异常消息捕获
代码语言:javascript复制
try:
    10 / 0
except Exception as e:
    logging.exception(e)

参数

参数名

参数描述

filename

日志输出到文件的文件名

filemode

文件模式,r[ ]、w[ ]、a[ ]

format

日志输出的格式

datefat

日志附带日期时间的格式

style

格式占位符,默认为 “%” 和 “{}”

level

设置日志输出级别(默认:WARNING)

2 分别在控制台、log 文件输出不同的log消息

代码语言:javascript复制
import logging
import logging.handlers


# 根logger对象,后面所有的日志输出都调的是它
logger = logging.getLogger("logger")

# handler1: 输出到屏幕; handler2: 输出到文件
handler1 = logging.StreamHandler()
handler2 = logging.FileHandler(filename="test.log", encoding="utf-8")

# 屏幕打印error级别消息; 文件输出DEBUG级别消息
handler1.setLevel(logging.ERROR)
handler2.setLevel(logging.DEBUG)

formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s")
handler1.setFormatter(formatter)
handler2.setFormatter(formatter)

logger.addHandler(handler1)
logger.addHandler(handler2)

logger.info('This is an customer info message')
logger.debug('This is a customer debug message')
logger.warning('This is a customer warning message')
logger.error('This is an customer error message')
logger.critical('This is a custo

0 人点赞