使用CMake时的Log4cxx和完整文件路径

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

有人知道任何解决方法吗?例如,我想指定仅获取“filename.cpp”,或者更好的是使用嵌套参数,例如2个嵌套将是“module/submodule/filename.cpp”。看起来,按设计,CMake遵循完整路径的哲学,因此我认为可以通过使用未知的预处理器指令或以某种方式欺骗Log4CXX来解决这个问题。

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始终将完整路径源文件名传递给编译器,以便调试符号引用正确的源文件(其中之一)。使用完整路径名可以更轻松地保证所有平台上的所有内容都正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接