【1】如何优雅的记录日志? logging

  • 2019 年 10 月 10 日
  • 筆記

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_40313634/article/details/100782614

logging 模块

1 小例子: 在log文件输出log

# 内置库,不用安装  import logging      logging.basicConfig(      filename="test.log",  # 日志保存文件      filemode="w",  # 文件权限      datefmt="%d-%M-%Y %H:%M:%S",  # 打印的时间格式      format="%(asctime)s %(name)s:%(levelname)s:%(message)s",  # 打印的日志消息的格式      level=logging.DEBUG  # 打印的日志级别 >= 此级别的信息会被打印:NOTSET、DEBUG、INFO、WARNING、ERROR、CRITICAL  )    logging.debug('This is a debug message')  logging.info('This is an info message')  logging.warning('This is a warning message')  logging.error('This is an error message')  logging.critical('This is a critical message')

结果

# test.log  12-40-2019 14:40:17 root:DEBUG:This is a debug message  12-40-2019 14:40:17 root:INFO:This is an info message  12-40-2019 14:40:17 root:WARNING:This is a warning message  12-40-2019 14:40:17 root:ERROR:This is an error message  12-40-2019 14:40:17 root:CRITICAL:This is a critical message

异常消息捕获

try:      10 / 0  except Exception as e:      logging.exception(e)

参数

参数名

参数描述

filename

日志输出到文件的文件名

filemode

文件模式,r[+]、w[+]、a[+]

format

日志输出的格式

datefat

日志附带日期时间的格式

style

格式占位符,默认为 “%” 和 “{}”

level

设置日志输出级别(默认:WARNING)

2 分别在控制台、log 文件输出不同的log消息

import logging  import logging.handlers      # 根logger对象,后面所有的日志输出都调的是它  logger = logging.getLogger("logger")    # handler1: 输出到屏幕; handler2: 输出到文件  handler1 = logging.StreamHandler()  handler2 = logging.FileHandler(filename="test.log", encoding="utf-8")    # 屏幕打印error级别消息; 文件输出DEBUG级别消息  handler1.setLevel(logging.ERROR)  handler2.setLevel(logging.DEBUG)    formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s")  handler1.setFormatter(formatter)  handler2.setFormatter(formatter)    logger.addHandler(handler1)  logger.addHandler(handler2)    logger.info('This is an customer info message')  logger.debug('This is a customer debug message')  logger.warning('This is a customer warning message')  logger.error('This is an customer error message')  logger.critical('This is a custo