簡體   English   中英

帶有 logging.config.dictConfig 的 JSON 日志格式器

[英]JSON-log-formatter with logging.config.dictConfig

最近發現了JSON-log-formatter並想用它來用 JSON 編寫我的日志輸出。 在腳本中配置它相對簡單,但我現有的大部分代碼利用 logging.config.dictConfig 從 YAML 文件加載日志配置,這樣我就可以輕松配置日志而無需修改腳本本身,我想不通如何在配置中添加一個 python 模塊作為格式化程序。

當前的 YAML

version: 1
disable_existing_loggers: False
formatters:
  simple:
    format: "%(asctime)s | %(name)s | %(funcName)s() | %(levelname)s | %(message)s"
handlers:
  console:
    class: logging.StreamHandler
    level: DEBUG
    formatter: simple
    stream: ext://sys.stdout

  file_handler:
    class: logging.handlers.TimedRotatingFileHandler
    level: INFO
    formatter: simple
    filename: LogFile.log
    encoding: utf8
    backupCount: 30
    encoding: utf8
    when: 'midnight'
    interval: 1
    delay: True

loggers:
  my_module:
    level: ERROR
    handlers: [console]
    propagate: no

root:
  level: INFO
  handlers: [console, file_handler]

上面的配置有效,但我不知道如何使用該模塊將格式化程序更改為 JSON。 像這樣(我知道這行不通):

formatters:
  simple:
    format: json_log_formatter.VerboseJSONFormatter()

Python 加載那個 YAML

import logging.config
import json_log_formatter
import yaml

with open('./logging.yaml', 'r') as stream:
    logConfig = yaml.load(stream, Loader=yaml.FullLoader)
logging.config.dictConfig(logConfig)

我知道 python 只是將 YAML 加載到字典對象中,然后根據該字典配置日志記錄,但是如何設置格式化程序以使其正確引用該 JSON 日志記錄模塊並使用它?

沒關系,當然我在發布這個之后就明白了。

formatters:
  myformat:
    (): json_log_formatter.VerboseJSONFormatter

暫無
暫無

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

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