Python中logging模块对日志的使用

Python中logging模块的使用

简介
  • Python的 logging模块主要是对日志的应用管理,用于输出运行日志以及追踪程序的运行情况
  • 可以根据自己的习惯设置不同的日志等级,从而筛选出重要信息
  • 日志等级:CRITICAL > ERROR > WARNING > INFO > DEBUG
配置logging基本的设置:
import logging

logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

运行结果:

WARNING:root:warning message
ERROR:root:error message
CRITICAL:root:critical message
配置日志级别,日志格式,输出位置
import logging


logging.basicConfig(level=logging.DEBUG,
                        format='%(asctime)s %(name)s %(levelname)s %(message)s',
                        datefmt='%a, %d %b %Y %H:%M:%S',
                        filename='test.log',
                        filemode='w')
'''format是格式化输出,datafmt是给每条日志加上时间区分,
filename是给日志文件命名,filemode是权限w表示写'''

logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

运行结果:

Tue, 23 Jun 2020 19:37:54 root DEBUG debug message
Tue, 23 Jun 2020 19:37:54 root INFO info message
Tue, 23 Jun 2020 19:37:54 root WARNING warning message
Tue, 23 Jun 2020 19:37:54 root ERROR error message
Tue, 23 Jun 2020 19:37:54 root CRITICAL critical message
logging中常用的Handler对象的使用
  • Handler对象负责发送相关的信息到指定目的地
fh = logging.FileHandler('文件根目录') 
ch = logging.StreamHandler()
  • logging.StreamHandler()表示通过控制台输出日志
  • logging.FileHandler(‘文件根目录’)表示将日志写入指定文件

可以通过addHandler()方法为Logger添加多个Handler:

logger.addHandler(fh) 
logger.addHandler(ch)
  • 多个Handler可以在运行时同时输出几个不同名字或级别的日志:
logger = logging.getLogger()
logger.setLevel(logging.INFO)

fh = logging.FileHandler('全部输出的根目录', encoding='utf8')
fh.setLevel(logging.INFO)
# 创建一个handler写入错误日志
eh = logging.FileHandler('error时输出的根目录', encoding="utf8")
eh.setLevel(logging.ERROR)
# 创建一个handler输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)

# 定义日志输出格式
# 以时间-日志器名称-日志级别-日志内容的形式展示
all_log_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 以时间-日志器名称-日志级别-文件名-函数行号-错误内容
error_log_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(module)s  - %(lineno)s - %(message)s')
 # 将定义好的输出形式添加到handler
fh.setFormatter(all_log_formatter)
ch.setFormatter(all_log_formatter)
eh.setFormatter(error_log_formatter)

# 给logger添加handler
logger.addHandler(fh)
logger.addHandler(eh)
logger.addHandler(ch)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值