python日志logging注意点

本文深入探讨Python的logging模块使用技巧,包括日志级别、handler配置及实例代码解析,帮助读者掌握日志输出控制台与文件的方法。
部署运行你感兴趣的模型镜像

点1:logging和handler的日志级别是有优先级别的,handler是在logging的基础上再取级别高的。 logging不设置(默认是warn),handler设置为info,那么最后info的日志还是输出不了,底层采用的是logging的。

点2:handler可以设置输出到控制台的StreamHandler和到文件的FileHandler。可以分别设置不同的日志级别。前提还是得在logging的级别的基础上。

点3:logging.getLogger().setLevel("DEBUG"), getLogger不传入参数的时候获取到的是root logger

root loger代码给的注释是:

A root logger is not that different to any other logger, except that
it must have a logging level and there is only one instance of it in
the hierarchy.

就是一单例对象,是一个跟logger。所有的logger由一单例类对象管理 Manager。

#coding:gbk
import argparse
import os
import logging
import logging.config
import sys

def test():

    logger = logging.getLogger("logger")
    #logging.basicConfig(filename="E:\桌面\log.txt", filemode="w", format="[%(asctime)s] [%(name)s][%(levelname)s][%(message)s]", datefmt="%d-%M-%Y %H:%M:%S", level=logging.DEBUG)
    #handler1 = logging.StreamHandler()#到控制台的
    stdout_handler = logging.FileHandler(filename="E:\桌面\log22.log")
    formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s")
    stdout_handler.setFormatter(formatter)

    logger.setLevel('DEBUG')#logging默认的级别是WARN,之前没写这句,还一直查怎么自己的代码写不了日志了
    #logging.getLogger().setLevel("DEBUG")#或这样
    stdout_handler.setLevel(logging.WARN)#handler默认级别就是NOSET,不设置

    logger.addHandler(stdout_handler)
    logger.info('i am a testing')

test()

 

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值