В доступе отказано при использовании TimedRotatingFileHandler - PullRequest
0 голосов
/ 15 января 2019

Я создал REST API, используя для этого Flask-RESTFUL, и мне нужно сгенерировать файлы журнала для этого

Я получаю сообщение об ошибке при повторном запуске API. это происходит при входе в файл.

 PermissionError: [WinError 32] The process cannot access the file because it is being used by another process:

Чтобы избежать этой ошибки, мне пришлось удалить файл, но такая же ошибка возникает, когда другой компьютер пытается получить доступ к API.

У меня есть код config.py, инициализирующий конфигурацию приложения моего модуля логирования.

        import os
        from datetime import date
        import logging
        import logging.handlers as handlers

        class BaseConfig(object):
            DEBUG = False
            TESTING = False
            LOGGING_FORMAT = '%(asctime)s - %(levelname)s - %(message)s'
            #LOGGING_LOCATION = 'logs/bookshelf.log'


        class DevelopmentConfig(BaseConfig):
            DEBUG = True
            TESTING = True



        class TestingConfig(BaseConfig):
            DEBUG = False
            TESTING = True

        class ProductionConfig(BaseConfig):
            DEBUG = False
            TESTING = False



        config = {
            "development": "config.DevelopmentConfig",
            "testing": "config.TestingConfig",
            "default": "config.DevelopmentConfig",
            "production": "config.ProductionConfig"
        }


        def configure_app(app):

            #ENVRIONMENT CONFIGURATION
            config_name = os.getenv('FLASK_CONFIGURATION', 'default')
            #config_name = os.getenv('FLASK_CONFIGURATION', 'production') #UNCOMMENT IF PROD
            app.config.from_object(config[config_name]) # object-based default configuration
            #handler = logging.FileHandler(app.config['LOGGING_LOCATION'])
            handler = handlers.TimedRotatingFileHandler('logs/'+str(date.today())+'-mipay-error.log', when='M', interval=1)
            formatter = logging.Formatter(app.config['LOGGING_FORMAT'])
            #handler.setLevel(app.config['LOGGING_LEVEL'])
            handler.setFormatter(formatter)
            app.logger.addHandler(handler)
            #LOGGING CONFIGURATION

Я прочитал, что необходимо закрыть файл, но я не знаю, когда и как закрыть файл журнала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...