首页 > 解决方案 > 在 bash 中运行的脚本的日志输出显示为一行

问题描述

我为日志记录脚本编写了示例代码。但是如果我从 bash 运行它,所有日志条目都会出现在同一行。但是,如果我从 IDLE 运行它,它将打印格式正确的多行输出。为什么要这样做?我该如何修补它?这是代码:

#!/usr/bin/env python3
import logging

formatter=logging.Formatter('%(asctime)s \n %(levelname)s %(message)s')
file_handler=logging.FileHandler(path/to/the/file)
logger = logging.getLogger(__name__)

logger.setLevel(logging.INFO)
logger.addHandler(file_handler)

file_handler.setFormatter(formatter)

e = '0123'

def loggegfv(n,c):
    for i in e:
        logger.info("{} Ti avrò mai creato? {}".format(n,c))
        logger.error("Come me {}".format(i))


loggegfv("Checcazzo loggami","Forse funziona")

编辑:对于未来的读者,我解决了这个问题。我没有提到的是我使用 WSL Ubuntu 作为 bash,并且换行符编码(显然)与 Windows 中的不同。因此,当我在 bash 中打开日志文件时,该文件正确显示,而不是显示单行输出的 Windows。使用不同的文本解码器(notepad++)解决了这个问题。

标签: python-3.xlogging

解决方案


对于未来的读者,我解决了这个问题。我没有提到的是我使用 WSL Ubuntu 作为 bash,并且换行编码(显然)与 Windows 不同(类 Unix 的 WSL 使用 LF,而 Windows 使用 CR+LF)。因此,当我在 bash 中打开日志文件时,该文件正确显示,而不是显示单行输出的 Windows。使用不同的文本解码器(notepad++)解决了这个问题。

更新 06/2019:标准 Windows 记事本应用程序现在应该支持两种编码。


推荐阅读