【问题标题】:Newline(%n) pattern for Log4j in LinuxLinux 中 Log4j 的换行符(%n)模式
【发布时间】:2016-11-29 13:46:57
【问题描述】:

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

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

这是我使用的模式。我想在 Linux 环境中执行此操作,而 %n 无法正常工作,而是仅将日志附加到最后一行

【问题讨论】:

  • 你用的是什么版本?在我的 log4j2.xml 中,我在我的 linux 环境中使用了您的模式,它在换行符上打印日志。事实上,您已经输入了%n%n,因此添加了两个换行符。我得到的唯一警告是由于您使用的日期格式。尝试在 log4j2.xml 配置中使用 status="warn"
  • 我提到了所有status="ALL"的配置状态,它会影响吗?
  • 状态只是在加载 log4j 配置时查看日志消息,以便您查看配置中是否有任何错误。当您说“全部”时,它会在加载 log4j 配置时记录每个级别的日志。最好将状态设置为warndebug,否则您最终会收到太多日志消息。你可以发布你得到的输出吗?还有完整的 log4j 配置。
  • 感谢@MrunalPagnis 的帮助。我检查状态修改
  • 想一想:您是在 Linux 上还是在 Windows 上查看日志文件?如果日志文件是 Linux 编写的,在 Windows 上查看,换行符在 Windows 上不会创建新行,所以你所有的日志都在同一行

标签: java linux servlets web-applications log4j


【解决方案1】:

您是在 Linux 上还是在 Windows 上查看日志文件?如果日志文件由 Linux 编写并在 Windows 上查看,则换行符不会在 Windows 上使用经典文本编辑器创建新行,因此您的所有日志都将位于同一行。

您可以在 Pattern 中使用 \r\n 而不是 \n,或者在 Windows 中使用另一个处理 Linux 行分隔符 (\n) 的文本编辑器(例如 Notepad++)。

【讨论】:

    【解决方案2】:

    我保留了 log as 的模式字符串

    <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 平台中查看时,这很好用

    【讨论】:

      猜你喜欢
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 1970-01-01
      • 2021-07-20
      • 2012-02-29
      相关资源
      最近更新 更多