Python - 在调用它的模块中使用logger内部函数

时间:2017-01-04 15:08:15

标签: python logging

我们说我的代码是这样的:

ModuleA.py:

Marshal.SizeOf(typeof(IntPtr))

ModuleB.py:

import logging
logger = logging.getLogger('A')

def utility_func():
    logger.info('hi')
print utility_func()

当从ModuleA.py中调用utility_func时,我希望它使用' A'记录器,当它从ModuleB.py调用时,我希望它使用' B'记录器。

有办法做到这一点吗?或者更好的设置方法?

更新

将utility_func更改为:

的想法如何?
import logging
logger = logging.getLogger('B')
from ModuleA import utility_func

print utility_func()

这会冒泡到调用代码使用的任何日志吗?

2 个答案:

答案 0 :(得分:0)

将它放在一个单独的文件中(如utils.py)

def utility_func(logger):
    logger.info('hi')

然后在文件ModuleA.py

import logging
import utils

logger = logging.getLogger(__name__)
print utility_func(logger)

答案 1 :(得分:0)

这就是我最终的目标。但我仍然很想知道是否有更优雅的方式。

ModuleB.py:

import logging
import ModuleA

logger = logging.getLogger('B')
ModuleA.logger = logger

print ModuleA.utility_func()