前言:

python引入logging模块,用来记录自己想要的信息。print也可以输入日志,但是logging相对print来说更好控制输出在哪个地方。怎么输出以及控制消息级别来过滤掉那些不需要的信息。

日志级别:

代码:

 # coding:utf-8
import logging # 引入logging模块 # 将信息打印到控制台上 # 如果需要显示低于WARNING级别的内容,可以引入NOTSET级别来显示
logging.basicConfig(level=logging.NOTSET) # 设置日志级别
logging.debug(u"小花")
logging.info(u"如果设置了日志级别为NOTSET,那么这里可以采取debug、info的级别的内容也可以显示在控制台上了") logging.warning(u"小丽")
logging.error(u"zxc")
logging.critical(u"qwe")
# 正常情况下只能看到后面三个能打印出来。因为:默认生成的root logger的level是logging.WARNING,低于该级别的就不输出了。级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG

执行结果:

DEBUG:root:小花
INFO:root:如果设置了日志级别为NOTSET,那么这里可以采取debug、info的级别的内容也可以显示在控制台上了
WARNING:root:小丽
ERROR:root:zxc
CRITICAL:root:qwe

日志输出-控制台:

代码:

 # coding:utf-8
import logging # 引入logging模块 # 通过logging.basicConfig 函数进行配置了日志级别和日志内容输出格式
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') # logging.basicConfig函数对日志的输出格式及方式做相关配置
# 因为日志基本配置中级别设置为DEBUG,所以会将DEBUG级别以上的信息都输出显示再控制台上
logging.debug('this is a loggging debug message')
logging.info('this is a loggging info message')
logging.warning('this is loggging a warning message')
logging.error('this is an loggging error message')
logging.critical('this is a loggging critical message')

执行结果:

2018-07-20 10:17:54,727 - logging1.py[line:8] - INFO: this is a loggging info message
2018-07-20 10:17:54,805 - logging1.py[line:9] - DEBUG: this is a loggging debug message
2018-07-20 10:17:54,805 - logging1.py[line:10] - WARNING: this is loggging a warning message
2018-07-20 10:17:54,805 - logging1.py[line:11] - ERROR: this is an loggging error message
2018-07-20 10:17:54,805 - logging1.py[line:12] - CRITICAL: this is a loggging critical message

日志输出-控制台和文件、捕获异常:

代码:

 # coding:utf-8
import logging # 引入logging模块
import time # 第一步,创建一个logger
logger = logging.getLogger() # 获取logger实例,如果参数为空,则返回root logger,即默认的logger名称是root
logger.setLevel(logging.INFO) # Log等级总开关. logger.setLevel()设置日志级别 # 第二步,创建一个handler,用于写入日志文件
rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
logfile = rq + ".log"
fh = logging.FileHandler(logfile, mode='w')
fh.setLevel(logging.DEBUG) # 输出到file的log等级的开关 # 同时输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING) # 第三步,定义handler的输出格式
# 配置日志的格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
fh.setFormatter(formatter) # 设置Formatter
ch.setFormatter(formatter) # 第四步,将logger添加到handler里面
logger.addHandler(fh) # 添加一个Handler
logger.addHandler(ch) # 使用logger.XX来记录错误,这里的"error"可以根据所需要的级别进行修改
try:
open('/path/to/does/not/exist', 'rb')
except (SystemExit, KeyboardInterrupt):
raise
except Exception as e:
logger.error('Failed to open file', exc_info=False) # 如果要求日志上报错误,可以将exc_info设置为True. # # 日志
# logger.debug('this is a logger debug message')
# logger.info('this is a logger info message')
# logger.warning('this is a logger warning message')
# logger.error('this is a logger error message')
# logger.critical('this is a logger critical message')

执行结果:

2018-07-20 10:45:11,936 - logging1.py[line:35] - ERROR: Failed to open file  # 文件和控制台上是一致的

日志的输出顺序和模块的执行顺序是一致的。

注意:

“AttributeError:moudle 'logging' has no attribute 'basicConfig'”——原因为:把文件名命名为logging.py导致该错误。

参考链接:

https://www.cnblogs.com/CJOKER/p/8295272.html

