2011-02-11 49 views
3

我使用Log4Cxx进行日志记录,我想使用%l指令来查看日志跟踪(文件名和行号)的位置。我遇到的问题是我也在使用提供full path names to the compiler的CMake。这会导致日志列不再对齐,并且由于log4cxx使用__FILE__预处理器宏来确定信息,所以现在它们很难读取。Log4cxx和与CMake一起使用时的完整文件路径

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

回答

1

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

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

或做ConversionPattern的“页上找到”这里的配置文件例子:

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

根据该文档,那么当您指定一个最大宽度得到了最右边的字符。也许这与你在这里寻找的东西非常接近。

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