我像这样设置日志:
import logging
log_filename = 'foo'
logging.basicConfig(level=logging.WARNING,
format='%(asctime)s == %(levelname)-8s == %(message)s',
datefmt='%m/%d/%Y %I:%M:%S %p',
filename=log_filename,
)
(仅供参考:我还定义了一个处理程序,它将CRITICAL消息或更高级别的消息写入sys.stderr,但我非常积极,这并不会导致我的问题。如果您认为是,请告诉我,我&# 39;也会发布该代码。)
这种设置在很大程度上运作良好。但是,当我尝试记录以下内容时遇到了问题:
logging.critical(" DATE TIME BALANCE")
我希望将字符串记录为单行。 (值得注意的是,我写入std.out的处理程序将字符串表示为终端中的单行。)而是,这是日志文件中的结果:
06/04/2017 11:23:51 PM == CRITICAL == DATE
TIME BALANCE
由于某种原因,记录器似乎将字符串拆分为不同的行。问题不是由字符串的长度引起的,因为我记录了更长的字符串,显示为单行。因此,在我看来,它必须与上述字符串的内容相关(其中包括空格和制表符的混合,在" DATE"," TIME"和&#34之间; BALANCE&#34)。有谁知道造成这种行为的原因是什么?
**编辑#1:出于谨慎的考虑,我添加了#34;导入日志记录"清楚我正在使用的模块。 (我还修正了一些拼写错误。)
**编辑#2:在对TessellatingHeckler的请求进行一些实验后,我很尴尬地说这个问题根本不是字符串的内容。我觉得这个问题很愚蠢。似乎以下几行代码实际上导致了这个问题:
import pandas as pd
data = pd.read_csv('bar.csv')
for index, row in data.iterrows():
logging.critical(str(" " + row['Date']) + " " + str(row['Time']) + " " + str(row['Balance']))
我使用上面的代码来记录csv文件的内容。与上面发布的第一个日志类似,上面的代码导致字符串被分成两行,如下所示:
06/05/2017 12:23:45 AM == CRITICAL == 6/3/17
20:14:19 789.35
奇怪的是,在发生这种情况并将其作为日志文件的一部分之后,即使我删除了有问题的csv-writing部分代码并仅运行以下内容:
logging.critical(" DATE TIME BALANCE")
我仍然得到:
06/04/2017 11:23:51 PM == CRITICAL == DATE
TIME BALANCE
在日志文件中。相比之下,如果我运行相同的代码,除了登录到新的日志文件(没有有问题的csv编写代码),我得到一行,就像我原先预期/期望的那样:
06/04/2017 11:23:51 PM == CRITICAL == DATE TIME BALANCE
有谁知道可能导致这种奇怪行为的原因?
**编辑3:我添加了#34;导入pandas为pd"明确我正在使用熊猫模块。