在Python中使用Tornado多进程进行日志记录

时间:2020-07-28 13:03:36

标签: python python-3.x logging multiprocessing tornado

我正在Tornado服务器中使用python多处理。我正在使用进程池执行器,并且每个进程执行都需要一个输出文件。问题在于文件夹和日志文件是创建的,但未写入。

我在每个过程中都尝试了以下方法

def generate_session_log_config(project_name, scenario_name):
    os.makedirs('logs/' + project_name + '/' + scenario_name, exist_ok=True)
    Paths.Projects.project_log_file_path = 'logs/' + project_name + '/' + scenario_name +       '/execution.log'
    session_handler = logging.FileHandler(Paths.Projects.project_log_file_path)
    Loggers.application.addHandler(session_handler)
    Loggers.application.setLevel(logging.DEBUG)

记录器在配置文件中定义如下

class Loggers:
    home = 'logs'

    activate_execution_session_log = False
    application = logging.getLogger('tornado.application')
    access = logging.getLogger('tornado.access')
    general = logging.getLogger('tornado.general')

    # Add the log message handler to the logger
    os.makedirs(home, exist_ok=True)
    application_handler = RotatingFileHandler(home + "/server.log",    maxBytes=5242880, backupCount=500)

    application.addHandler(application_handler)
    access.addHandler(application_handler)
    general.addHandler(application_handler)

    my_log_format = '%(color)s::: %(levelname)s %(name)s %(asctime)s ::: %(module)s:%(lineno)d in %(funcName)s :::%(end_color)s\
                 \n %(message)s\n'

    # create an instance of tornado formatter, just overriding the 'fmt' arg
    my_log_formatter = LogFormatter(fmt=my_log_format, color=True)

    # get the parent logger of all tornado loggers :
    root_logger = logging.getLogger()

    # set your format to root_logger
    application_streamhandler = application.handlers[0]
    application_streamhandler.setFormatter(my_log_formatter)

0 个答案:

没有答案