Jak określić w YAML, aby zawsze tworzyć plik dziennika w folderze projektu za pomocą dictConfig?
W moim programie Python mam następujący kod:
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)
...
a to jest mój plik konfiguracyjny 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
Problem polega na tym, że plik bot.log jest tworzony w miejscu uruchomienia programu. Chcę, aby zawsze był tworzony w folderze projektu, tj. W tym samym folderze, co mój program w Pythonie.
Na przykład uruchomienie programu za pomocą./bot.py
utworzy plik dziennika w tym samym folderze. Ale uruchomienie gopython3 path/bot.py
utworzy plik dziennika na poziomie powyżej programu Python w hierarchii plików.
Jak zapisać nazwę pliku w pliku konfiguracyjnym, aby rozwiązać ten problem? Czy muszę napisać niestandardowy program obsługi? Jeśli tak to jak? Czy to nie jest możliwe do rozwiązania za pomocą dictConfig?