как записать журнал в форматированные папки с помощью Boost.Log?

#logging #boost #boost-log

#ведение журнала #повышение #boost-log

Вопрос:

Повышение.Журнал поддерживает настраиваемое имя файла, например %Y_%m_%d_sample_%N.log. Я хочу поместить их в разные папки, скажем, «%Y_% m_% d / sample_%N.log», но при этом была создана папка с именем «%Y_% m_%d», в то время как я ожидаю «2011_05_02» (для даты, которую я пытаюсь), вы знаете, как получить то, что я хочу? Спасибо

Ответ №1:

Он не может этого сделать, поскольку для этого требуется создание каталогов. В принципе, вы не можете динамически создавать файл в несуществующем каталоге на уровне операционной системы. Вот почему он анализирует настроенное вами имя и повторно использует динамический шаблон только для имени файла, а не для каталога. Что вы можете сделать вместо этого, вероятно, переместить эти файлы в соответствующие каталоги, используя несколько команд оболочки из crontab.

Комментарии:

1. какая жалость, я думаю, это осуществимо. Поскольку они могут создавать файл на лету, они также должны иметь возможность создавать папки.

2. @JQ: Это все еще можно реализовать — с помощью пользовательского бэкэнда (что не так сложно реализовать, за исключением того, что вам, вероятно, придется переопределить все поведение при просмотре журнала). Возможно, вы даже сможете взломать file_collector, чтобы файлы, по крайней мере, были собраны в разные каталоги (в зависимости от их даты) после того, как вы закончите с ними. Однако самым простым (и уродливым) способом было бы просто скопировать Boost. Создайте собственный серверный интерфейс журнала и измените его, чтобы создавать каталоги «на лету» на основе шаблона имени файла.