(Переписано несколько последующих модификаций кода на моем конце плюс ответы, полученные до сих пор. Спасибо Эндрю за образец кода, который дал мне отправную точку для демонстрации того, что пользовательский журнал ошибок работает, а затем как я могу его сломать!)Как получить пользовательскую регистрацию в CherryPy?
Я пытаюсь получить пользовательский журнал, работающий в CherryPy. Я также хотел бы иметь поворот файла журнала, поэтому я выполнил инструкции в документации, чтобы заменить обработчики журналов.
script_dir устанавливается ранее в моем коде в каталог, в котором работает скрипт.
cherrypy.config.update({'server.socket_host': '0.0.0.0',
'server.socket_port': 1234,
'tools.staticdir.on': True,
'tools.staticdir.dir': script_dir,
'log.access_file': "access1.log",
'log.error_file': "error1.log",
'log.screen': False,
'tools.sessions.on': True,
})
config = {'/':
{
'tools.staticdir.on': True,
'tools.staticdir.dir': script_dir,
'log.access_file': "access2.log",
'log.error_file': "error2.log",
'log.screen': False,
'tools.sessions.on': True,
}
}
application = cherrypy.tree.mount(MyApp(), "/", config)
log = application.log
# Make a new RotatingFileHandler for the error log.
fname = getattr(log, "rot_error_file", "error.log")
h = handlers.TimedRotatingFileHandler(fname, when='midnight')
h.setLevel(logging.DEBUG)
h.setFormatter(_cplogging.logfmt)
log.error_file = ""
log.error_log.addHandler(h)
# Make a new RotatingFileHandler for the access log.
fname = getattr(log, "rot_access_file", "access.log")
h = handlers.TimedRotatingFileHandler(fname, when='midnight')
h.setLevel(logging.DEBUG)
h.setFormatter(_cplogging.logfmt)
log.access_file = ""
log.access_log.addHandler(h)
С скрипт работает, запись происходит следующим образом:
- каротаж Стандартный доступ идет к ОБА access1.log (определяется на глобальном уровне) и access.log (определяется на уровне приложений)
- Ошибка при входе идет только error1.log (определяется на глобальном уровне)
- Ничто не вошли в * 2.log (как и ожидалось)
Итак, похоже, что у CherryPy возникла проблема с регистрацией ошибок в конфигурации приложения. Как правило, это меня не волнует, за исключением того, что я хочу использовать обработчик файлов с вращающимся журналом, но я не знаю, как изменить сеансы ведения журнала на глобальном уровне, как это было сделано для уровня приложения.
Спасибо.
Это работает нормально для меня. Произошли ли ошибки CherryPy? – jwalker
Да, они делают. Я получаю трассировки стека, когда происходят исключения, а также более подробный список значений заголовка. –
Обновлен мой ответ с проверенным примером. –