18Python标准库系列之logging模块

简介:

Python标准库系列之logging模块


This module defines functions and classes which implement a flexible event logging system for applications and libraries.

The key benefit of having the logging API provided by a standard library module is that all Python modules can participate in logging, so your application log can include your own messages integrated with messages from third-party modules.

官方文档:https://docs.python.org/3.5/library/logging.html

logging模块用于便捷记录日志且线程安全。


日志级别

Level Numeric value
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
NOTSET 0

只有大于当前日志等级的操作才会被记录。

实例

写入单文件

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# 导入logging模块
import  logging
 
# 创建一个log.log日志文件
logging.basicConfig(filename = 'log.log' ,
                     # 格式化的字符串
                     format = '%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s' ,
                     # 时间
                     datefmt = '%Y-%m-%d %H:%M:%S %p' ,
                     # 错误级别
                     level = logging.NOTSET
                     )
                     
logging.critical( 'critical' )
logging.error( 'error' )
logging.warning( 'warning' )
logging.info( 'info' )
logging.debug( 'debug' )
logging.log(logging.INFO,  'NOTSET' )

执行结果

1
2
3
4
5
6
7
8
9
10
11
12
ansheng@ansheng - me:~$ ls 
log.py
ansheng@ansheng - me:~$ python log.py 
ansheng@ansheng - me:~$ ls
log.log  log.py
ansheng@ansheng - me:~$ cat log.log 
2016 - 05 - 27  21 : 46 : 15  PM  -  root  -  CRITICAL  -  log: critical
2016 - 05 - 27  21 : 46 : 15  PM  -  root  -  ERROR  -  log: error
2016 - 05 - 27  21 : 46 : 15  PM  -  root  -  WARNING  -  log: warning
2016 - 05 - 27  21 : 46 : 15  PM  -  root  -  INFO  -  log: info
2016 - 05 - 27  21 : 46 : 15  PM  -  root  -  DEBUG  -  log: debug
2016 - 05 - 27  21 : 46 : 15  PM  -  root  -  INFO  -  log: NOTSET

logging.basicConfig函数各参数

参数 说明
filename 指定日志文件名
filemode 和file函数意义相同,指定日志文件的打开模式,’w’或’a’
format 指定输出的格式和内容,format可以输出很多有用信息,如下所示
datefmt 指定时间格式,同time.strftime()
level 设置日志级别,默认为logging.WARNING

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 打印日志信息

多文件日志

对于上述记录日志的功能,只能将日志记录在单文件中,如果想要设置多个日志文件,logging.basicConfig将无法完成,需要自定义文件和日志操作对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
 
import  logging
 
# 创建文件
file_1  =  logging.FileHandler( "log1.log" "a" )
# 创建写入的日志格式
fmt1  =  logging.Formatter(fmt = "%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(message)s" )
# 文件用格式
file_1.setFormatter(fmt1)
 
file_2  =  logging.FileHandler( "log2.log" "a" )
fmt2  =  logging.Formatter()
file_2.setFormatter(fmt2)
 
logger1  =  logging.Logger( "s1" , level = logging.ERROR)
logger1.addHandler(file_1)
logger1.addHandler(file_2)
 
logger1.critical( "1111" )
1
2
3
4
5
6
7
8
# 定义文件
file_2_1  =  logging.FileHandler( 'l2_1.log' 'a' )
fmt  =  logging.Formatter()
file_2_1.setFormatter(fmt)
 
# 定义日志
logger2  =  logging.Logger( 's2' , level = logging.INFO)
logger2.addHandler(file_2_1)

如上述创建的两个日志对象

  1. 当使用logger1写日志时,会将相应的内容写入 l1_1.log 和 l1_2.log 文件中

  2. 当使用logger2写日志时,会将相应的内容写入 l2_1.log 文件中










本文转自 Edenwy  51CTO博客,原文链接:http://blog.51cto.com/edeny/1925799,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
21小时前
|
Python
【Python进阶(五)】——模块搜索及工作目录
【Python进阶(五)】——模块搜索及工作目录
|
1天前
|
JSON 监控 调度
局域网管理软件的自动化任务调度:Python 中的 APScheduler 库的应用
使用 Python 的 APScheduler 库可简化局域网管理中的自动化任务调度。APScheduler 是一个轻量级定时任务调度库,支持多种触发方式如间隔、时间、日期和 Cron 表达式。示例代码展示了如何创建每 10 秒执行一次的定时任务。在局域网管理场景中,可以利用 APScheduler 定期监控设备状态,当设备离线时自动提交数据到网站,提升管理效率。
8 0
|
1天前
|
数据采集 数据可视化 数据挖掘
如何利用Python中的Pandas库进行数据分析和可视化
Python的Pandas库是一种功能强大的工具,可以用于数据分析和处理。本文将介绍如何使用Pandas库进行数据分析和可视化,包括数据导入、清洗、转换以及基本的统计分析和图表绘制。通过学习本文,读者将能够掌握利用Python中的Pandas库进行高效数据处理和可视化的技能。
|
2天前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
8 1
|
2天前
|
Python Windows
python中的异常与模块
python中的异常与模块
9 1
|
2天前
|
机器学习/深度学习 自然语言处理 算法
Gensim详细介绍和使用:一个Python文本建模库
Gensim详细介绍和使用:一个Python文本建模库
11 1
|
3天前
|
JSON 数据格式 Python
Python 的 requests 库是一个强大的 HTTP 客户端库,用于发送各种类型的 HTTP 请求
`requests` 库是 Python 中用于HTTP请求的强大工具。要开始使用,需通过 `pip install requests` 进行安装。发送GET请求可使用 `requests.get(url)`,而POST请求则需结合 `json.dumps(data)` 以JSON格式发送数据。PUT和DELETE请求类似,分别调用 `requests.put()` 和 `requests.delete()`。
13 2
|
3天前
|
JSON 数据格式 索引
python之JMESPath:JSON 查询语法库示例详解
python之JMESPath:JSON 查询语法库示例详解
14 0
|
11天前
|
Python
在Python中绘制K线图,可以使用matplotlib和mplfinance库
使用Python的matplotlib和mplfinance库可绘制金融K线图。mplfinance提供便利的绘图功能,示例代码显示如何加载CSV数据(含开盘、最高、最低、收盘价及成交量),并用`mpf.plot()`绘制K线图,设置类型为'candle',显示移动平均线(mav)和成交量信息。可通过调整参数自定义图表样式,详情参考mplfinance文档。
30 2
|
11天前
|
机器学习/深度学习 边缘计算 TensorFlow
【Python机器学习专栏】Python机器学习工具与库的未来展望
【4月更文挑战第30天】本文探讨了Python在机器学习中的关键角色,重点介绍了Scikit-learn、TensorFlow和PyTorch等流行库。随着技术进步,未来Python机器学习工具将聚焦自动化、智能化、可解释性和可信赖性,并促进跨领域创新,结合云端与边缘计算,为各领域应用带来更高效、可靠的解决方案。