python-3.x - 在 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++)解决了这个问题。
解决方案
对于未来的读者,我解决了这个问题。我没有提到的是我使用 WSL Ubuntu 作为 bash,并且换行编码(显然)与 Windows 不同(类 Unix 的 WSL 使用 LF,而 Windows 使用 CR+LF)。因此,当我在 bash 中打开日志文件时,该文件正确显示,而不是显示单行输出的 Windows。使用不同的文本解码器(notepad++)解决了这个问题。
更新 06/2019:标准 Windows 记事本应用程序现在应该支持两种编码。
推荐阅读
- c++ - 在不区分大小写的 std::map 中无法将 std::wstring 转换为 LPCTSTR
- c# - 如何在 devops 项目中实现 dotnet core 3.0?
- ruby - 运行 Rails 服务器时,asdf 消息“没有为命令 rails 设置版本”
- javascript - React 或 Node 中的用户登录名和角色?
- node.js - 我的更新函数没有返回或在数据库中更新,我的连接是正确的 findbyidandupdate in mongoose
- c# - Dapper SplitOn 重复课程
- javascript - 使用reduce添加Array中的所有元素时的NaN输出
- css - 隐藏在页面内容后面的主导航子菜单 - 不知道为什么
- email - mailgun中的链接重定向
- dom - 用于提取特定 ElementID 的 Chrome 扩展程序