我正在使用Log4Cxx进行日志记录,我想使用%l指令来查看日志跟踪的位置(文件名和行号)。我遇到的问题是我也在使用提供full path names to the compiler的CMake。这导致日志列不再对齐,现在它们很难读取,因为log4cxx使用__FILE__预处理器宏来确定该信息。
有没有人知道任何解决方法?我想指定例如只使用嵌套参数获取“filename.cpp”或更好,例如2嵌套将是“module / submodule / filename.cpp”。似乎通过设计CMake使用完整路径哲学,所以我认为这可以通过使用未知的预处理器指令或以某种方式欺骗Log4CXX来解决。
答案 0 :(得分:1)
看起来您可以尝试使用“ConversionPattern”来至少指定log4cxx的文件名输出的最大宽度:
http://logging.apache.org/log4cxx/apidocs/classlog4cxx_1_1_pattern_layout.html
或者在这里为ConversionPattern执行“查找页面”以获取配置文件示例:
http://logging.apache.org/log4cxx/index.html
根据文档,您应该在指定最大宽度时获取最右侧的字符。也许这与你在这里寻求的东西非常接近。
CMake始终将完整路径源文件名传递给编译器,以便调试符号引用正确的源文件(一方面)。使用完整路径名称可以更容易地保证所有平台上的工作无处不在。