python之logging基础入门

博客学习至:https://www.cnblogs.com/Nicholas0707/p/9021672.html#_label0

      https://www.cnblogs.com/dream66/p/12792975.html

日志的作用:

  日志是一种可以追踪某些软件运行时所发生事件的方法。软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情。一个事件可以用一个可包含可选变量数据的消息来描述。此外,事件也有重要性的概念,这个重要性也可以被称为严重性级别(level)。

日志的作用:

  通过log的分析,可以方便用户了解系统或软件、应用的运行情况;如果你的应用log足够丰富,也可以分析以往用户的操作行为、类型喜好、地域分布或其他更多信息;如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、解决问题,补救损失。

 

  简单来讲就是,我们通过记录和分析日志可以了解一个系统或软件程序运行情况是否正常,也可以在应用程序出现故障时快速定位问题。比如,做运维的同学,在接收到报警或各种问题反馈后,进行问题排查时通常都会先去看各种日志,大部分问题都可以在日志中找到答案。再比如,做开发的同学,可以通过IDE控制台上输出的各种日志进行程序调试。对于运维老司机或者有经验的开发人员,可以快速的通过日志定位到问题的根源。可见,日志的重要性不可小觑。日志的作用可以简单总结为以下3点:

  • 程序调试

  • 了解软件程序运行情况,是否正常

  • 软件程序运行故障分析与问题定位

logging模块的日志级别:

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

日志等级(level)描述
DEBUG 最详细的日志信息,典型应用场景是 问题诊断
INFO 信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING 当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR 由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL 当发生严重错误,导致应用程序不能继续运行时记录的信息

  日志级别关系:

  NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL

  备注:如果把log的级别设置为INFO, 那么小于INFO级别的日志都不输出, 大于等于INFO级别的日志都输出。也就是说,日志级别越高,打印的日志越不详细。

 

日志流处理简要流程

1、创建一个logger

2、设置下logger的日志的等级

3、创建合适的Handler(FileHandler要有路径)

4、设置下每个Handler的日志等级

5、创建下日志的格式

6、将日志打印进日志文件中

7、将日志打印在控制台上

8、打印输出logger.debuglogger.infologger.warninglogger.error

# 简单日志
import os
import logging

# 打印日志存放路径
current_path = os.path.dirname(__file__)
log_file_path = os.path.join(current_path,'../logs/test.log')

# 创建一个日志对象,定义一个名称
logger = logging.getLogger(__name__)

# 设置全局日志级别debug info warning error fatal..
logger.setLevel(level=logging.INFO)

# 创建一个控制台输出日志的对象
console = logging.StreamHandler()
# 设置日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console.setFormatter(formatter)
# 自定义日志级别,设定的级别越高,会自动过滤该级别以下的错误日志
console.setLevel(level=logging.DEBUG)

# 输出日志到文件中
file_log = logging.FileHandler(log_file_path)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_log.setFormatter(formatter)

# 日志配置在控制台输出
logger.addHandler(console)

# 日志对象配置在文件输出
logger.addHandler(file_log)

# 打印输出
logger.debug("查错")
logger.warning("警告")
logger.info("提示")
logger.error("错误")
原文地址:https://www.cnblogs.com/ClownAlin/p/12864812.html