Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中同步日志记录和打印?_Python_Logging_Printing - Fatal编程技术网

如何在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
:)