打印多行字符串

时间:2012-07-31 15:31:15

标签: java logging log4j slf4j

  

可能重复:
  Displaying a log per line for a multiline text

给定String m = "abc\ncdf";并将slf4j与log4j一起使用,

如果我在logger.debug(m);方法中尝试SomeClass.doSomething()该字符串,则会显示新行之后的文本,而不显示标准日志记录前缀:

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

如果我使用util方法拆分字符串并将每行打印为自己的记录器调用:

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

2 个答案:

答案 0 :(得分:0)

如果我站在你的右边你想要一些这样的东西:

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

将'\ t'(制表符)添加到字符串怎么样?

答案 1 :(得分:0)

您应该可以添加“\ r \ n”

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