使用python';s日志包,如何使用同一个记录器写入不同的日志文件

使用python';s日志包,如何使用同一个记录器写入不同的日志文件,python,python-2.7,logging,Python,Python 2.7,Logging,我有两个文件名“parent”和“child”。没有类,只有两个带函数的文件和if\uuuuu name\uuuuu==“\uuuuu main\uuuu”语句。主函数中的两个文件都有一个函数,该函数使用logger=logging.getLogger('MyLogger')创建带有TimedRotatingFileHandler的logger对象,然后返回logger。该功能如下所示: def setupLogFile(): LOG_FILE_NAME = "/path/to/pyrp

我有两个文件名“parent”和“child”。没有类,只有两个带函数的文件和
if\uuuuu name\uuuuu==“\uuuuu main\uuuu”
语句。主函数中的两个文件都有一个函数,该函数使用
logger=logging.getLogger('MyLogger')
创建带有
TimedRotatingFileHandler
的logger对象,然后返回logger。该功能如下所示:

def setupLogFile():
    LOG_FILE_NAME = "/path/to/pyrpc.log"
    logHandler = TimedRotatingFileHandler(LOG_FILE_NAME, when="midnight")
    logFormatter = logging.Formatter('%(asctime)s |%(levelname)s|: %(message)s')
    logHandler.setFormatter(logFormatter)
    logger = logging.getLogger('MyLogger')
    logger.addHandler(logHandler)
    logger.setLevel(logging.INFO)
    return logger
两个文件中的许多函数都包含如下调用

logger.info("log something important")
让我们调用其中一个函数“funcA()”。我的问题是,若parent导入child,那个么parent中的某个地方就会有一行运行

child.funcA()
如何使funcA()中的“logger.info(“log something important”)”行知道如何使用在父函数的主函数中创建的logger对象

现在我得到了以下错误

Traceback (most recent call last):
   File "testblockadder.py", line 57, in <module>
      testInitialDBData(topBlockHeight)
   File "testblockadder.py", line 33, in testInitialDBData
      testpyrpc.testBlock(block, blkHeight)
   File "/path/to/pyrpc.py", line 46, in testBlock
      logger.info("log something important")
NameError: global name 'logger' is not defined
但它似乎总是使用
logging.basicConfig()
,我很确定这意味着每次都必须登录到同一个文件。以独占方式在父日志中运行的函数与funcA()的文件不同。如果我在父级中运行的任何代码都记录到同一个日志文件中,那就没问题了,但我需要该文件中的日志来说明调用了哪个文件(即,它是来自父级还是子级)

编辑:我已经设法使用这篇文章中的提示来获得我需要的日志记录。然而,对于这种类型的设置,我有一个挥之不去的问题。我使用了
basicConfig
来设置
格式化程序和日志位置。是否有方法更改
basicConfig
为我设置的默认
StreamHandler
,将其改为
timedrotingfilehandler
?这样,我就不会一直将所有内容都记录到一个文件中

logger = logging.getLogger(__name__)