Python 日志模块学习-logging模块使用

一.为什么需要使用日志Logging模块,而不用print函数直接输出调试信息?

1.如用print函数输出日志信息,调试结束后需要一个个去注释删除,工作量很大,很容易出错

2.分不清哪些是调试输出,哪些是程序输出,清理日志输出容易搞错程序结构

日志消息的好处在于,你可以随心所欲地在程序中想加多少就加多少,稍

后只要加入一次logging.disable(logging.CRITICAL)调用,就可以禁止日志。

二.如何使用日志模块,输出到屏幕,输出到文件

输出到文件

logging.basicConfig(filename='myProgramLog.txt', level=logging.DEBUG, format='

%(asctime)s - %(levelname)s - %(message)s')

三.调试结束后,如何警用日志

logging.disable(logging.CRITICAL)

会警用低于logging.CRITICAL级别的日志,因此使用logging.CRITICAL会禁用全部日志,调试还可以部分警用,比如logging.WARNING,这样,ERROR和CRITICAL日志还是会输出。

日志使用总结:

1.优先级

级别 日志函数 描述

DEBUG logging.debug() 最低级别。用于小细节。通常只有在诊断问题时,你才会关心这些消息

INFO logging.info() 用于记录程序中一般事件的信息,或确认一切工作正常

WARNING logging.warning() 用于表示可能的问题,它不会阻止程序的工作,但将来可能会

ERROR logging.error() 用于记录错误,它导致程序做某事失败

CRITICAL logging.critical() 最高级别。用于表示致命的错误,它导致或将要导致程序完全停止工作

日志消息作为一个字符串,传递给这些函数。日志级别是一种建议。归根到底,还是由你来决定日志

消息属于哪一种类型

2.启用

import logging

logging.basicConfig(level=logging.DEBUG, format=' %(asctime)s - %(levelname)s\

- %(message)s')

输出到文件

logging.basicConfig(filename='myProgramLog.txt', level=logging.DEBUG, format='

%(asctime)s - %(levelname)s - %(message)s')

会输出级别高于 level=logging.DEBUG的日志,因此 level=logging.DEBUG会输出全部日志

输出到文件,文件以当前时间为文件名:

import datetime
import logging, sys, traceback
datetimeNow = datetime.datetime.now()
datatimeStr = datetimeNow.strftime("%d-%m-%Y-%H-%M-%S")

# 将日志写入文本
logging.basicConfig(filename='{}.txt'. format(datatimeStr), filemode='w', level=logging.DEBUG, format='\
%(asctime)s - %(levelname)s - %(message)s')
# 禁用日志,禁用优先级低于CRITICAL的日志
'''日志有五种优先级,优先级从低到高依次为:
DEBUG
INFO
WARNING
ERROR
CRITICAL
警用日志会警用低于指定优先级的日志,如下使用logging.CRITICAL,因所有优先级都低于
CRITICAL,因此logging.disable(logging.WARNING)会禁用全部日志

不禁用时只需注释掉如下这行即可
'''
#logging.disable(logging.DEBUG)

3.警用

logging.disable(logging.CRITICAL)

使用logging.CRITICAL会禁用全部日志

问题如何将异常输出到日志文件中,或者如何将异常单独输出的错误文件中:

1.将异常输出到日志文件中

try:
    xxxx
except Exception as err:
    logging.exception(err)#将异常写入日志

2.将异常单独输出到错误文件中

import traceback
try:
    raise Exception('This is the error message.')
except Exception
    errorFile = open('errorInfo.txt', 'w')
    errorFile.write(traceback.format_exc())#将异常输出到单独的错误文件
    errorFile.close()

备注:使用了两个模块库

logging和traceback,相关的使用可以使用pydoc查询

CMD:


python -m pydoc -p 1551
Server ready at http://localhost:1551/
Server commands: [b]rowser, [q]uit
server> b

然后查找这两个模块

logging (version 0.5.1.2, 07 February 2010)

参考:Python编程快速上手——让繁琐工作自动化(异步图书) Chapter 10.4

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值