【Python】loguru模块_打印日志


loguru

安装及使用

# 安装
pip install loguru
# 引用
from loguru import logger as logs

# 打印日志
logs.debug("debug")
logs.warning("warning"

执行结果:

生成日志文件

# 写入文件
logg.add("logs_20220415.log")
# 将日志保存在当前路径上一级目录的logs目录下,命名为 log_name 
log_name = "log_{}.log".format(datetime.datetime.now().strftime('%Y%m%d'))
logs.add(sink=os.path.abspath("..") + "\\logs\\{}".format(log_name), level=log_level.upper()) 
# 设置生成日志文件,utf-8编码,每天0点切割,zip压缩,保留3天,异步写入 
logs.add(sink='test.log', level="INFO", rotation="00:00", retention="3 days", compression="zip", encoding="utf-8", enqueue=True)
# rotation 参数,文件记录条件
logs.add("file_name1.log", rotation="50MB")    # 超过50MB即生成新文件
logs.add("file_name1.log", rotation="12:00")    # 每天12点生成新文件
logs.add("file_name1.log", rotation="1 week")    # 每1周 生成新文件
logs.add("file_name1.log", rotation="3 days")    # 每3天 生成新文件
# compression 参数 配置文件压缩格式
logs.add("file_name1.log", compression="zip")    # 压缩成zip
# 仅输出到文件 不打印到控制台

# 删除以前添加的处理程序并停止向其接收器发送日志。
logs.remove(handler_id=None)     # 移除控制台输出
# 添加logging 集成loguru输出到控制台(及html报告)
class PropogateHandler(logging.Handler):
    def emit(self, record):
        logging.getLogger(record.name).handle(record)
logs.add(PropogateHandler(), format="{time:YYYY-MM-DD at HH:mm:ss} | {message}"

执行结果:

异常捕获

catch装饰器的方式实现异常捕获

    @logs.catch
    def test_case_logc(self):
        anv = ""
        return anv[0]

执行结果:

exception方法也可以实现异常的捕获与记录

    def test_case_logc(self):
        try:
            1/0
        except:
            logs.exception("异常捕获")

执行结果: