什么是Python的默认日志记录格式化程序?

时间:2013-05-26 08:41:49

标签: python logging

我正在尝试破译日志中包含的信息(日志记录设置使用的是默认格式化程序)。 documentation州:

  

对记录进行格式化 - 如果设置了格式化程序,请使用它。否则,请使用模块的默认格式化程序。

但是,我找不到任何实际说明这种默认格式的引用。

5 个答案:

答案 0 :(得分:39)

默认格式位于here,即:

BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"  

Format代码会告诉您如何自定义它。以下是一个关于如何自定义它的示例。

import sys
import logging

logging.basicConfig(
    level=logging.DEBUG,
    format="[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s",
    datefmt="%H:%M:%S",
    stream=sys.stdout)

logging.info("HEY")

结果是:

[26/May/2013 06:41:40] INFO [root.<module>:1] HEY

答案 1 :(得分:3)

import logging
print(logging.BASIC_FORMAT)

旧线程,但这在我的谷歌搜索结果中首先出现查询“python logging default format”,所以我想我应该添加我的答案。

还有一些评论询问人们如何能够自己发现这一点。这是一件很自然的事情:

import logging
print(dir(logging))

BASIC_FORMAT就在那里,实际上它是我案例中结果的第一个条目。

答案 2 :(得分:1)

它位于logging/__init__.py

的来源
_defaultFormatter = Formatter()

默认格式字符串是%(message)s,它也在源代码中:

if fmt:
    self._fmt = fmt
else:
    self._fmt = "%(message)s"

答案 3 :(得分:1)

默认似乎是%(levelname)s:%(name)s:%(message)s

import logging
logging.error("Some error")
print "fmt: " , logging.root.handlers[0].formatter._fmt
# ERROR:root:Some error
# fmt:  %(levelname)s:%(name)s:%(message)s

答案 4 :(得分:0)

以下是高级日志记录方式的示例:-

import logging
class logger_con():
   def log_test(self):
      """
        :create logger
        :set logger level
        :create console handler
        :add formatter to console handler
        :add console handler to logger
        :add logging massage
        :return:
      """
    #create logger and set level
    logger=logging.getLogger(logger_con.__name__)

    logger.setLevel(logging.INFO)

    #create console handler(we are using steamHandler which is only used to display log in console)

    con_handler=logging.StreamHandler()
    con_handler.setLevel(logging.INFO)

    #create formatter and add formatter to con_handler
    formatter=logging.Formatter('%(asctime)s : %(message)s : %(levelname)s -%(name)s',datefmt='%d%m%Y %I:%M:%S %p')
    con_handler.setFormatter(formatter)
    #add console handler to logger
    logger.addHandler(con_handler)

    logger.debug('Program debugging')
    logger.info('massage conatain information')
    logger.warning('warning message')
    logger.error('massage contains error')
    logger.critical('critical massages')