Я использую модуль регистрации Python. Я инициализировал это как:
import logging
logger = logging.getLogger(__name__)
в каждом из моих модулей. Затем в основном файле:
logging.basicConfig(level=logging.INFO,filename="log.txt")
Теперь в приложении я также использую WSGIServer от gevent. Инициализатор принимает аргумент журнала, где я могу добавить экземпляр регистратора. Поскольку это HTTP-сервер, он очень многословен.
Я бы хотел записывать все обычные журналы моего приложения в «log.txt», а журналы WSGIServer - в «http-log.txt».
Я пробовал это:
logging.basicConfig(level=logging.INFO,filename="log.txt")
logger = logging.getLogger(__name__)
httpLogger = logging.getLogger("HTTP")
httpLogger.addHandler(logging.FileHandler("http-log.txt"))
httpLogger.addFilter(logging.Filter("HTTP"))
http_server = WSGIServer(('0.0.0.0', int(config['ApiPort'])), app, log=httpLogger)
Это регистрирует все HTTP-сообщения в http-log.txt, но также и в главный регистратор.
Как я могу отправлять все сообщения, кроме HTTP, в регистратор по умолчанию (log.txt), а сообщения HTTP только в http-log.txt?
РЕДАКТИРОВАТЬ: Поскольку люди быстро пытаются указать, что это Регистрация двух файлов с разными настройками имеет ответ, просим прочитать связанный ответ, и вы увидите, что они не используют basicConfig
, но скорее инициализируйте каждый регистратор отдельно. Это не то, как я использую модуль регистрации.