簡體   English   中英

如何在 python 應用引擎中更改日志消息的默認格式?

[英]How do I change the default format of log messages in python app engine?

我想在來自我的請求處理程序的日志消息中默認記錄模塊和類名。

執行此操作的常用方法似乎是通過調用logging.basicConfig來設置自定義格式字符串,但這只能調用一次,並且在我的代碼運行時已被調用。

另一種方法是創建一個新的日志Handler ,它可以傳遞一個新的日志Formatter ,但這似乎不正確,因為我想使用 App Engine 已安裝的現有日志處理程序。

將額外信息添加到 python App Engine 中的所有日志消息的正確方法是什么,否則使用現有的日志格式和接收器?

我通過閱讀logging模塊的__init__.py 我不知道這是否合適,但它似乎有效:

import logging

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
                    datefmt='%m-%d %H:%M',
                    )

logging.info('Danger Will Robinson!')
# 03-31 20:00 root         INFO     Danger Will Robinson!
root = logging.getLogger()
hdlr = root.handlers[0]
fmt = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
hdlr.setFormatter(fmt)
logging.info('Danger Will Robinson!')
# root        : INFO     Danger Will Robinson!

我發現這適用於 Python 3.6,它將為所有后續日志記錄調用設置日志記錄級別/格式,即使logging是由以前的導入調用的。

logging_level = logging.INFO
logging_fmt = "%(levelname)s:%(name)s:%(message)s"   # the default
try:
    root_logger = logging.getLogger()
    root_logger.setLevel(logging_level)
    root_handler = root_logger.handlers[0]
    root_handler.setFormatter(logging.Formatter(logging_fmt))
except IndexError:
    logging.basicConfig(level=logging_level, format=logging_fmt)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM