如何在Python中同步日志记录和打印?
下面的代码如何在Python中同步日志记录和打印?,python,logging,printing,Python,Logging,Printing,下面的代码 logging.info('Collecting available features for location ' + source_feature['properties']['key'] + ' and date range [' + start_date + '..' + end_date + ']...') feature_start_time = datetime.now() target_directory = util.target_direct
logging.info('Collecting available features for location ' + source_feature['properties']['key'] + ' and date range [' + start_date + '..' + end_date + ']...')
feature_start_time = datetime.now()
target_directory = util.target_directory(source_feature['properties'])
if target_directory is None:
target_directory = util.target_directory_for_point(point)
try:
for layer in layers:
logging.info('Layer: \'' + layer + '\'')
print('Found dates: ', end='', flush=True)
criterion_date = end_date
while criterion_date is not None:
打印像这样的东西
Found dates: 20170630130831 Collecting available features for location 8404222738792 and date range [2016-04-16..2017-06-30]...
20170630130831 Layer: '1_NATURAL_COL0R'
2017-06-22 2017-05-13 2017-04-23 2017-04-03 2017-03-14 2017-02-22 2017-01-23 2016-11-24 2016-10-05 2016-08-06 2016-07-17 2016-06-27 2016-06-07
i、 e.打印输出与记录器输出交错
如何同步?我不希望日志在他们调用的同一时刻打印,也不希望与打印的日志交叉
更新
使用以下命令初始化日志记录
import logging
logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%Y%m%d%H%M%S', level=logging.INFO)
日志功能主要用于指示发生了某些事件。 打印功能为用户显示物品。 如果您想避免与printf交错,只需将日志放入文本文件即可
logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)
我遇到了同样的问题。默认情况下,
StreamHandler
将所有数据记录到sys.stderr
中。和print
将数据打印到sys.stdout
。所以你的程序是同步的,但是你的终端没有。尝试手动创建StreamHandler
并将stream=sys.stdout
传递给构造函数。之后,您的输出应传递到stdout,所有输出都将同步。您能显示启动记录器的代码吗?您的日志框架应该负责这一点吗?您可以创建一个同时处理打印和日志的函数吗?还是我站错了?@Chris\u Rands请查看我关于日志初始化的更新。@Dims(在每次日志之后)完成这项工作logging.Handler().flush()
?我想要stdout
:)