【问题标题】:Log4cxx and full file paths when used with CMake与 CMake 一起使用时的 Log4cxx 和完整文件路径
【发布时间】:2011-02-11 09:54:58
【问题描述】:

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

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

【问题讨论】:

    标签: cmake g++ c-preprocessor 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 总是将完整路径源文件名传递给编译器,以便调试符号引用正确的源文件(一方面)。使用完整路径名更容易保证所有平台上的任何地方都能正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      相关资源
      最近更新 更多