2015-07-28 2 views
0

Я пытаюсь настроить регистратор, чтобы ловить только сообщения уровня ERROR, но мой регистратор всегда, кажется, пишет INFO:cherrypy.access сообщения в мой файл журнала, чего я не хочу. Я попытался установить глобальный log.error_file и использовать стандартный протокол регистрации python logging.basicConfig(filename='error.log', filemode='w', level=logging.ERROR), но даже если я укажу пороговое значение для сообщений уровня ERROR, я все равно получаю эти сообщения уровня INFO, записанные в файл журнала. Есть ли способ предотвратить это?Предотвращение доступа к вишневым червям

+0

Не очень удобно настраивать журналы CherryPy с голым «протоколированием». Убедитесь, что вы понимаете конфигурацию CherryPy и ее среду (см. [Этот вопрос] (http://stackoverflow.com/q/26288820/2072035)). Если вы упорствуете, [эта статья] (http://rhodesmill.org/brandon/2012/logging_tree/) имеет хорошее объяснение дерева журнала «CherryPy» и способов его расширения. – saaj

ответ

0

Похоже, что журналы уровня INFO подходят для cherrypy.access. Согласно documentation -

Вы должны установить их как на глобальном уровне, так и на каждое приложение (см. Следующий), но в целом не оба.

log.screen: Установите для этого параметра значение Истина, чтобы на «выходы» выводились сообщения «ошибка» и «доступ». log.access_file: Установите это абсолютное имя файла, в котором вы хотите написать «доступ». log.error_file: Установите это абсолютное имя файла, в котором вы хотите написать сообщения об ошибке.

Вы также должны попробовать установить log.access_file (аналогично log.error_file). Или же вы можете добавить обработчик для этого, например, -

from logging import handlers 
fname = getattr(log, "rot_access_file", "access.log") #The log for access messsages. 
h = handlers.TimedRotatingFileHandler(fname, when='midnight') 
h.setLevel(logging.DEBUG) 
h.setFormatter(_cplogging.logfmt) 
log.access_file = "" 
log.access_log.addHandler(h) 
0

можно отключить сообщения доступа, установив мой собственный:

logging.basicConfig(filename='error.log', filemode='w', level=logging.ERROR)

, а затем установка:

cherrypy.log.access_log.propagate = False