Python之配置日志模块logging

简介:

一、定义日志打印方式

如果我们运行自己的程序,有时候需要记录程序运行过程中出现的问题或者信息。可以运用日志模块logging来记录,该模块日志格式可以根据用户需求来自己定义。

常见打印日志信息形式如下:

1
2
3
4
import logging
logging.debug("========定义要打印的内容====debug①===========")
logging.info("=========定义要打印的内容====info②===========")
logging.warning("======定义要打印的内容====warning③===========")

默认情况下,logging将日志打印到屏幕,日志级别为WARNING;

日志级别优先关系为:CRITICAL>ERROR>WARNING>INFO>DEBUG>NOTSET,

对于日志等级:

1
2
3
4
5
6
7
8
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0

当然也可以根据自己的需求定义优先级别,从以上日志优先级别屏幕上打印的内容为:

WARNING:root;======定义要打印的内容====warning③===========

二、通过logging.basicConfig函数对日志的输出格式进行配置

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env python
# -*- coding:utf8 -*-
import  logging
def  logs(arg):
          logging.basicConfig(level = logging.DEBUG,
                             format = '%(asctime)s %(message)s' ,
                             datefmt = '%Y-%m-%d %H:%M:%S' ,
                             filename = 'myapp.log' ,
                             filemode = 'w' )
          logging.debug(arg)
          logging.info(arg)
          logging.warning(arg)
logs( 'python is language' )
1
2
3
4
5
[root@Python log] # python log.py
[root@Python log] # cat myapp.log 
2016-01-27 10:44:57 python is language
2016-01-27 10:44:57 python is language
2016-01-27 10:44:57 python is language

logging.basicConfig函数各参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
filename: 指定日志文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a'
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: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略

三、运行logging模块记录程序操作

有如下日志定义文件(log.py):

1
2
3
4
5
6
7
8
9
10
11
12
[root@Python log] # cat log.py
#!/usr/bin/env python
# -*- coding:utf8 -*-
import  logging
def  logs(arg):
          logging.basicConfig(level = logging.DEBUG,
                             format = '%(asctime)s %(message)s' ,
                             datefmt = '%Y-%m-%d %H:%M:%S' ,
                             filename = 'shopping.log' ,
                             filemode = 'a' )
          logging.info(arg)
[root@Python log] #


应用程序内容如下:

1
2
3
4
5
6
7
8
9
10
11
[root@Python log] # cat shopping.py 
#!/usr/bin/env python
# -*- coding:utf8 -*-
from  log  import  logs
user_dict = { 'apple' : 4.5 , 'pear' : 3.3 , 'banana' : 2.5 , 'tomato' : 1.5 }
ch_fruit  =  raw_input ( "请输入要买的水果:" )
num = int ( raw_input ( "请输入要买入水果的重量:" ))
total_prices =  user_dict[ch_fruit] * num
print  "您买的 %s 需要支付 %d 元"  %  (ch_fruit,total_prices)
record = "购买%d千克%s" % (num,ch_fruit) #定义购买记录信息
logs(record) #调用log.py中定义的函数logs

运行shopping.py

1
2
3
4
5
6
7
8
9
10
11
12
[root@Python log] # python shopping.py
请输入要买的水果:banana
请输入要买入水果的重量: 3
您买的 banana 需要支付  7 
[root@Python log] # python shopping.py
请输入要买的水果:pear
请输入要买入水果的重量: 10
您买的 pear 需要支付  33 
[root@Python log] # python shopping.py
请输入要买的水果:apple
请输入要买入水果的重量: 8
您买的 apple 需要支付  36 

查看生成日志记录信息:

1
2
3
4
5
[root@Python log] # cat shopping.log 
2016-01-27 11:10:47 购买3千克banana
2016-01-27 11:10:53 购买10千克pear
2016-01-27 11:11:02 购买8千克apple
[root@Python log] #

思路:在生产中可以把日志记录模块写到一个文件中,然后在生产的程序中直接导入即可,最后根据需求定义要写入的记录内容






      本文转自027ryan  51CTO博客,原文链接:http://blog.51cto.com/ucode/1738898,如需转载请自行联系原作者


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
6月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
773 7
|
6月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
508 0
|
6月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
571 4
|
7月前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
232 4
|
6月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
651 0
|
6月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
808 0
|
7月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1316 5
|
7月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
622 0
|
安全 BI 网络安全
EventLog Analyzer 如何满足等保合规要求?密码有效期、产品日志保留、配置备份三大核心问题全面解答
EventLog Analyzer(ELA)助力企业满足网络安全等级保护要求,支持配置自动/手动备份、日志180天留存及密码策略管理,提升合规性与安全运营效率。
242 0
|
8月前
|
存储 安全 数据处理
Python 内置模块 collections 详解
`collections` 是 Python 内置模块,提供多种高效数据类型,如 `namedtuple`、`deque`、`Counter` 等,帮助开发者优化数据处理流程,提升代码可读性与性能,适用于复杂数据结构管理与高效操作场景。
497 0

推荐镜像

更多
下一篇
开通oss服务