Python日志简单实例

概要

logging是Python中用于记录日志的基本工具。通过log的分析,可以方便用户了解系统或软件、应用的运行情况。本篇文章简单记录了基本控制台打印和写入日志文件的操作。

基本组件

logger

logger是进行log日志最主要的组件,提供应用程序代码直接使用的接口,一般来说,所有的输出以及写入都使用logger。

简单实例化

test_logger = logging.getLogger('test')

test_logger是实例化后的logger名,可直接调用,logging.getLogger的参数test是此次实例化的标识名,每次实例化需要不同的参数名,才可保证不同的logger之间的正常使用。

设置log等级

设置等级之后,在打印日志的时候只对高于设置等级的日志进行输出打印。

test_logger.setLevel(logging.DEBUG)
日志等级描述
DEBUG最详细的日志信息,典型应用场景是 问题诊断
INFO信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL当发生严重错误,导致应用程序不能继续运行时记录的信息

加载handle

test_logger.addHandler(test_handler)

handle是处理组件下面会有介绍,加载handle的目的主要是配置logger,对打印的数据进行规范。

打印

test_logger.debug("这是一条Debug日志") # 注意此等级因为低于info等级所以即使写了也不打印输出
test_logger.info("这是一条Info日志")

handle

handle一般是logging的一个处理数据格式和一些管理设定的组件,用于将日志记录发送到指定的目的位置(一般指文件。

基本操作

实例化用logging.FileHandler创建,带入文档名,编码设定等参数。

test_handler= logging.FileHandler('位置及文件名', encoding='utf-8')
logger.addHandler(logging.StreamHandler(sys.stdout))
logger.addHandler(logging.FileHandler(os.path.join('logs', log_name)))

设置日志等级,这里设置的等级是优先于logger设定的日志等级。

StreamHandler能够将日志信息输出到sys.stdout, sys.stderr 或者类文件对象(更确切点,就是能够支持write()和flush()方法的对象)。FileHandler并且可以设置文件流输入到.log文件内

test_handler.setLevel(logging.INFO)

设置日志格式

test_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))

实例展示

日志初始化

#logger初始化
logger1 = logging.getLogger('1')
logger2 = logging.getLogger('2')

#设置logger初始等级
logger1 .setLevel(logging.DEBUG) #高于debug等级的日志才打印
logger2 .setLevel(logging.Info) #高于info等级的日志才打印

# handle初始化及配置
handler1 = logging.FileHandler('log1.log', encoding='utf-8') #相对路径
handler1 .setLevel(logging.INFO)  #设置handle日志等级
handler1 .setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')) #设置handle的基本日志格式
handler2 = handler1 .FileHandler('D:/pycharm/log/log2.log', encoding='utf-8') #绝对路径 
handler2.setLevel(logging.WARNING)
handler2.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))

# 加载handle
logger1 .addHandler(handler1 )
logger2 .addHandler(handler2)

# 日志写入文件
logger1.info("我是logger1写入.log文件的一条Info日志")
logger2.warning("我是logger2写入.log文件的一条Warning日志")

# 若只需打印到控制台可以直接调用logging
logging.debug("我是被打印到控制台的一条debug日志")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值