【Python】logging模块笔记

目录

日志级别

四个组件

 记录器

 处理器

 处理器

 格式化器

 格式

 用法1:小项目可以采用编程的方法

用法2:建议采用配置文件的方式

用法3: 字典配置


日志级别

#默认的日志输出为warning
# 使用baseConfig() 来指定日志输出级别
# 同时,是可以存入log文件 默认追加模式
# filemode='w' 每次重写日志文件
logging.basicConfig(filename='demo.log', filemode='w', level=logging.DEBUG)

logging.debug("")
logging.info("")
logging.waring("")
logging.error("")
logging.critical("")

定义日志输出的格式

场景:输出格式和添加一些公共信息

# message为原本要输出的信息
# asctime 时间
# levelname 日志等级
# filename 文件名
# lineno 行号
# datefmt 时间格式
logging.basicConfig(format="%(asctime)s|%(levelname)s|%(filename)s:%(lineno)s|%(message)s", 
datefmt="%Y-%m-%d %H:%M:%S", 
, level=logging.DEBUG)

四个组件

 

 记录器

 处理器

 处理器

 格式化器

 格式

 用法1:小项目可以采用编程的方法

# 记录器
logger = logging.getLogger() 
# 默认为root 
logger = logging.getLogger('applog') #设置一个名为applog的记录器
logger.setLevel(logging.DEBUG)

# 处理器
consoleHandler = logging.StreamHandler()
consoleHandler.setLevel(logging.DEBUG)
# 不指定Handler的日志级别,默认使用记录器的
# 记录器里面的日志级别优先级最高,如想要不同Handler里面的日志级别不一样,就要将记录器的日志级别设置成Handler里面的最低的等级
fileHandle = logging.FileHandler(filename='addDemo.log')

# 格式化器
formatter = logging.Formatter("%(asctime)s|%(levelname)-8s|%(filename)10s:%(lineno)4s|%(message)s")

# 给处理器设置格式
consoleHandler.setFormatter(formatter)
fileHandler.setFormatter(formatter)

# 记录器要设置处理器
logger.addHandler(consoleHandler)
logger.addHandler(fileHandler)

# 设置过滤器
# 命名空间以cn.guitu开头的才符合要求
flt = logging.Filter("cn.guitu")

# 关联过滤器
logger.addFilter(flt)

fileHandler.addFilter(flt)


# 打印日志代码 用记录器
logger.debug("")
logger.info("")

用法2:建议采用配置文件的方式

logging.conf

[loggers]
keys=root,applog

[handlers]
keys=fileHandler, consoleHandler

[formatter]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_applog]
level=DEBUG
handlers=fileHander, consoleHandler
qualname=applog #
propagate=0

[handler_consoleHandler]
class=StreamHandler
args=(sys.stdout,)
level=DEBUG
formatter=simpleFormatter

[handler_fileHandler]
class=handlers.TimedRotatingFileHandler
arg=('applog.log', 'midnight', 1,0) #每天午夜十二点生成新的日志文件
# 1 是午夜十二点向后延时1秒后开始备份,0代表不被删除 可设置保留时间 单位为s 
level=DEBUG
formatter=simpleFormatter

[formatter_simpleFormatter]
format=format=%(asctime)s|%(levelname)s|%(filename)s:%(lineno)s|%(message)s
datefmt=%Y-%m-%d %H:%M:%S

使用配置文件

import logging
import logging.config

logging.config.fileConfig('logging.conf')

rootLogger = logging.getLogger()
logger = logging.getLogger('applog')

rootLogger.info("")
logger.debug("")

a = 'abc'
try:
    int(a)
except Exception as e:
    # logger.error(e)
    logger.exception(e)

用法3: 字典配置

可以从数据库,配置文件读入,只要将输出接口的格式变成字典(json,xml)

来源:

Python基础之标准库logging 你还在用print来调试程序吗,OUT啦_哔哩哔哩_bilibili

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

返返返

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值