Boost.Log: nome do arquivo de suporte e número da linha

Estou tentando fazer minha equipe se afastarlog4cxx e tente usarBoost.Log v2 em vez de. Nossa atualpadrão log4cxx é bastante simples:

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);

No entanto, não consegui encontrar uma solução para suportar a impressão de nome de arquivo e número de linha. Eu encontrei até agora umpost antigo, mas não há uma solução clara (nenhuma solução aceita). Eu olhei para usar aquelesBOOST_LOG_NAMED_SCOPE mas eles são muito feios, pois tornam impossível imprimir o número de linha correto quando vários deles são usados na mesma função.

Eu também encontrei uma solução direta mais simples,aqui. Mas isso também parece feio, pois imprimirá o caminho completo, em vez de apenas o nome da base (não é configurável). Portanto, o caminho completo e o número da linha são sempre impressos em um local fixo (antes deexpr::smessage)

Eu encontrei também issopostar, que parece uma solução antiga.

E, finalmente, a solução mais promissora que encontrei foiaqui. No entanto, nem sequer compila para mim.

Portanto, minha pergunta é simples: como posso usar o Boost.Log v2 para imprimir o nome do arquivo (não o caminho completo) e o número da linha com o mínimoflexibilidade do formatador (nenhuma solução comMACRO e__FILE__ / __LINE__ aceito, por favor). Eu apreciaria uma solução que não envolvaBOOST_LOG_NAMED_SCOPE, como descritoaqui:

Se, em vez disso, você deseja ver os números de linha de registros de log específicos, a melhor maneira é definir uma macro personalizada que você usará para gravar logs. Nessa macro, você pode adicionar o nome do arquivo e o número da linha como atributos ao registro (você pode usar manipuladores para isso). Observe que, nesse caso, você não poderá usar esses atributos nos filtros, mas provavelmente não precisará disso.

questionAnswers(2)

yourAnswerToTheQuestion