Logging From Python
Preface *Jack Lee*
logging是Python提供用于记录日志的模块.
其中有6种日志等级.
- NOTSET: 00 不设置.
- DEBUG: 10 详细信息.
- INFO: 20 正常工作信息.
- WARNING: 30 警告信息.
- ERROR: 40 错误信息.
- CRITICAL: 50 致命信息.
Getting Start
- 设置低等级, 只会显示当前等级和高于当前等级的信息.
- 要使用日志模块
- 创建日志对象并设定等级
- 创建处理对象并设定等级
- 定义日志格式
- 将处理对象添加到日志对象中
import logging
# 创建log对象, 设置等级, 指定日志记录输出文件.
logger = logging.getLogger('test_log.txt')
logger.setLevel(logging.DEBUG)
# 创建控制台处理对象.
sh = logging.StreamHandler()
sh.setLevel(logging.ERROR)
# 创建log文件处理对象.
fh = logging.FileHandler('test_log.txt')
fh.setLevel(logging.DEBUG)
# 定义日志格式.
fromatter = logging.Formatter('TIME:%(asctime)s LOG:%(levelname)s INFO:%(message)s')
sh.setFormatter(fromatter)
fh.setFormatter(fromatter)
# 将处理对象扔给log对象.
logger.addHandler(sh)
logger.addHandler(fh)
if __name__ == '__main__':
logger.debug('This is DEBUG')
logger.error('ERROR')
logger.info('info')
logger.critical('critical')
- Formatter日志格式
- %(name)s: logger名字
- %(levelno)s: 日志等级的数值形式
- %(levelname)s: 日志等级的文本形式
- %(filename)s: 调用日志输出的文件名
- %(module)s: 调用日志输出的模块名
- %(asctime)s: 当前时间的时间字符串
- %(message)s: 用户输出的信息
- %(funcName)s: 调用日志输出的函数名
- %(lineno)d: 调用日志输出函数的语句所在的代码行
- %(created)f: 当前的时间, UNIX标准的浮点型表示.
- %(thread)d: 线程ID.
- %(threadName)s: 线程名.
- %(process)d: 进程ID.
- %(processName)s: 进程名.