原文: https://howtodoinjava.com/log4j2/log4j2-htmllayout-configuration-example/

Log4j2 示例将帮助您使用HTMLLayout配置log4j2.xml文件。 HTMLLayout生成 HTML 页面,并将每个 log 语句添加到表中的一行。

HTMLLayout配置

在配置HTMLLayout时,可以使用以下属性:

  1. locationInfo – 如果为true,则将包括位置信息。 默认为false
  2. title – 要包含在文件头中的标题。 如果未指定,则使用默认标题。
  3. contentType – 内容类型。 默认为“text/html”。
  4. charset – 要使用的字符集。 如果未指定,将使用默认值。
  5. fontSize – 文本的字体大小。
  6. font – 用于文本的字体。

我们来看看用于生成基于 HTML 格式的日志文件的不同配置选项。

log4j2.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Configuration status="warn">
  3. <Properties>
  4. <Property name="basePath">C:\\logs</Property>
  5. </Properties>
  6. <Appenders>
  7. <RollingFile name="fileLogger" fileName="${basePath}/app-info.html"
  8. filePattern="${basePath}/app-info-%d{yyyy-MM-dd}.html">
  9. <HTMLLayout charset="UTF-8" title="Howtodoinjava Info Logs" locationInfo="true" />
  10. <Policies>
  11. <TimeBasedTriggeringPolicy interval="1" modulate="true" />
  12. <SizeBasedTriggeringPolicy size="10 MB" />
  13. </Policies>
  14. </RollingFile>
  15. <Console name="console" target="SYSTEM_OUT">
  16. <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
  17. </Console>
  18. </Appenders>
  19. <Loggers>
  20. <Logger name="com.howtodoinjava" level="debug" additivity="false">
  21. <appender-ref ref="fileLogger" level="debug" />
  22. </Logger>
  23. <Root level="debug" additivity="false">
  24. <appender-ref ref="console" />
  25. </Root>
  26. </Loggers>
  27. </Configuration>

log4j2.properties

  1. status = error
  2. name = PropertiesConfig
  3. #Make sure to change log file path as per your need
  4. property.filename = C:\\logs\\app-info.html
  5. filters = threshold
  6. filter.threshold.type = ThresholdFilter
  7. filter.threshold.level = debug
  8. appenders = rolling
  9. appender.rolling.type = RollingFile
  10. appender.rolling.name = RollingFile
  11. appender.rolling.fileName = ${filename}
  12. appender.rolling.filePattern = debug-backup-%d{MM-dd-yy-HH-mm-ss}-%i.html.gz
  13. appender.rolling.layout.type = HTMLLayout
  14. appender.rolling.layout.charset = UTF-8
  15. appender.rolling.layout.title = Howtodoinjava Info Logs
  16. appender.rolling.layout.locationInfo = true
  17. appender.rolling.policies.type = Policies
  18. appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
  19. appender.rolling.policies.time.interval = 1
  20. appender.rolling.policies.time.modulate = true
  21. appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
  22. appender.rolling.policies.size.size=10MB
  23. appender.rolling.strategy.type = DefaultRolloverStrategy
  24. appender.rolling.strategy.max = 20
  25. loggers = rolling
  26. #Make sure to change the package structure as per your application
  27. logger.rolling.name = com.howtodoinjava
  28. logger.rolling.level = debug
  29. logger.rolling.additivity = false
  30. logger.rolling.appenderRef.rolling.ref = RollingFile

log4j2.json

  1. {
  2. "configuration": {
  3. "name": "Default",
  4. "appenders": {
  5. "RollingFile": {
  6. "name":"File",
  7. "fileName":"C:/logs/howtodoinjava.html",
  8. "filePattern":"C:/logs/howtodoinjava-backup-%d{MM-dd-yy-HH-mm-ss}-%i.html.gz",
  9. "HTMLLayout": {
  10. "charset":"UTF-8",
  11. "title":"Howtodoinjava Info Logs",
  12. "locationInfo":"true"
  13. },
  14. "Policies": {
  15. "SizeBasedTriggeringPolicy": {
  16. "size":"10 MB"
  17. }
  18. },
  19. "DefaultRolloverStrategy": {
  20. "max":"10"
  21. }
  22. }
  23. },
  24. "loggers": {
  25. "root": {
  26. "level":"debug",
  27. "appender-ref": {
  28. "ref":"File"
  29. }
  30. }
  31. }
  32. }
  33. }

示例日志语句

现在,我们使用圆顶日志语句生成日志文件。

  1. package com.howtodoinjava.log4j2.examples;
  2. import org.apache.logging.log4j.LogManager;
  3. import org.apache.logging.log4j.Logger;
  4. public class Log4j2HelloWorldExample
  5. {
  6. private static final Logger LOGGER = LogManager.getLogger(Log4j2HelloWorldExample.class.getName());
  7. public static void main(String[] args)
  8. {
  9. LOGGER.debug("Debug Message Logged !!");
  10. LOGGER.info("Info Message Logged !!");
  11. LOGGER.debug("Another Debug Message !!");
  12. }
  13. }

Log4j2 HTMLLayout输出

在上面的日志文件中运行将生成以下 HTMl 文件。

Log4j2 `HTMLLayout`配置示例 - 图1

Log4j2 HTMLLayout输出

将我的问题放在评论部分。

参考:

http://logging.apache.org/log4j/2.x/manual/layouts.html#HTMLLayout

https://logging.apache.org/log4j/2.x/log4j-core/apidocs/org/apache/logging/log4j/core/layout/HtmlLayout.html