python使用logging模块方法 教程

logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点:

可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息;
print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据;logging则可以由开发者决定将信息输出到什么地方,以及怎么输出;

  1. logging模块的日志级别

logging模块默认定义了以下几个日志等级,它允许开发人员自定义其他日志级别,但是这是不被推荐的,尤其是在开发供别人使用的库时,因为这会导致日志级别的混乱。

日志等级(level) 描述

DEBUG   最详细的日志信息,典型应用场景是 问题诊断
INFO    信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING 当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR   由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL    当发生严重错误,导致应用程序不能继续运行时记录的信息
开发应用程序或部署开发环境时,可以使用DEBUG或INFO级别的日志获取尽可能详细的日志信息来进行开发或部署调试;应用上线或部署生产环境时,应该使用WARNING或ERROR或CRITICAL级别的日志来降低机器的I/O压力和提高获取错误日志信息的效率。日志级别的指定通常都是在应用程序的配置文件中进行指定的。

说明:

上面列表中的日志等级是从上到下依次升高的,即:DEBUG < INFO < WARNING < ERROR < CRITICAL,而日志的信息量是依次减少的;
当为某个应用程序指定一个日志级别后,应用程序会记录所有日志级别大于或等于指定日志级别的日志信息,而不是仅仅记录指定级别的日志信息,nginx、php等应用程序以及这里要提高的python的logging模块都是这样的。同样,logging模块也可以指定日志记录器的日志级别,只有级别大于或等于该指定日志级别的日志记录才会被输出,小于该等级的日志记录将会被丢弃。

1.输出到日志里,详细见如下代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import logging

# 第一步
# 创建一个logger
terLog = logging.getLogger(‘__nginx__‘)
# 设置logger级别 log等级总开关
terLog.setLevel(level=logging.INFO)

# 第二步
# 输出到file名称
fileLog = logging.FileHandler(‘nginxLog.txt‘)
# 输出到file的log等级开关
fileLog.setLevel(logging.INFO)

# 第三步定义handler输出格式
deFormat = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘)
fileLog.setFormatter(deFormat)

# 第四步 将fileLog添加到terLog里面
terLog.addHandler(fileLog)

# 日志
terLog.info("Start print log 123 魏若愚")
terLog.debug("Do something debug魏若愚")
terLog.warning("Something maybe fail.warning魏若愚")
terLog.info("Finish info魏若愚")

2只输出到屏幕

3同时输出到屏幕,并且输出到日志里,如下代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import logging

# 第一步
# 创建一个logger
terLog = logging.getLogger(‘__nginx__‘)
# 设置logger级别 log等级总开关
terLog.setLevel(level=logging.INFO)

# 第二步
# 输出到file名称
fileLog = logging.FileHandler(‘nginxLog.txt‘)
# 输出到file的log等级开关
fileLog.setLevel(logging.INFO)

#同时输出到屏幕
outputConsole = logging.StreamHandler()
outputConsole.setLevel(logging.INFO)

# 第三步定义handler输出格式
deFormat = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘)
fileLog.setFormatter(deFormat)
# 同时设置输出屏幕格式
outputConsole.setFormatter(deFormat)

# 第四步 将fileLog添加到terLog里面
terLog.addHandler(fileLog)

# 同时输出到屏幕东中
terLog.addHandler(outputConsole)

# 日志
terLog.info("Start print log 123 魏若愚")
terLog.debug("Do something debug魏若愚")
terLog.warning("Something maybe fail.warning魏若愚")
terLog.info("Finish info魏若愚")

输出屏幕结果:

2019-03-11 16:55:16,066 - __nginx__ - INFO - Start print log 123 魏若愚
2019-03-11 16:55:16,086 - __nginx__ - WARNING - Something maybe fail.warning魏若愚
2019-03-11 16:55:16,086 - __nginx__ - INFO - Finish info魏若愚

原文地址:https://blog.51cto.com/weiruoyu/2361317

时间: 2024-08-28 04:42:00

python使用logging模块方法 教程的相关文章

Python logging模块实例教程

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

python之logging模块的使用

python的logging模块是用来写日志的,是python的标准模块. logging的结构 查看logging的python源码,可知主要有四个类实现功能: Loggers:提供应用程序直接使用的接口,如相关的配置设置: Handlers:将Loggers产生的日志传到指定位置,设置日志保存的位置: Filters:对输出日志进行过滤操作: Formatters:控制日志的输出格式: 日志记录的级别 DEBUG:优先级10,记录调试的详细信息,只在调试时开启: INFO:优先级20,记录普

Python基础-----logging模块

#!/usr/bin/env python#-*- coding:utf-8 -*- ########################################################################################################################################################灵活配置日志级别,日志格式,输出位置#####################################

Python中logging模块的基本用法

在 PyCon 2018 上,Mario Corchero 介绍了在开发过程中如何更方便轻松地记录日志的流程. 整个演讲的内容包括: 为什么日志记录非常重要 日志记录的流程是怎样的 怎样来进行日志记录 怎样进行日志记录相关配置 日志记录使用常见误区 下面我们来梳理一下整个演讲的过程,其实其核心就是介绍了 logging 模块的使用方法和一些配置. 日志记录的重要性 在开发过程中,如果程序运行出现了问题,我们是可以使用我们自己的 Debug 工具来检测到到底是哪一步出现了问题,如果出现了问题的话,

python的logging模块

1.简单的将日志打印到屏幕 import logging logging.debug('This is debug message') logging.info('This is info message') logging.warning('This is warning message') 屏幕上打印: WARNING:root:Thisis warning message 默认情况下,logging将日志打印到屏幕,日志级别为WARNING: 日志级别大小关系为:CRITICAL > ER

python logging模块使用教程

简单使用 #!/usr/local/bin/python # -*- coding:utf-8 -*- import logging logging.debug('debug message') logging.info('info message') logging.warn('warn message') logging.error('error message') logging.critical('critical message') 输出: WARNING:root:warn mess

python中logging模块的使用

一.基本用法 只需要基本的配置,就可以使用了. import logging def fun2(): logging.basicConfig(filename="fun2.log",format="%(asctime)s %(message)s",level=logging.DEBUG) logging.debug("this is fun2 log") 二.进行详细配置 首先添加一个fileHandler来配置记录的文件,Formatter来设

python的logging模块详解

日志级别 >>>import logging >>>logging.NOTSET 0 >>>logging.DEBUG 10 >>>logging.INFO 20 >>>logging.WARN 30 >>>logging.ERROR 40 >>>logging.CRITICAL 50 >>>logging._levelNames {0:'NOTSET', 10:

python之logging模块使用

#!/usr/bin/env python # encoding: utf-8 import logging #定义handler的输出格式 formatter=logging.Formatter('%(asctime)s--%(name)s--%(filename)s--%(message)s') #创建一个handler,用于写入日志文件,只输出debug级别以上的日志 fh=logging.FileHandler('test.log') fh.setFormatter(formatter)