https://blog.csdn.net/zyz511919766/article/details/25136485

python之logging模块简单用法的更多相关文章

  1. python中logging模块的用法

    很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...

  2. Python的logging模块基本用法

    Python 的 logging 模块的简单用法 在服务器部署时,往往都是在后台运行.当程序发生特定的错误时,我希望能够在日志中查询.因此这里熟悉以下 logging 模块的用法. logging 模 ...

  3. logging模块简单用法

    logging模块功能比较多,但一般情况下使用其简单功能就已经足够了. 最简单的用法如下: import logging logging.baiscConfig(level=logging.DEBUG ...

  4. Python中logging模块的基本用法

    在 PyCon 2018 上,Mario Corchero 介绍了在开发过程中如何更方便轻松地记录日志的流程. 整个演讲的内容包括: 为什么日志记录非常重要 日志记录的流程是怎样的 怎样来进行日志记录 ...

  5. python的logging模块

    python提供了一个日志处理的模块,那就是logging 导入logging模块使用以下命令: import logging logging模块的用法: 1.简单的将日志打印到屏幕上 import ...

  6. python基础--logging模块

    很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...

  7. python的logging模块之读取yaml配置文件。

    python的logging模块是用来记录应用程序的日志的.关于logging模块的介绍,我这里不赘述,请参见其他资料.这里主要讲讲如何来读取yaml配置文件进行定制化的日志输出. python要读取 ...

  8. Python的logging模块详解

          Python的logging模块详解 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.日志级别 日志级别指的是产生的日志的事件的严重程度. 设置一个级别后,严重程度 ...

  9. python之 logging 模块(上篇)

    一.日志关概念 日志是一种可以追踪某些软件运行时所发生事件的方法.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情.一个事件可以用一个可包含可选变量数据的消息来描述.此外,事件 ...

随机推荐

  1. 学习日常笔记<day14>自定义标签

    1自定义标签 1.1第一个自定义标签开发步骤 1)编写一个普通的java类,继承SimpleTagSupport类,叫标签处理器类 /** * 标签处理器类 * @author APPle * 1)继 ...

  2. 在d盘中创建一个文件夹 在文件夹里创建三个txt文本

    import java.io.File; import java.io.IOException; public class FileDemo { public static void main(Str ...

  3. Maven查看依赖树

    1.命令行,但是只能查看一层的引用 mvn dependency:tree 如图所示: 2.使用Eclipse的Dependency Hierarchy查看,这个就比较深层次的查看,如图所示: 3.使 ...

  4. spring mvc 选中多文件同时上传(利用input元素的multiple属性)

    原文:http://m.blog.csdn.net/article/details?id=51351388 <!DOCTYPE html> <html> <head> ...

  5. Design Pattern Visitor 訪问者设计模式

    訪问者设计模式是已经有了一组Person对象了,然后不同的訪问者訪问这组对象.会有不同效果. 这些訪问者实际上就是一个能够让Person对象组运行的动作行为等. 至于这些Person对象是怎样运行这些 ...

  6. 【APUE】线程与信号

    每个线程都有自己的信号屏蔽字,但是信号的处理是进程中所有线程共享的.进程中的信号是递送到单个线程的. 线程中pthread_sigmask函数类似与进程的sigprocmask函数,可以用来阻塞信号. ...

  7. Object.getOwnPropertyNames()

    1.Object.getOwnPropertyNames(),遍历实例属性(包括不可枚举),返回属性名组成的数组 var arr = ["a", "b", &q ...

  8. OpenCV---在图片上加入文字

    /****************************************** func:cvText desc:put text on an image @param img The ima ...

  9. TinyXml 与 Rapidxml效率对照

    曾经在做开发中一直使用TinyXml,在网上搜索说Rapidxml的效率比tinyXml高.个人比較喜欢追求效率.所以忍不住尝试性使用Rapidxml. RapidXml 的官方站点例如以下: htt ...

  10. xgboost python windows编译问题

    1.作为kaggle上非常火的机器学习包xgboost,windows python包安装起来真的非常麻烦,安装了一整天才成功. 2.请先下载xgboost-master,csdn上有资源的,能够在这 ...