【发布时间】:2014-09-28 16:21:15
【问题描述】:
我想使用一个外部模块,但是这个模块配置了记录器,我不知道如何覆盖它以便记录到文件
#my main.py
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
logging.basicConfig(filename='/home/pi/thermostat/server.log',level=logging.DEBUG)
logging.basicConfig(format='%(asctime)s %(message)s')
logger = logging.getLogger(__name__)
termo = SHT1x(dataPin, clkPin, SHT1x.GPIO_BOARD) #this one configures the log also
def main():
logger.info("SERVER START")
return
if __name__ == "__main__":
main()
我正在使用的模块正在做:
#SHT1x module
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(____name____)
def main():
#....
if __name__ == '__main__':
main()
所以我的程序正在记录到控制台而不是 server.log 有没有办法覆盖这种行为?
【问题讨论】:
-
模块不应调用
logging.basicConfig。如果有的话,只有主程序应该调用一次basicConfig。 (如果根记录器已经配置了处理程序,basicConfig什么也不做。你能改变模块吗? -
这也是我正在阅读的内容:库不应该配置日志记录,所以是的,我想作为最后的手段来更改库。