本文介绍如何通过Logtail采集Python日志。
背景信息
Python的logging模块提供通用的日志系统,可供第三方模块或者应用使用。logging模块定义了不同的日志级别和记录日志的方式。logging模块包括logger、handler、filter、formatter四个组件。
采集Python日志,推荐您使用Log Handler,详细介绍如下所示。
在formatter中定义日志输出格式,采用%(key)s形式。
import logging
import logging.handlers
LOG_FILE = 'tst.log'
handler = logging.handlers.RotatingFileHandler(LOG_FILE, maxBytes = 1024*1024, backupCount = 5) # 实例化handler
fmt = '%(asctime)s - %(filename)s:%(lineno)s - %(levelno)s %(levelname)s %(pathname)s %(module)s %(funcName)s %(created)f %(thread)d %(threadName)s %(process)d %(name)s - %(message)s' //定义日志格式
formatter = logging.Formatter(fmt) # 实例化formatter
handler.setFormatter(formatter) # 为handler添加formatter
logger = logging.getLogger('tst') # 获取名为tst的logger
logger.addHandler(handler) # 为logger添加handler
logger.setLevel(logging.DEBUG)
logger.info('first info message')
logger.debug('first debug message')
具体字段说明如下所示。
字段 | 说明 |
---|---|
%(name)s | 生成日志的Logger名称。 |
%(levelno)s | 数字形式的日志级别。 |
%(levelname)s | 文本形式的日志级别,包括DEBUG、INFO、WARNING、ERROR和CRITICAL。 |
%(pathname)s | 该日志所在源文件的路径。 |
%(filename)s | 文件名。 |
%(module)s | 该日志所在的模块名。 |
%(funcName)s | 日志输出函数的函数名。 |
%(lineno)d | 日志输出函数的语句所在的代码行。 |
%(created)f | 日志创建时间,UNIX标准时间格式,表示从1970-1-1 00:00:00 UTC计算起的秒数。 |
%(relativeCreated)d | 日志创建时间与logging模块被加载时间的时间差,单位为毫秒。 |
%(asctime)s | 日志创建时间。默认格式是2003-07-08 16:49:45,896,逗号(,)后面的数字为毫秒数。 |
%(msecs)d | 日志创建时间,毫秒级别。 |
%(thread)d | 线程ID。 |
%(threadName)s | 线程名称。 |
%(process)d | 进程ID。 |
%(message)s | 日志信息。 |
输出的日志样例如下所示。
2015-03-04 23:21:59,682 - log_test.py:16 - tst - first info message
2015-03-04 23:21:59,682 - log_test.py:17 - tst - first debug message
在文档使用中是否遇到以下问题
更多建议
匿名提交