Как указать в YAML, чтобы всегда создавать файл журнала в папке проекта с помощью dictConfig?
В моей программе Python у меня есть следующий код:
def main():
# The file's path
path = os.path.dirname(os.path.realpath(__file__))
...
# Config file relative to this file
loggingConf = open('{0}/configs/logging.yml'.format(path), 'r')
logging.config.dictConfig(yaml.load(loggingConf))
loggingConf.close()
logger = logging.getLogger(LOGGER)
...
и это мой файл конфигурации logging.yml:
version: 1
formatters:
default:
format: '%(asctime)s %(levelname)s %(name)s %(message)s'
handlers:
console:
class: logging.StreamHandler
level: DEBUG
formatter: default
stream: ext://sys.stdout
file:
class : logging.FileHandler
formatter: default
filename: bot.log
loggers:
cloaked_chatter:
level: DEBUG
handlers: [console, file]
propagate: no
Проблема в том, что файл bot.log создается там, где запускается программа. Я хочу, чтобы это всегда создавалось в проекте »папка s, т.е. в той же папке, что и моя программа Python.
Например, запуск программы с./bot.py
создаст файл журнала в той же папке. Но запустить его сpython3 path/bot.py
создаст файл журнала на уровень выше программы Python в иерархии файлов.
Как я должен написать имя файла в файле конфигурации, чтобы решить эту проблему? Или мне нужно написать собственный обработчик? Если так, то как? Или это невозможно решить с помощью dictConfig?