Как сохранить файл журнала в подкаталог, используя конфигурацию dictConfig? - PullRequest
0 голосов
/ 02 декабря 2018

В моем приложении Python 3.6 есть следующая конфигурация:

config = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {
        "standard": {
            "format": ("[%(asctime)s] %(levelname)s - %(threadName)s - %(name)s - %(message)s")
        },
    },
    "handlers": {
        "default": {
            "class": "logging.StreamHandler",
            "formatter": "standard",
            "level": DEFAULT_LOG_LEVEL,
        },
        "fh": {
            "class": "logging.handlers.RotatingFileHandler",
            "formatter": "standard",
            "level": FILE_LOG_LEVEL,
            "filename": "myfile.log",
            "maxBytes": 1024*1000,  # 1 MB
            "backupCount": 20
        }
    },
    "loggers": {
        '': {
            "handlers": ["default", "fh"],
            'level': DEFAULT_LOG_LEVEL,
            'propagate': True
        }
    }
}

В настоящее время это работает;однако он сохраняет все файлы .log в текущем рабочем каталоге (где исполняемый файл находится в Windows).

Я хотел бы сохранить его в каталоге «logs», который находится втого же уровня, что и сам исполняемый файл, уже существующий.

Я думал об изменении свойства «filename» в конфигурации журнала, но я не уверен, как это повлияет на мои файлы сценариев, которые используют:

logger = logging.getLogger(__name__)

Нужно ли что-то изменить, чтобы заставить его регистрироваться в правильном месте?

Желаемая структура:

  • app.exe
  • logs
    • myfile.log

1 Ответ

0 голосов
/ 02 декабря 2018

Моя первоначальная мысль, кажется, делает то, что мне нужно после тестирования.Я просто помещаю имя каталога перед именем файла в значении свойства config "filename".Никаких изменений не потребовалось для логгера скрипта.

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