Python3日志模块logging

目录

 

1. logging模块

1.1 日志级别

1.2 logging.basicConfig()函数

1.3 实例

3. logging.getLogger()函数


1. logging模块

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

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

1.1 日志级别

python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以为 debug(), info(), warning(), error()和critical() 5个级别。

日志级别(由低到高)

 

DEBUG

 

INFO

 

WARNING

 

ERROR

 

CRITICAL

 

1.2 logging.basicConfig()函数

logging.basicConfig()函数为日志系统建立一个默认的流处理器(StreamHandler),设置基础配置(如日志级别等)并加到root logger(根Logger)中。

可通过具体参数来更改logging模块默认行为,可用参数有

  • filename:用指定的文件名创建FileHandler,这样日志会被存储在指定的文件中
  • filemode:文件打开方式,在指定了filename时使用这个参数,默认为“a”,还可指定为“w”
  • format:指定handler使用的日志显示格式
  • datefmt:指定日期时间格式
  • level:设置rootlogger的日志级别
  • stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略

format参数中可能用到的格式化字符串

format格式

描述

%(name)s

Logger的名字

%(levelno)s

数字形式的日志级别

%(levelname)s

文本形式的日志级别

%(pathname)s

调用日志输出函数的模块的完整路径名,可能没有

%(filename)s

调用日志输出函数的模块的文件名

%(module)s

调用日志输出函数的模块名

%(funcName)s

调用日志输出函数的函数名

%(lineno)d

调用日志输出函数的语句所在的代码行

%(create)f

当前时间,用Unix标准的表示时间的表示(浮点数)

%(relativeCreated)d

输出日志信息时的,自Logger创建以来的毫秒数

%(asctime)s

字符串形式的当前时间。

默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒

%(thread)d

线程ID。可能没有

%(threadName)s

线程名。可能没有

%(process)d

进程ID。可能没有

%(message)s

用户输出的消息

1.3 实例

import logging
logging.basicConfig(level = logging.DEBUG,
        format = '%(asctime)s\t%(filename)s\t[line:%(lineno)d]\t%(levelname)s\t%(message)s',
        datefmt = '%a, %d-%b-%Y %H:%M:%S',
        filename = '/var/log/test.log',
        filemode='a+')
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

运行上述代码后,输入cat /var/log/test.log进行查看

 

3. logging.getLogger()函数

logging.getLogger()函数返回一个Logger对象,如果没有指定名字将返回root logger

import logging
#创建一个logger对象
logger = logging.getLogger()
#创建一个handler,用于写入日志文件
fh = logging.FileHandler('/var/log/test.log')
#再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s -%(message)s')
#增加formatter输出格式到屏幕输出对象和文件输出对象
fh.setFormatter(formatter)
ch.setFormatter(formatter)
#将屏幕输出对象和文件输出对象添加到Logger
logger.addHandler(fh)
logger.addHandler(ch)
logger.setLevel(logging.DEBUG)
logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')

输入cat /var/log/test1.py查看日志文件(以和上述日志分开)

Python3日志模块logging_第1张图片

Python3日志模块logging_第2张图片

你可能感兴趣的:(Python3)