Nel mio programma Python Ho il seguente codice:Come specificare in YAML per creare sempre il file di registro nella cartella del progetto usando dictConfig?
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)
...
e questo è il mio logging.yml file di configurazione:
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
è che si crea il problema del file bot.log dove il programma è lanciato. Voglio che venga sempre creato nella cartella del progetto, cioè nella stessa cartella del mio programma Python.
Per un esempio, l'avvio del programma con ./bot.py
creerebbe il file di registro nella stessa cartella. Ma lanciandolo con python3 path/bot.py
creerebbe il file di log un livello sopra il programma Python nella gerarchia dei file.
Come dovrei scrivere il nome file nel file di configurazione per risolvere questo? O devo scrivere un gestore personalizzato? Se é cosi, come? O questo non è possibile risolvere usando dictConfig?
Ho aggiornato la mia risposta in risposta al tuo commento. –