Как изменить разделитель путей модуля журналирования?Python

Программы на Python
Anonymous
Как изменить разделитель путей модуля журналирования?

Сообщение Anonymous »

Я хочу использовать модуль регистрации в Python для регистрации в пользовательском формате JSON, и одной из переменных, которые я хочу регистрировать, является путь.
Похоже, что модуль журналирования использует обратную косую черту(\) для разделения каталогов, что приводит к ошибке «Недопустимый escape-символ» в JSON.
первый вопрос:
Это разделитель зависит от ОС? Сейчас я использую Windows 11, но код необходимо развернуть в ОС на базе Unix.
второй вопрос:
Как я могу изменить этот разделитель? Я думаю, если бы я мог изменить это на одну косую черту(/) или двойную обратную косую черту(\\), это может решить проблему.
Я попробовал приведенный ниже пример.
config.json:
{
"version": 1,
"disable_existing_loggers": true,
"formatters": {
"standard": {
"format": "{\"timestamp\":%(created)f,\"time\":\"%(asctime)s\",\"path\":\"%(pathname)s\",\"file\":\"%(filename)s\",\"line\":%(lineno)d,\"level\":\"%(levelname)s\",\"text\":\"%(message)s\"}",
"datefmt": "%Y/%m/%d-%H:%M:%S"
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"formatter": "standard",
"level": "DEBUG",
"stream": "ext://sys.stdout"
}
},
"loggers": {
"": {
"handlers": [
"console"
],
"level": "DEBUG",
"propagate": false
}
}
}

example.py:
import logging
import json
import logging.config

with open("./config.json", "r", encoding="UTF_8") as file:
config = json.load(file)
logging.config.dictConfig(config)
logger = logging.getLogger(__name__)
logger.info("This is an info log.")


Вывод:
{"timestamp":1726603464.416349,"time":"2024/09/17-23:34:24","path":"d:\python\project\example.py","file":"example.py","line":9,"level":"INFO","text":"This is an info log."}

Должно быть:
{"timestamp":1726603464.416349,"time":"2024/09/17-23:34:24","path":""d:\\python\\project\\example.py","file":"example.py","line":9,"level":"INFO","text":"This is an info log."}

Или
{"timestamp":1726603464.416349,"time":"2024/09/17-23:34:24","path":"d:/python/project/example.py","file":"example.py","line":9,"level":"INFO","text":"This is an info log."}


Подробнее здесь: https://stackoverflow.com/questions/789 ... ing-module

Вернуться в «Python»