Python中logging日志的基本使用

1.logging介绍

logger是提供我们记录日志的方法;

handler是让我们选择日志的输出地方,如:控制台,文件,邮件发送等,一个logger添加多个handler;

filter是给用户提供更加细粒度的控制日志的输出内容;

formater用户格式化输出日志的信息。

2.level级别控制

只有大于指定级别的日志才会输出

DEBUG[10]:详细的信息,通常只出现在诊断问题上
INFO[20]:确认一切按预期运行
WARNING[30]:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作。
ERROR[40]:更严重的问题,软件没能执行一些功能
CRITICAL[50]:一个严重的错误,这表明程序本身可能无法继续运行

3.默认级别为warning

logging.debug('debug 信息')
logging.warning('只有这个会输出。。。')
logging.info('info 信息')

4.basicConfig 设置保存到文件

默认保存在当前目录下,可以指定目录 "d:\new.log"

logging.basicConfig(level=logging.DEBUG,  # 控制台打印的日志级别
                        filename='new.log',
                        filemode='a',  ##模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志
                        # a是追加模式,默认如果不写的话,就是追加模式
                        format=
                        '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
                        # 日志格式
                        )

format 格式化日志。有以下几种

format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
 %(levelno)s: 打印日志级别的数值
 %(levelname)s: 打印日志级别名称
 %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
 %(filename)s: 打印当前执行程序名
 %(funcName)s: 打印日志的当前函数
 %(lineno)d: 打印日志的当前行号
 %(asctime)s: 打印日志的时间
 %(thread)d: 打印线程ID
 %(threadName)s: 打印线程名称
 %(process)d: 打印进程ID
 %(message)s: 打印日志信息

同时将日志输出到console和文件中

import logging
logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)

console = logging.StreamHandler()
console.setLevel(logging.INFO)

logger.addHandler(handler)
logger.addHandler(console)

logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")

logging.getLogger

logging模块中最基础的对象,用logging.getLogger(name)方法进行初始化,name可以不填。通常logger的名字我们对应模块名

logging.getLogger('jobs')

本文由 hcb 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论