Python模块之 - logging
日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法。本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表。
Logging模块构成
组成
主要分为四个部分:
- Loggers:提供应用程序直接使用的接口
- Handlers:将Loggers产生的日志传到指定位置
- Filters:对输出日志进行过滤
- Formatters:控制输出格式
日志级别
Level | Numeric value | When it’s used |
---|---|---|
DEBUG | 10 | Detailed information, typically of interest only when diagnosing problems. |
INFO | 20 | Confirmation that things are working as expected. |
WARNING | 30 | An indication that something unexpected happened, or indicative of some problem in the near future (e.g. ‘disk space low’). The software is still working as expected. |
ERROR | 40 | Due to a more serious problem, the software has not been able to perform some function. |
CRITICAL | 50 | A serious error, indicating that the program itself may be unable to continue running. |
NOSET | 0 | getattr(logging, loglevel.upper()) |
默认级别是WARNING,可以使用打印到屏幕上的方式记录,也可以记录到文件中。
使用示例
下面的代码展示了logging最基本的用法。
# import logging
#
# logging.basicConfig(filename="log.txt",
# level=logging.DEBUG,
# format="%(asctime)s %(message)s",
# datefmt="%Y-%m")
# logging.debug("SS") """
%(name)s Logger的名字
%(levelno)s 数字形式的日志级别
%(levename)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以来的毫秒数
%(asctime)s 字符串形式的当前时间,默认格式是"2003-07-08 16:49:45,896",毫秒
%(thread)d 线程ID,可能没有
%(threadName)s 线程名,可能没有
%(process)d 进程ID,可能没有
%(message)s 用户输出的消息 """ # 同时输出到文件,屏幕
import logging class IgnoreBackupLogFilter(logging.Filter):
"""过滤带db backup 的日志""" def filter(self, record): # 固定写法
# true 不记录
return "db backup" not in record.getMessage() # 1、生成logger对象
logger = logging.getLogger("web")
logger.setLevel(logging.DEBUG) # 默认是warning
# 1、1 把filter对象添加到logger中
logger.addFilter(IgnoreBackupLogFilter()) # 2、生成handler对象
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
# fh = logging.FileHandler("web.log") # 写到那个文件下
from logging import handlers
fh = handlers.TimedRotatingFileHandler("web.log",when="S",interval=5,backupCount=3)
fh.setLevel(logging.WARNING)
# 2.1 把handler对象 绑定到logger
logger.addHandler(ch)
logger.addHandler(fh) # 3、生成formatter对象
console_formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(filename)s - %(message)s ")
file_formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(lineno)d - %(filename)s - %(message)s ")
# 3、1 把formatter对象 绑定到handler对象
ch.setFormatter(console_formatter)
fh.setFormatter(file_formatter) logger.debug("s")
logger.info("d")
logger.warning("g")
logger.error("a324")
logger.info("db backup 2314") # globl debug
# console info
# file warning # 全局设置为DEBUG后,console handler 设置为INFO,如果输出的日志级别是debug,那就不输出 """
日志自动截断
"""
# 按文件大小截断
# from logging import handlers
# fh = handlers.RotatingFileHandler("web.log", maxBytes=100, backupCount=13) # 文件最大100个字节,最多保留3个文件,时间最早的删除
# 按时间长短截断
# from logging import handlers
# fh = handlers.TimedRotatingFileHandler("web.log",when="S",interval=5,backupCount=3)
Python模块之 - logging的更多相关文章
- python 模块之-logging
python 模块logging import logging ### 简单使用格式 日志级别等级CRITICAL > ERROR > WARNING > INFO > ...
- python初步学习-python模块之 logging
logging 许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪.在python中,我们不需要第三方的日志组件,python为我们提供了简单易用.且 ...
- Python模块学习 ---- logging 日志记录
许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪.在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4cp ...
- Python 模块之Logging——常用handlers的使用
一.StreamHandler 流handler——包含在logging模块中的三个handler之一. 能够将日志信息输出到sys.stdout, sys.stderr 或者类文件对象(更确切点,就 ...
- python模块之logging
在现实生活中,记录日志非常重要.银行转账时会有转账记录:飞机飞行过程中,会有黑盒子(飞行数据记录器)记录飞行过程中的一切.如果有出现什么问题,人们可以通过日志数据来搞清楚到底发生了什么.对于系统开发. ...
- 【python模块】——logging
python学习——logging模块
- Python模块:logging、
logging模块: 很多程序都有记录日志的需求,并且日志中包含的信息既有正常的程序访问日志,还可能有错误.警告等信息输出.Python的logging模块提供了标准的日志接口,你可以通过它存储各种格 ...
- python模块学习 logging
1.简单的将日志打印到屏幕 import logging logging.debug('This is debug message') logging.info('This is info messa ...
- python模块:logging
# Copyright 2001-2016 by Vinay Sajip. All Rights Reserved. # # Permission to use, copy, modify, and ...
随机推荐
- matlab: 数据的读写
读取数据的方法 读取.txt数据 如果.txt是按照矩阵顺序保存的一个数组,可以用textread()函数来读取: GAP=textread('continua.txt'); 读取.fig图中的数据 ...
- Jquery精妙的自定义事件
对于jQuery自定义事件,很多JavaScript开发者都会有所疑惑:在日常开发过程中会不会用到呢?而本文将结合一个开发案例,其中的一些地方应用到了jQuery的自定义事件,而且达到了很好的效果-精 ...
- 爬虫实践---悦音台mv排行榜与简单反爬虫技术应用
由于要抓取的是悦音台mv的排行榜,这个排行榜是实时更新的,如果要求不停地抓取,这将有可能导致悦音台官方采用反爬虫的技术将ip给封掉.所以这里要应用一些反爬虫相关知识. 目标网址:http://vcha ...
- 第一次作业:来自一个奋斗的IT学子
第一部分 结缘计算机 1.1你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答) 说起为何结缘了计算机,就得谈谈专业报考了,我觉得我的报考真是一个反面教科书了.由于高中以前每天只要想着 ...
- IIS 错误代码
错误码: 1.HTTP 1xx-信息提示 这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个1xx响应. 100-继续. 101-切换协议. 2xx-成功 这类状态代码表明服务 ...
- C语言-最后一次作业
1.当初你是如何做出选择计算机专业的决定的? 经过一个学期,你的看法改变了么,为什么? 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗? 为什么? 我当初选择计算机专业是因为我是真的很向往计算机这方 ...
- Python split()方法
Python split()方法 描述 Python split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串 语法 split()方法语法: str.sp ...
- iOS开发点滴-添加阴影效果
UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:_backView.bounds]; _backView.layer.masks ...
- 搭建java环境——使用Sublime Text 3(windows环境)
实现sublime Text 3对Java编译执行 参考网址:http://tieba.baidu.com/p/2609515186 1.1直接在安装路径下找到*\Packages\Java.subl ...
- 服务器数据恢复方法_存储raid硬盘离线数据恢复案例
[故障描述]某法院的一台HP-P4500的存储系统,底层是12块1TB的硬盘组的RAID.其中每6个1TB的盘一组,第一组的前面一部分组了一个RAID0+1,是存放HP-P4500嵌入式系统,接着组了 ...