1

可能重复:
为多行文本每行显示一个日志

给定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()为 callPrintUtil.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
4

2 回答 2

0

如果我理解你的话,你想要这样的东西:

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

在字符串中添加 '\t' (tab) 怎么样?

于 2012-07-31T15:40:25.503 回答
0

您应该能够添加“\r\n”

logger.info("test\r\ntest");
于 2012-07-31T15:41:14.527 回答