我正在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)