【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
简介
logging模块用于输出日志信息,可以按照不同日志等级划分反馈给用户,默认以追加形式添加日志信息
一般情况下分的五种等级:
优先级 | 等级 |
---|---|
1 | debug() |
2 | info() |
3 | warning() |
4 | error() |
5 | critical() |
logging.basicConfig()
logging配置信息,实现打印日志的基础配置信息
logging配置参数
参数 | 释义 |
---|---|
filename | 指定日志文件名 |
filemode | 和file函数意义相同,指定日志文件的打开模式,'w'或'a' |
format | 指定输出的格式和内容 |
datefmt | 指定时间格式,同time.strftime() |
level | 设置日志级别,默认为logging.WARNING |
stream | 指定将日志的输出流,如:sys.stderr,sys.stdout或文件,默认sys.stderr,stream和filename同时指定,stream被忽略 |
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 | 打印日志信息 |
示例
改变默认等级并输出日志内容
# -*- coding:utf8 -*-
import logging
logging.basicConfig(
level = logging.DEBUG, #变更默认等级
filename = "logging.log", #输出日志到文件
format = "[%(lineno)d] %(asctime)s 【%(message)s】 " #定义格式,显示行号、时间、日志信息
)
logging.debug("this is debug")
logging.info("this is info")
logging.warning("this is warning")
logging.error("this is error")
logging.critical("this is critical")
logging.log内容
[8] 2018-04-05 16:15:34,486 【this is debug】
[9] 2018-04-05 16:15:34,487 【this is info】
[10] 2018-04-05 16:15:34,487 【this is warning】
[11] 2018-04-05 16:15:34,487 【this is error】
[12] 2018-04-05 16:15:34,487 【this is critical】
logging.getLogger()
logging对象
参数 | 释义 |
---|---|
logging.getLogger() | 创建对象 |
logger.setLevel() | 定义等级 |
logging.Formatter() | 定义格式 |
logging.FileHandler() | 定义输出文件信息 |
logging.StreamHandler() | 定义屏幕打印信息 |
.setFormatter() | 格式学习 |
.addHandler() | 对象添加学习内容 |
使用示例
# -*- coding:utf8 -*-
import logging
logger = logging.getLogger("root") #定义用户创建对象
logger.setLevel(logging.DEBUG) #定义默认等级
format1 = logging.Formatter("[%(lineno)d] %(asctime)s 【%(message)s】 ") #定义输出格式1,用于文件输出
format2 = logging.Formatter("%(asctime)s %(message)s ") #定义输出格式2,用于屏幕输出
a = logging.FileHandler("test.log") #定义文件存储位置和名称
b = logging.StreamHandler() #定义屏幕打印信息
a.setFormatter(format1) #学习文件输出格式
b.setFormatter(format2) #学习屏幕输出格式
logger.addHandler(a) #学习文件存储功能
logger.addHandler(b) #学习屏幕打印功能
logger.debug("this is debug")
logger.info("this is info")
logger.warning("this is warning")
logger.error("this is error")
logger.critical("this is critical")
屏幕输出内容
2018-04-05 17:49:45,746 this is debug
2018-04-05 17:49:45,746 this is info
2018-04-05 17:49:45,746 this is warning
2018-04-05 17:49:45,746 this is error
2018-04-05 17:49:45,746 this is critical
文件输出内容
[33] 2018-04-05 17:49:45,746 【this is debug】
[34] 2018-04-05 17:49:45,746 【this is info】
[35] 2018-04-05 17:49:45,746 【this is warning】
[36] 2018-04-05 17:49:45,746 【this is error】
[37] 2018-04-05 17:49:45,746 【this is critical】
来源:oschina
链接:https://my.oschina.net/u/2924779/blog/1793471