Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3.x Python3.5流式输出到我编写的同一个日志文件_Python 3.x_Logging_Streaming - Fatal编程技术网

Python 3.x Python3.5流式输出到我编写的同一个日志文件

Python 3.x Python3.5流式输出到我编写的同一个日志文件,python-3.x,logging,streaming,Python 3.x,Logging,Streaming,我是python新手,正在尝试解决一个日志问题。我正在尝试将stdoout和stderr流式传输到日志文件,在使用日志时,我也会手动将条目写入日志文件 另外,当我手动记录条目时,我在控制台上得到重复条目,但在实际日志文件中只有一个条目 import os import datetime from subprocess import call import sys import logging currDir = os.path.dirname(os.path.abspath(__file_

我是python新手,正在尝试解决一个日志问题。我正在尝试将stdoout和stderr流式传输到日志文件,在使用日志时,我也会手动将条目写入日志文件

另外,当我手动记录条目时,我在控制台上得到重复条目,但在实际日志文件中只有一个条目

import os 
import datetime
from subprocess import call
import sys
import logging


currDir = os.path.dirname(os.path.abspath(__file__))
today_key = datetime.datetime.now().strftime("%Y%m%d%H%M")
log_file = os.path.join(currDir, "logs", 'stream_'+today_key)+".log"
log_formatter = logging.Formatter('%(asctime)s — %(name)s — %(levelname)s — %(funcName)s:%(lineno)d — %(message)s')
pStart = datetime.datetime.now()

def get_stdout_handler():
    stdout_handler = logging.StreamHandler(sys.stdout)
    stdout_handler.setFormatter(log_formatter)
    return stdout_handler

def get_stderr_handler():
    stderr_handler = logging.StreamHandler(sys.stderr)
    stderr_handler.setFormatter(log_formatter)
    return stderr_handler

def get_file_handler():
    file_handler = logging.FileHandler(log_file, 'a')
    file_handler.setFormatter(log_formatter)
    return file_handler

def get_logger(logger_name):
    log = logging.getLogger(logger_name)
    log.setLevel(logging.DEBUG) 
    log.addHandler(get_stdout_handler())
    log.addHandler(get_stderr_handler())
    log.addHandler(get_file_handler())
    log.propagate = False
    log.hasHandlers = True

    return log

def restore_db():

    call(["ping", "google.com"])


logger = get_logger(__name__)

if __name__ == '__main__':
    logger.info('-----------------------------------')
    logger.info('process start')
    restore_db()
    logger.info('process end')
    logger.info('total processing time (%s)',(datetime.datetime.now() - pStart))
    logger.info('-----------------------------------')

来自ping的流根本不会出现在日志文件中