2012-07-31 208 views
1

可能重複:
Displaying a log per line for a multiline text打印多行字符串

鑑於String m = "abc\ncdf";並使用與log4j的SLF4J,

如果我嘗試logger.debug(m);該字符串SomeClass.doSomething()方法裏面,新行後面的文本將不顯示標準日誌前綴:

10:40:35,732 [DEBUG] SomeClass.doSomething():32: abc 
cdf 

如果我使用一個實用程序的方法來分割字符串並打印每一行作爲自己的記錄通話:

class PrintUtil { 
    public static void print(String s) { 
     for(String line : s.split("\\n")) 
      logger.debug(line); 
    } 
} 

,改變SomeClass.doSomething()打電話PrintUtil.print(m);然後我失去了原有的類信息:

10:40:35,737 [DEBUG] PrintUtil.print():45: abc 
10:40:35,737 [DEBUG] PrintUtil.print():45: cdf 

是否可以在不丟失調用類/方法信息的情況下打印多行字符串?

爲了澄清,所需的輸出將是:

10:40:35,732 [DEBUG] SomeClass.doSomething():32: abc 
10:40:35,732 [DEBUG] SomeClass.doSomething():32: cdf 

回答

0

,如果我下站在你的權利,你想要一些東西像:

10:40:35,737 [DEBUG] PrintUtil.print():45: abc 
              cdf 

怎麼樣加入 '\ t'(製表)到字符串?

+0

我編輯的問題,包括我試圖創建 – Alex 2012-07-31 16:12:43

+1

你可以添加你的功能所需的數據輸出。您應該能夠檢查堆棧並找出誰調用了PrintUtil.print()函數。快速谷歌搜索給我:http://www.javalobby.org/java/forums/t67019.html。不那麼英俊,但應該工作。 – elyashiv 2012-07-31 17:09:48

0

你應該能夠添加爲「\ r \ n」個

logger.info("test\r\ntest");