ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

日志处理logging

2022-09-11 13:00:31  阅读:199  来源: 互联网

标签:logging 处理 handler file --% 日志 logger


前言

  什么是日志?有什么作用?日志是跟踪软件运行时所发生的事件的一种方法,简单来说它可以记录某时某刻运行了什么代码,当出现问题时可以方便我们进行定位。

由python内置了一个logging模块,用户可以通过调用debug()、 info()、 warning()、 error() 、 critical()和notset()等方法进行日志的收集和处理。

一、日志等级

级别 数字值 作用
NOSET 0  废话,等于没写,毫无用处的文字
DEBUG 10 调试,一些额外信息。备注,往往与主体功能无关
INFO 20 主体功能的信息,做了些啥
WARNING 30 警告,提醒下次有可能会触发错误
ERROR 40  错误
CRITICAL 50  极其严重的错误,会影响系统的崩溃

 二、日志使用

 

import logging

#1、初始化日志收集器
logger = logging.getLogger("这是日志收集器名称")

#2、设置日志收集器的等级,高于或等于这个级别的日志我才记录
logger.setlevel("DEBUG")

#3、初始化日志处理器handler:终端流处理器streamhandler和文件流处理器filehandler
stream_handler = logging.StreamHandler()

#4、设置终端流处理器的等级。高于或等于这个级别的日志我才显示
stream_handler.setlevel("INFO")

#5、日志收集器logger添加handler
logger.addHandler(stream_handler)

#6、初始化日志格式format:
format_str = "%(asctime)s--%(levelname)s--%(filename)s--%(lineno)d--%(name)s--%(message)s"

#7、handler添加format
stream_handler.setFormatter(format_str)

#8、调用
logger.info("信息")
logger.debug(“调试信息”)

终端流处理器:日志直接在终端中显示(我用的是pycharm,那么就是pycharm控制台显示)

文件流处理器:将日志存储在文件中

一个收集器可以对应多个处理器,也就是说,可以同时设置终端流处理器和文件处理器

file_handler = logging.FileHandler("log.txt",encoding="utf8")

file_handler.setLevel("INFO")

#添加handler
logger.addHandler(file_handler)

#handler添加format
file_handler.setFormatter(fmt)

#调用

setlevel():相当于过滤器,不设置参数时默认的是WARNING,要大写。只有高于或等于设置的级别才显示。

logger和handler的级别需要比较,哪个级别更高,就以哪个为准

日志格式:https://docs.python.org/zh-cn/3/library/logging.html可以上官方网站查看需要的格式

三、日志封装

import logging

#日志的二次封装
def logging_function(logger_name,
                     logger_level="DEBUG",
                     handler_level="INFO",
                     log_file_name="logging.txt",
                     encoding="utf8",
                     format_str="%(asctime)s--%(levelname)s--%(filename)s--%(lineno)d--%(name)s--%(message)s"
                     ):

    logger = logging.getLogger(logger_name)
    logger.setLevel(logger_level)
    # 终端流处理器
    stream_hangdler = logging.StreamHandler()
    stream_hangdler.setLevel(handler_level)
    logger.addHandler(stream_hangdler)
    # 文件处理器
    file_hangdler = logging.FileHandler(log_file_name, encoding=encoding)
    file_hangdler.setLevel(handler_level)
    logger.addHandler(file_hangdler)
    fmt = logging.Formatter(format_str)
    stream_hangdler.setFormatter(fmt)
    file_hangdler.setFormatter(fmt)
    return logger

#调用
logging_name="日志收集"
logger=logging_function(logging_name)

 

标签:logging,处理,handler,file,--%,日志,logger
来源: https://www.cnblogs.com/xiaofenggou/p/16674025.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有