Linux下Log4j的换行符(%n)模式

4

我需要帮助在Java Web应用程序中断行并将日志附加到新行。

<PatternLayout pattern="%d{dd/MM/YYYY HH:mm:ss.SSS} [%t] %-5level %logger{36} %msg%n%n"/>

这是我使用的模式。我希望在Linux环境中执行此操作,但%n无效,只有日志附加到最后一行。


1
你使用的是哪个版本?在我的log4j2.xml中,我在我的Linux环境中使用了你的模式,并且它正在打印日志到新行。实际上,你已经放置了%n%n,所以添加了两个新行。我唯一收到的警告是由于你使用的日期格式。尝试在你的log4j2.xml配置中使用status="warn" - Mrunal Pagnis
1
状态只是为了在加载log4j配置时查看日志消息,以便您可以查看配置中是否有任何错误。当您说“全部”时,它会记录加载log4j配置时的每个级别日志。最好将状态设置为“警告”或“调试”,否则您将最终获得太多的日志消息。您能发布您正在获取的输出吗?还有完整的log4j配置。 - Mrunal Pagnis
感谢@MrunalPagnis的帮助。我会检查状态修改。 - Prajwal Bhat
1
只是一个想法:您是在Linux还是Windows上查看日志文件?如果日志文件由Linux编写并在Windows上查看,则换行符将不会在Windows上创建新行,因此所有日志都将在同一行上。 - xav
是的!!我也遇到了同样的情况。我在Linux上托管了应用程序,然后在Windows上查看。我找到了一些替代方法,在Java日志函数中放置\r\n,现在它可以正常工作了,而不会改变PatternLayout字符串。感谢@xav - Prajwal Bhat
显示剩余3条评论
2个回答

6

您是在 Linux 或 Windows 上查看日志文件吗?如果日志文件是由 Linux 编写并在 Windows 上查看的,则使用传统文本编辑器时,新行字符不会在 Windows 上创建新行,因此所有日志都将显示在同一行上。

您可以在自己的模式中使用 \r\n 代替 \n,或者使用 Windows 中另一个处理 Linux 行分隔符 (\n) 的文本编辑器(例如 Notepad++)。


0

我保留日志的模式字符串为

<PatternLayout pattern="%msg"/>

并修改了LogManagement.java文件

private static final Logger LOGGER_OBJECT = LogManager.getLogger(LogManagement.class);

private static final String STRING_DATE_FORMAT = "dd MMM yyyy HH:mm"; //Date & Time format
private static final SimpleDateFormat SIMPLE_DATE_FORMAT_PATTERN = new SimpleDateFormat(STRING_DATE_FORMAT); //Simple format conversion

信息函数中的代码

LOGGER_OBJECT.info("\r\n"); //New Line
LOGGER_OBJECT.info("Log Type\t: INFO"); //Log Type
LOGGER_OBJECT.info("\r\n");
LOGGER_OBJECT.info("Date & Time\t: "+SIMPLE_DATE_FORMAT_PATTERN.format(new Date()));//Current Date & Time
LOGGER_OBJECT.info("\r\n");

当我在Linux中记录数据并在Windows平台上查看时,这个工作正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接