从多个python模块自定义日志记录

时间:2013-11-28 10:37:56

标签: python logging

任务

我的应用程序中的多个模块都有日志记录设置。所有这些模块都将日志发送到同一个文件。

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()方法时初始化这些自定义设置,但我目前没有想法如何。

P.S。请忽略错别字。这是一个很长的代码。

1 个答案:

答案 0 :(得分:2)

您可以使用日志记录模块中的logging.getlogger(name)方法,而不是创建单个全局记录器。 这样您将获得一个记录器对象。现在,您可以设置记录器对象的其他参数。

这就是文档所说的:

  

记录器名称层次结构类似于Python包   层次结构,如果您在a上组织记录器,则与它相同   每个模块使用推荐的结构   logging.getLogger(的 __ 名称 __ )。那是因为在模块中, __ name __ 是   Python包命名空间中的模块名称。