python的logging模块
python提供了一个日志处理的模块,那就是logging
导入logging模块使用以下命令;
import logging
logging模块的用法:
1.简单的将日志打印到屏幕上
import logging
logging.debug("This is debug message")
logging.info("This is info message")
logging.warning("This is warning message")
logging.error("This is error message")
logging.critical("This is critical message")
会在屏幕上显示出以下内容:
WARNING:root:This is warning message
ERROR:root:This is error message
CRITICAL:root:This is critical message
默认情况下python的logging模块将日志打印到了标准输出中,也就是屏幕上,且只显示了大于等于WARNING级别的日志.
这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG)
默认直接输出的日志格式为日志级别:Logger名称:用户:输出消息。
2.现在修改日志的默认输出级别为debug,重新设定输出时间的格式,
import logging
logging.basicConfig(level=logging.DEBUG,
format="%(asctime)s %(levelname)s %(message)s",
datefmt="%Y-%m-%d %H:%M:%S")
logging.debug("This is debug message")
logging.info("This is info message")
logging.warning("This is warning message")
logging.error("This is error message")
logging.critical("This is critical message")
会在屏幕上显示以下信息;
2017-07-02 10:41:18 DEBUG This is debug message
2017-07-02 10:41:18 INFO This is info message
2017-07-02 10:41:18 WARNING This is warning message
2017-07-02 10:41:18 ERROR This is error message
2017-07-02 10:41:18 CRITICAL This is critical message
3.现在想把程序产生的日志写入文件当中,可以这样设定:
import logging
logging.basicConfig(level=logging.DEBUG,
format="%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
filename="log.txt",
filemode="w")
logging.debug("This is debug message")
logging.info("This is info message")
logging.warning("This is warning message")
logging.error("This is error message")
logging.critical("This is critical message")
运行程序,会在脚本目录下生成一个名为log.txt的文件。
log.txt文件的内容如下:
2017-07-02 10:49:13 logging_modules.py[line:211] DEBUG This is debug message
2017-07-02 10:49:13 logging_modules.py[line:212] INFO This is info message
2017-07-02 10:49:13 logging_modules.py[line:213] WARNING This is warning message
2017-07-02 10:49:13 logging_modules.py[line:214] ERROR This is error message
2017-07-02 10:49:13 logging_modules.py[line:215] CRITICAL This is critical message
在这里设定日志文件的输出使用的是basicConfig这个方法:
logging.basicConfig函数各参数:
filename: 指定输出日志的文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,写入模式用'w',追加模式使用'a'
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,这里设定为logging.DEBUG
4.既想现在就看到输出的日志,又想把程序运行的日志保存在文件里,方便以后查看,可以这样设定:
import logging
logger=logging.getLogger()
#创建一个file_handle变量,用于把日志写入到文件
file_handle=logging.FileHandler("log1.txt")
#创建一个stream_handle变量,用于输出日志到屏幕上
stream_handle=logging.StreamHandler()
#设定输出日志的级别为debug级别
logger.setLevel(logging.DEBUG)
#设定输出日志的格式
fmt=logging.Formatter("%(asctime)s-%(levelname)s-%(message)s")
#为写入文件的日志添加已设定的格式
file_handle.setFormatter(fmt)
#为输出到屏幕的日志添加已设定的格式
stream_handle.setFormatter(fmt)
logger.addHandler(file_handle)
logger.addHandler(stream_handle)
#设定输出日志的信息
logging.debug("This is debug message")
logging.info("This is info message")
logging.warning("This is warning message")
logging.error("This is error message")
logging.critical("This is critical message")
运行程序后,会生成一个名为log1.txt的文件,文件的内容和屏幕上显示的内容都是:
2017-07-02 11:04:53,622-DEBUG-This is debug message
2017-07-02 11:04:53,623-INFO-This is info message
2017-07-02 11:04:53,623-WARNING-This is warning message
2017-07-02 11:04:53,623-ERROR-This is error message
2017-07-02 11:04:53,624-CRITICAL-This is critical message
在这里,还可以添加以下选项用来指定把要写入文件的日志设定为debug级别,而输出到屏幕上的日志还是warning级别
fh.setLevel(logging.Debug)
python的logging模块的更多相关文章
- Python之logging模块
一.引言 之前在写一些小程序的时候想把日志内容打到文件中,所以就自己写了一个logger.py的程序,如下: #!/usr/bin/python # -*- coding=utf-8 -*- impo ...
- python的logging模块之读取yaml配置文件。
python的logging模块是用来记录应用程序的日志的.关于logging模块的介绍,我这里不赘述,请参见其他资料.这里主要讲讲如何来读取yaml配置文件进行定制化的日志输出. python要读取 ...
- python中logging模块的用法
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...
- python基础--logging模块
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...
- Python中logging模块的基本用法
在 PyCon 2018 上,Mario Corchero 介绍了在开发过程中如何更方便轻松地记录日志的流程. 整个演讲的内容包括: 为什么日志记录非常重要 日志记录的流程是怎样的 怎样来进行日志记录 ...
- python之logging模块简单用法
前言: python引入logging模块,用来记录自己想要的信息.print也可以输入日志,但是logging相对print来说更好控制输出在哪个地方.怎么输出以及控制消息级别来过滤掉那些不需要的信 ...
- Python的logging模块详解
Python的logging模块详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.日志级别 日志级别指的是产生的日志的事件的严重程度. 设置一个级别后,严重程度 ...
- Python的logging模块基本用法
Python 的 logging 模块的简单用法 在服务器部署时,往往都是在后台运行.当程序发生特定的错误时,我希望能够在日志中查询.因此这里熟悉以下 logging 模块的用法. logging 模 ...
- python(logging 模块)
1.logging 模块的日志级别 DEBUG:最详细的日志信息,典型应用场景是 问题诊断 INFO:信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作 ...
随机推荐
- Ubuntu环境下IPython的搭建和使用
1. Ubuntu操作系统版本 说明:Ubuntu 12.04.3 LTS自带的Python 2.7.3版本. 2. 安装IPython 说明: 输入命令sudo apt-get install ip ...
- bzoj 1084;vijos 1191 [SCOI2005] 最大子矩阵
Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. Input 第一行为n,m,k(1≤n≤100,1≤m≤2 ...
- c语言优化
虽然对于优化C代码有很多有效的指导方针,但是对于彻底地了解编译器和你工作的机器依然无法取代,通常,加快程序的速度也会加大代码量.这些增加的代码也会影响一个程序的复杂度和可读性,这是不可接受的,比如你在 ...
- Myeclipse2014 已有项目更换JDK
原先项目使用JDK是1.7,今天项目加入了一个新包,只支持JAVA8,让我们都升级一下本地的JDK,我突然发现我还没有在myeclipse上升级过JDK呢.捣鼓了一下,也不难,记录一下. 1.下载ja ...
- 转:深入理解Java的接口和抽象类
转载原文链接: http://www.cnblogs.com/dolphin0520/p/3811437.html 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有 ...
- 转:C++与JAVA语言区别
转自:http://club.topsage.com/thread-265349-1-1.html Java并不仅仅是C++语言的一个变种,它们在某些本质问题上有根本的不同: (1)Java比C++程 ...
- Linux的ls命令在Windows中的应用
Linux的ls命令在Windows中的应用 注:ls是Linux中的命令.其作用是列出当前目录下的文件与文件夹.效果等同于Wndows中的dir指令. 如下图 下面是详细步骤 步骤一.在桌面新建一个 ...
- JAVA:创建类和对象
package duixiang; public class duixiang { /* * 类的实例化:创建对象 */ public static void main(String[] args) ...
- SDK是什么?什么是SDK
从 SDK导航 看到的 应该比较专业! SDK的英文全名是:software development kit,翻译成中文的意思就是"软件开发工具包" 通俗一点的理解,是指由第三方服 ...
- 邓_tp_笔记
<?phpnamespace app\teacher\controller;use think\Db;use app\common\model\Classcourse;use app\commo ...