logging 模块学习

1、When to use logging

level when to use
DEBUG 细节信息,调试程序
INFO 证实程序如期运行
WARNING 出现异常,但程序仍运行
ERROR 严重问题,程序部分功能不能运行
CRITICAL 出错,程序不能运行

2、A simple example

默认是warning!

import logging
logging.warning('Watch out!') # will print a message to the console
logging.info('I told you so') # will not print anything

consle_result:

WARNING:root:Watch out!

3、Logging to a file

import logging
logging.basicConfig(filename='example.log',level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')

file_result:

DEBUG:root:This message should go to the log file
INFO:root:So should this
WARNING:root:And this, too

上例中默认是输出文件为a+模式,可以自定义:

logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)

4、Logging variable data

import logging
logging.warning('%s before you %s', 'Look', 'leap!')

result:

WARNING:root:Look before you leap!

This is for backwards compatibility: the logging package pre-dates newer formatting options such as str.format()
and string.Template
. These newer formatting options are supported

5、格式

import logginglogging.basicConfig(format='%(levelname)s[%(asctime)s] :%(message)s', datefmt='%m/%d/%Y %I:%M:%S %p', level=logging.DEBUG)

6、一般使用方法

import logging
# create logger
logger = logging.getLogger('simple_example')#getLogger自定义值可替换root
logger.setLevel(logging.DEBUG)

# create console handler and set level to debug
ch=logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# create formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# add formatter to ch
ch.setFormatter(formatter)

# add ch to logger
logger.addHandler(ch)

# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

7、同时打印到控制台和输出文件

import logging
import os
log = logging.getLogger()
formatter = logging.Formatter('[%(asctime)s] [%(name)s] %(levelname)s: %(message)s') 
stream_handler = logging.StreamHandler()
file_handler = logging.FileHandler(os.path.join(os.getcwd(), 'test.log'))

file_handler.setFormatter(formatter)
stream_handler.setFormatter(formatter)

log.addHandler(file_handler)
log.addHandler(stream_handler)
log.setLevel(logging.DEBUG)

8、使用配置文件

import logging
import logging.config
logging.config.fileConfig('logging.conf')

# create logger
logger = logging.getLogger('simpleExample')

# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

logging.conf 文件格式:

[loggers]
keys=root,simpleExample

[handlers]
keys=consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_simpleExample]
level=DEBUG
handlers=consoleHandler
qualname=simpleExample
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=

推荐阅读更多精彩内容

  • logging模块介绍: logging是python内置的标准库模块,模块提供不同的日志级别,并可以采用不同的方...
    4ffde5305e8f阅读 2,265评论 0 2
  • 描述 环境: python3.x源码: /Lib/logging/init.py python提供了logging...
    白蛙阅读 699评论 0 0
  • logging模块基础知识 简单的将日志打印到屏幕 默认情况下,logging将日志打印到屏幕,日志级别为WARN...
    羽恒阅读 587评论 0 1
  • 1.简单的将日志打印到屏幕 屏幕上打印: 默认情况下,logging将日志打印到屏幕,日志级别为WARNING;日...
    大明白阅读 1,447评论 0 49
  • 这个模块经常用, 由于用法比较复杂, 老是用一次忘一次. 今天写一篇学习笔记, 加深印象. refer to: p...
    Edward_f0cus阅读 279评论 0 1
  • 前几天跟朋友有过一次蛮私密的对话。 被问及“觉得想想就很温暖的事是什么”,我说,嗯,一想就觉得很棒的事是,以前喜欢...
    北方不冷啊阅读 159评论 0 0
  • 给我一段老时光 给我一段老时光,在那轮回的小巷 檐牙如许,雨珠时堕 撑着油纸伞的粉衣裳的姑娘, 闲闲走过。 给我一...
    意意宁宁阅读 238评论 0 0
  • (我要出门打蚊子 不对 是打苍蝇) 先打苍蝇还是老虎 好像都有点力量不足 暴力不能解决所有的问题 白鸽未必就暗示着...
    徐秀美阅读 169评论 0 0
  • 刘希夷(刘庭芝)真是好听的名字,芝兰玉树的风采。 譬如芝兰玉树,欲使其生于阶庭耳。 视之不见谓之希,听之不见谓之夷。
    很好听的昵称阅读 61评论 0 0