2012-07-31 168 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");