3

我正在使用 Log4Cxx 进行日志记录,并且我想使用 %l 指令来查看日志跟踪(文件名和行号)在哪里。我遇到的问题是我也在使用为编译器提供完整路径名的CMake 。这会导致日志列不再对齐,并且它们现在难以阅读,因为 log4cxx 使用 __FILE__ 预处理器宏来确定该信息。

有谁知道任何解决方法?我想指定例如仅获取“filename.cpp”或使用嵌套参数更好,例如2嵌套将是“module/submodule/filename.cpp”。似乎 CMake 在设计上与完整路径哲学一起工作,所以我认为这可以通过使用我不知道的预处理器指令或以某种方式欺骗 Log4CXX 来解决。

4

1 回答 1

1

看起来您可以尝试使用“ConversionPattern”至少为 log4cxx 的文件名输出指定最大宽度:

http://logging.apache.org/log4cxx/apidocs/classlog4cxx_1_1_pattern_layout.html

或者在此处对 ConversionPattern 进行“在页面上查找”以获取配置文件示例:

http://logging.apache.org/log4cxx/index.html

根据文档,当您指定最大宽度时,您应该获得最右边的字符。也许这与您在这里寻找的内容足够接近。

CMake 总是将完整路径源文件名传递给编译器,以便调试符号引用正确的源文件(一方面)。使用完整路径名更容易保证事情在所有平台上都能正常工作。

于 2011-02-22T16:17:03.027 回答