【发布时间】:2018-05-17 18:38:26
【问题描述】:
如何设置基本日志记录以写入日志文件并将输出打印到终端?
我使用 basicConfig 为模块和子模块设置日志记录。
问题: 如果我使用 logging.basicConfig(filename=LOGFILE, ...) 日志模块将不再有终端输出。 如果我为日志文件添加另一个 FileHandler,这仅由主模块使用,而不是由子模块使用,例如:
if __name__ == "__main__":
logging.basicConfig(
level=logging.DEBUG,
format="%(name)s (%(lineno)s): %(message)s",
filename=LOGFILE
)
# add logfile
formatter = logging.Formatter("%(name)s (%(lineno)s): %(message)s")
logfile = logging.FileHandler(LOGFILE)
logfile.setLevel("DEBUG")
logfile.setFormatter(formatter)
使用 Python 2.7
更新
刚刚找到https://stackoverflow.com/a/13733863/1907997,但示例不起作用,终端或文件上没有输出:
if __name__ == "__main__":
logFormatter = "%(name)s (%(lineno)s): %(message)s"
rootLogger = logging.getLogger()
fileHandler = logging.FileHandler(LOGFILE)
fileHandler.setFormatter(logFormatter)
fileHandler.setLevel("DEBUG")
rootLogger.addHandler(fileHandler)
consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logFormatter)
consoleHandler.setLevel("DEBUG")
rootLogger.addHandler(consoleHandler)
较新 Python 版本的信息:
。 由于 Python 3.3 logging.basicConfig() 可以采用关键字参数处理程序 https://stackoverflow.com/a/46098711/1907997
【问题讨论】: