我设置日志如下: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,
)
(仅供参考:我还定义了一个处理程序,用于向系统标准但我很肯定这不是我的问题。如果你认为是这样的话,请告诉我,我也会发布代码。)
这种设置在很大程度上起到了很好的作用。但是,当我尝试记录以下内容时遇到问题:
^{pr2}$
我希望字符串被记录为一行。(特别是,我的处理程序标准输出将字符串表示为终端中的单行。)相反,这是日志文件中的结果:06/04/2017 11:23:51 PM == CRITICAL == DATE
TIME BALANCE
由于某种原因,记录器似乎正在将字符串拆分为不同的行。这个问题不是由字符串的长度引起的,因为我记录的字符串较长,显示为一行。因此,在我看来,它必须与上述字符串的内容相关(包括“日期”、“时间”和“余额”之间的空格和制表符的混合)。有人知道是什么导致了这种行为吗?在
**Edit#1:出于谨慎起见,我添加了“import logging”以明确我正在使用的模块。(我还修复了一些拼写错误。)
**Edit#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写入部分,也只运行以下代码:
^{pr2}$
我仍然得到:06/04/2017 11:23:51 PM == CRITICAL == DATE
TIME BALANCE
在日志文件中。相比之下,如果我运行相同的代码,除了log到一个新的日志文件(没有有问题的csv写入代码),我会得到一行我最初预期/想要的:06/04/2017 11:23:51 PM == CRITICAL == DATE TIME BALANCE
有人知道是什么导致了这种奇怪的行为吗?在
**编辑3:我添加了“import pandas as pd”以明确我使用的是pandas模块。在