我正在尝试将一个模块添加到使用标准 Python (2.7) 日志库的项目中。我想要实现的是以下内容:
- 任何等于或差于 WARNING 的内容都会出现在主程序(我无法控制)配置日志记录的任何地方(通常是 stderr)
- 其他所有内容(主要是调试消息)都进入日志文件
请注意,这里的关键问题是我不想修改全局日志记录设置,因为这些设置是由主应用程序控制的。否则我会在这里使用示例:
http://docs.python.org/2/howto/logging-cookbook.html#logging-to-multiple-destinations
我试过这个:
logger = logging.getLogger('my_module')
logger.setLevel(logging.WARNING)
fh = logging.FileHandler('my_module.log')
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
但后来我只在我的文件中收到警告消息。
如果我将上面的行替换为:
logger.setLevel(logging.DEBUG)
然后我在 stderr 和我的文件中都收到调试消息。
然后我尝试了这个:
logger = logging.getLogger('my_module')
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.NullHandler())
console = logging.StreamHandler()
console.setLevel(logging.WARNING)
logger.addHandler(console)
fh = logging.FileHandler('my_module.log')
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
但再次没有运气。
那么我可以在不必调用 basicConfig() 或其他任何影响全局日志基础设施的情况下实现这一点吗?如果可能的话,我只想在这里修改我自己的模块。
谢谢!