Boost.Log: поддержка имени файла и номера строки

Я пытаюсь заставить свою команду уйти изlog4cxx и попробуйте использоватьBoost.Log v2 вместо. Наш текущийшаблон log4cxx довольно просто:

log4cxx::helpers::Properties prop;
prop.setProperty("log4j.rootLogger","DEBUG, A1");
prop.setProperty("log4j.appender.A1","org.apache.log4j.ConsoleAppender");
prop.setProperty("log4j.appender.A1.layout","org.apache.log4j.PatternLayout");
prop.setProperty("log4j.appender.A1.layout.ConversionPattern","%d{ABSOLUTE} %-5p [%c] %m%n");
log4cxx::PropertyConfigurator::configure(prop);

Однако мне не удалось найти решение для поддержки печати имени файла и номера строки. Я нашел до сих порстарый пост, но нет четкого решения (нет принятого решения). Я смотрел на использование этихBOOST_LOG_NAMED_SCOPE но они чувствуют себя очень некрасиво, поскольку невозможно напечатать правильный номер строки, когда несколько из них используются в одной и той же функции.

Я также нашел более простое прямое решение,Вот, Но это также кажется уродливым, поскольку он напечатает полный путь, а не просто базовое имя (оно не настраивается). Таким образом, полный путь и номер строки всегда печатаются в фиксированном месте (доexpr::smessage).

Я также нашел этосообщение, который выглядит как старое решение.

И, наконец, самое многообещающее решение, которое я нашел, былоВот, Однако это даже не компилируется для меня.

Поэтому мой вопрос прост: как я могу использовать Boost.Log v2, чтобы напечатать имя файла (не полный путь) и номер строки с минимальнымгибкость форматирования (нет решения сMACRO а также__FILE__ / __LINE__ принято, пожалуйста). Буду признателен за решение, которое не включаетBOOST_LOG_NAMED_SCOPE, как описаноВот:

Если вместо этого вы хотите увидеть номера строк определенных записей журнала, то лучший способ - определить пользовательский макрос, который вы будете использовать для записи журналов. В этом макросе вы можете добавить имя файла и номер строки в качестве атрибутов к записи (для этого вы можете использовать манипуляторы). Обратите внимание, что в этом случае вы не сможете использовать эти атрибуты в фильтрах, но вам, вероятно, это не нужно.

Ответы на вопрос(2)

Ваш ответ на вопрос