Я использую библиотеку журналов Boost 1.63.0 в приложении. Для инициализации различных файлов журналов я использую метод boost::log::init_from_stream(...)
для настройки приемников из INI-файла конфигурации.
Первоначально у меня была проблема с поведением вращения файлов в журнале повышения. Файл создавался в текущем рабочем каталоге, а затем перемещался в «целевой» каталог при запуске ротации файлов или закрытии приложения. Желаемым поведением было создание файла непосредственно в «целевом» каталоге. Я исправил это с помощью этого сообщения: boost::log add_file_log не пишется, если приложение закрывается с помощью CTRL_CLOSE_EVENT
Короче говоря, он говорит предоставить ключевому слову «FileName» полную информацию о пути, а не только имя. Это работает, но мне было интересно, есть ли хороший способ «очистить» файл конфигурации.
Например, файл INI в настоящее время требует, чтобы вы указали как ключевые слова «Target», так и «FileName» как таковые:
Target="C:\\ProgramData\\MyApplication\\Logs"
FileName="C:\\ProgramData\\MyApplication\\Logs\\AppLog_%N.log"
Было бы очень хорошо иметь возможность указать только каталог «Цель», а затем использовать эту переменную в определении переменной «Имя файла». Это сделало бы любые будущие изменения намного проще, поскольку нужно было бы изменить только одну вещь. Что-то типа:
#Define Target Directory for file rotation
Target="C:\\ProgramData\\MyApplication\\Logs"
#Define File Name pattern
FileName="%Target%\\AppLog_%N.log"
--- OR ---
FileName="$(Target)\\AppLog_%N.log"
Возможно ли это сделать?