美文网首页
Python日志处理

Python日志处理

作者: Recalcitrant | 来源:发表于2019-06-30 16:01 被阅读0次

Python日志处理

一、基本概念

1.日志级别

级别Level 对应数值
logging.NOTSET 0
logging.DEBUG 10
logging.INFO 20
logging.WARNING(默认级别) 30
logging.ERROR 40
logging.CRITICAL 50

示例:

logger.setLevel(logging.DEBUG)

2.Formatter

参数 含义
%(message)s 用户自定义要输出的信息
%(asctime)s 当前的日期时间
%(name)s logger实例的名称
%(module)s 使用logger实例的模块名
%(filename)s 使用logger实例的模块的文件名
%(funcName)s 使用logger实例的函数名
%(lineno)d 使用logger实例的代码行号
%(levelname)s 日志级别名称。 %(levelno)s 表示日志级别的数字形式
%(thread)d 使用logger实例的线程号(测试多线程时有用)
%(threadName)s 使用logger实例的线程名称(测试多线程时有用)
%(process)d 使用logger实例的进程号(测试多进程时有用)

示例:

log_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
log_handler.setFormatter(log_formatter)

3.Handler

常用Handler

  • ① logging.StreamHandler
    输出到控制台
  • ② logging.FileHandler
    输出到指定的日志文件中
  • ③ logging.handlers.RotatingFileHandler
    也是输出到日志文件中,还可以指定日志文件的最大大小和副本数,当日志文件增长到设置的大小后,会先将原日志文件 test.log 重命名,如 test.log.1,然后再创建一个 test.log 继续写入日志。如果设置了副本数 N,则最多只能存在 N 个重命名的日志文件
  • ④ logging.handlers.TimedRotatingFileHandler
    按日期时间保存日志文件,如果设置了滚动周期,则只存在这个周期内的日志文件。比如,只保留一周内的日志
  • ⑤ logging.handlers.SMTPHandler
    捕获到指定级别的日志后,给相应的邮箱发送邮件

示例:

log_handler = logging.StreamHandler()

4.logger实例

示例:

# 创建一个叫my_test的logger实例,如果参数为空则返回root logger
logger = logging.getLogger("my_test")
# 设置日志记录级别
logger.setLevel(logging.DEBUG)
# 创建StreamHandler,输出日志到控制台
log_handler = logging.StreamHandler()
# 设置日志记录格式
log_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
log_handler.setFormatter(log_formatter)
# 将Handler添加到logger实例上
logger.addHandler(log_handler)

logger.debug("debug:testing...........")
logger.info("info:testing...........")
运行结果

二、输出到日志文件

import logging
logging.basicConfig(filename="test.log", level=logging.DEBUG)
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
logging.error('This is error message')
logging.critical('This is critical message')

三、同时输出到控制台和日志文件

示例:

# 创建日志实例
logger = logging.getLogger("project_logger")

# 设置日志记录级别
logger.setLevel(logging.DEBUG)

# 设置日志记录格式
log_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# 创建日志文件夹
base_dir = os.path.abspath(os.path.dirname(__file__))
log_dir = os.path.join(base_dir, "logs")
if not os.path.isdir(log_dir):
    os.mkdir(log_dir)

filename = time.strftime("%Y-%m-%d", time.localtime(time.time())) + ".log"

file_handler = logging.FileHandler(os.path.join(log_dir, filename), encoding='utf-8')
file_handler.setFormatter(fmt=log_formatter)
file_handler.setLevel(logging.DEBUG)

stream_handler = logging.StreamHandler()
stream_handler.setFormatter(fmt=log_formatter)
stream_handler.setLevel(logging.INFO)

logger.addHandler(file_handler)
logger.addHandler(stream_handler)

logger.debug('This is debug message')
logger.info('This is info message')
运行结果(控制台)
运行结果(文件)

相关文章

  • Python日志处理logging

    参考: Python之日志处理(logging模块)

  • python logging模块使用

    参考资料 Python之日志处理(logging模块) Python之向日志输出中添加上下文信息 Python之配...

  • Python常用包

    argparse 用于处理python传入外参数 logging记录日志 datetime 日期时间 json处理...

  • Python日志处理

    Python日志处理 一、基本概念 1.日志级别 示例: 2.Formatter 示例: 3.Handler 常用...

  • python日志处理

    一、日志概念 日志是一种可以追踪某些软件运行时所发生事件的方法。 软件开发人员可以向他们的代码中调用日志记录相关的...

  • python 处理 impala 日志

    python 处理 impala 日志 1. cloudera manager 中 impala 的 API im...

  • Python之日志处理(logging模块)

    From:Python之日志处理(logging模块) - 云游道士 - 博客园 https://www.cnbl...

  • Python处理日志文件

    背景 公司视频应用,需要针对用户的操作数据分析,得出应用内所有的视频的权重分析,方便以后更好的进行推荐视频操作.目...

  • Python日志处理loguru

    python内置logging需要配置繁琐的信息,loguru更加简洁而且内置了日志显示格式,其使用了better...

  • python处理logger日志

    前言: 在实际的项目开发过程中,为了准确的定位出bug,需要对错误进行日志记录,这里简要记录一下使用python的...

网友评论

      本文标题:Python日志处理

      本文链接:https://www.haomeiwen.com/subject/kppucctx.html