python - Python 日志在写入文件时添加了额外的换行符(但不是标准输出)
问题描述
我在 Windows 7 上设置了一个 Python (3.6.5) 记录器,以同时写入文件和标准输出,如下所示:
def __filehandler() -> logging.FileHandler:
filehandler = logging.FileHandler(LOGFILE, encoding="cp932")
filehandler.setLevel(logging.DEBUG)
fformatter = logging.Formatter("%(asctime)s: %(name)-13s: %(levelname)-8s: %(message)s")
filehandler.setFormatter(fformatter)
return filehandler
def __streamhandler() -> logging.StreamHandler:
streamhandler = logging.StreamHandler()
streamhandler.setLevel(logging.DEBUG)
sformatter = logging.Formatter("%(name)-13s: %(levelname)-8s: %(message)s")
streamhandler.setFormatter(sformatter)
return streamhandler
def getlogger(calling_module_name: str) -> logging.Logger:
logger = logging.getLogger(calling_module_name)
logger.setLevel(logging.DEBUG)
logger.addHandler(__filehandler())
logger.addHandler(__streamhandler())
return logger
然后使用它调用logger.info(some_text)
标准输出看起来像预期的那样:
mymodule: INFO : Reading file #1/2, line #42/164: /****************************************************************************/
mymodule: INFO : Writing file #1/2, line #42/164: /****************************************************************************/
mymodule: INFO : Reading file #1/2, line #43/164:
mymodule: INFO : Writing file #1/2, line #43/164:
mymodule: INFO : Reading file #1/2, line #44/164:
mymodule: INFO : Writing file #1/2, line #44/164:
但在相应的文件中,还有其他未说明的换行符:
2019-05-17 12:21:11,824: mymodule: INFO : Reading file #1/2, line #42/164: /****************************************************************************/
2019-05-17 12:21:11,824: mymodule: INFO : Writing file #1/2, line #42/164: /****************************************************************************/
2019-05-17 12:21:11,824: mymodule: INFO : Reading file #1/2, line #43/164:
2019-05-17 12:21:11,824: mymodule: INFO : Writing file #1/2, line #43/164:
2019-05-17 12:21:11,824: mymodule: INFO : Reading file #1/2, line #44/164:
2019-05-17 12:21:11,839: mymodule: INFO : Writing file #1/2, line #44/164:
更改filehandler = logging.FileHandler(LOGFILE, encoding="cp932")
为filehandler = logging.FileHandler(LOGFILE)
没有效果。
添加的换行符不利于日志的清晰度,并且会不必要地扩大其大小。有什么想法吗?
解决方案
推荐阅读
- c# - 跨大型解决方案统一间接 nuget 包依赖项
- javascript - 如何使用 jQuery 打开和关闭事件侦听器或元素?
- c# - agg 管道将值分配给 $$Maincode 内置变量时出错
- java - Java,将 BiFunction 用于带有 parm 的 getter
- reactjs - React Mui Appbar 主题
- javascript - 如何绕过 ESLint 调用 Typescript 中未定义的 Geolocation 接口?
- python - 获取多个推文 ID 和用户名的所有回复
- python - Tesseract OCR 无法识别简单的数学符号
- php - 使用 PHP end() 将数组转换为字符串
- django - 在 django 我想从视图中更改日期