我测试以下代码以了解导入自定义python程序的过程,并且工作正常,但是当按照相同的过程导入自定义日志记录模块时,我会看到错误。
以下工作正常
#calculation.py
from mult import product
def add(a,b):
return a + b
if __name__== '__main__':
a = 10
b = 5
print(add(a,b))
print(product(a,b))
现在第二个程序mult.py
# mult.py
def product(a,b):
return a * b
下方不起作用,为什么?
#test_logger.py
import loggerforhousing
print("custom logs")
logger.info("this is info")
logger.error("this is error")
第二程序
#loggerforhousing.py
import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s:%(levelname)s:%(name)s:%(message)s')
file_handler = logging.FileHandler('train_123.log') # store log files in artifacts directory
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
错误消息
Traceback (most recent call last):
File "test_logger.py", line 3, in <module>
logger.info("this is info")
NameError: name 'logger' is not defined
请帮助我弄清楚我所缺少的东西。
答案 0 :(得分:1)
在 test_logger.py 中,声明logger为 loggerforhousing.py 的一部分:
loggerforhousing.logger.info(“this is info”)
或显式导入记录器(如使用产品功能的第一个代码片段所示):
from loggerforhousing import logger
有帮助吗?