簡體   English   中英

從多個python模塊自定義日志記錄

[英]Custom Logging from multiple python modules

任務

我在應用程序中的多個模塊中進行了日志記錄設置 所有這些模塊都將日志發送到同一個文件。

Client.py

import logging
import Settings
import actions1
import actions2

def initLogging(logToConsole=False):
  global logger
  logger=Settings.customLogging(Name,Dir,FileName,Level,CmdId,logToConsole)
  logger.info("Starting client")

def initActions():
  actions.init(logger) 

Settings.py

import logging
import logging.handlers

def initLogging(name,dir,file,cmdId,logToConsole=false):
  logger=logging.getLogger(name)
  **setup the logger properties with loglevels, formatting etc**
  return logger

actions1.py

def init(plogger):
  global logger
  logger=plogger

def some_function()
  **do something**
  logger.info("some text")

我有多個actions1 / 2 / 3.py模塊,我希望每個動作腳本都有不同的日志記錄級別和不同的日志記錄格式。 我瀏覽了文檔並遇到了輔助模塊示例,但它沒有指定在這些單獨的腳本訪問時如何為同一個記錄器實現自定義設置。

任何有關如何做的幫助將不勝感激。 我可能想在調用init()方法時初始化這些自定義設置,但我目前沒有想法如何。

PS請忽略錯別字。 這是一個很長的代碼。

您可以使用日志記錄模塊中的logging.getlogger(name)方法,而不是創建單個全局記錄器。 這樣您將獲得一個記錄器對象。 現在,您可以為記錄器對象設置其他參數。

這是文檔說的:

記錄器名稱層次結構類似於Python包層次結構,如果使用推薦的構造logging.getLogger( __ name __ )在每個模塊的基礎上組織記錄器,則與其相同。 那是因為在模塊中, __ name __是Python包命名空間中的模塊名稱。

暫無
暫無

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

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