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
Flask Python日志记录到多个文件_Flask_Logging_Python 3.7_Flask Admin_Logfile - Fatal编程技术网

Flask Python日志记录到多个文件

Flask Python日志记录到多个文件,flask,logging,python-3.7,flask-admin,logfile,Flask,Logging,Python 3.7,Flask Admin,Logfile,我有一个flask应用程序,它从2个不同的文件调用2个函数。 我已经设置了两个不同文件的日志记录。 但是,日志记录似乎总是附加到一个文件中(无论首先到达的是哪个端点) 下面是文件的结构- app.py file1.py file2.py 当我运行单独的python文件-file1.py/file2.py时,这个日志记录得很好(单独) 但是当我运行API时,日志只附加到一个文件中 我在日志记录方面做错了什么?如何修复它?将其添加到logger\u setup.py import log

我有一个flask应用程序,它从2个不同的文件调用2个函数。 我已经设置了两个不同文件的日志记录。 但是,日志记录似乎总是附加到一个文件中(无论首先到达的是哪个端点)

下面是文件的结构-

  • app.py
  • file1.py
  • file2.py
当我运行单独的python文件-file1.py/file2.py时,这个日志记录得很好(单独) 但是当我运行API时,日志只附加到一个文件中


我在日志记录方面做错了什么?如何修复它?

将其添加到logger\u setup.py

import logging
from pathlib import Path
formatter = logging.Formatter('%(asctime)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s')


def setup_logger( name, log_file, level=logging.DEBUG): 

    my_file = Path(log_file)
    # print("check the if condition for the file")
    # print(my_file.is_file())

    if my_file.is_file():
        #print(logging.getLogger(name).hasHandlers())
        # if logging.getLogger(name).hasHandlers():
        if len(logging.getLogger(name).handlers)>0:
            return logging.getLogger(name)
        else:
            handler = logging.FileHandler(log_file, mode='a')        
            handler.setFormatter(formatter)
            logger = logging.getLogger(name)
            logger.setLevel(level)
            logger.addHandler(handler)
            logger.propagate = False
            return logger
    else:
        handler = logging.FileHandler(log_file, mode='a')        
        handler.setFormatter(formatter)

        logger = logging.getLogger(name)
        logger.setLevel(level)
        logger.addHandler(handler)
        logger.propagate = False
        return logger
在file1和file2中,您可以使用如下内容

import logging
import logger_setup

def fun1():
    log_location = 'logs'
    logger = logger_setup.setup_logger(__name__,log_location+__name__+'.log')
    logger.info("Logging function 1 details to to file1")
    return "1"
def fun2:
    logging.basicConfig(filename = "file2.log")
    logging.info("Logging function 2 details to to file2")
    return bar
import logging
from pathlib import Path
formatter = logging.Formatter('%(asctime)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s')


def setup_logger( name, log_file, level=logging.DEBUG): 

    my_file = Path(log_file)
    # print("check the if condition for the file")
    # print(my_file.is_file())

    if my_file.is_file():
        #print(logging.getLogger(name).hasHandlers())
        # if logging.getLogger(name).hasHandlers():
        if len(logging.getLogger(name).handlers)>0:
            return logging.getLogger(name)
        else:
            handler = logging.FileHandler(log_file, mode='a')        
            handler.setFormatter(formatter)
            logger = logging.getLogger(name)
            logger.setLevel(level)
            logger.addHandler(handler)
            logger.propagate = False
            return logger
    else:
        handler = logging.FileHandler(log_file, mode='a')        
        handler.setFormatter(formatter)

        logger = logging.getLogger(name)
        logger.setLevel(level)
        logger.addHandler(handler)
        logger.propagate = False
        return logger
import logging
import logger_setup

def fun1():
    log_location = 'logs'
    logger = logger_setup.setup_logger(__name__,log_location+__name__+'.log')
    logger.info("Logging function 1 details to to file1")
    return "1"