2011-02-11 122 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總是將完整路徑源文件名傳遞給編譯器,以便調試符號引用正確的源文件(一件事)。使用完整的路徑名稱確保所有平臺上的所有東西都可以工作,這更容易。