【问题标题】:Very simple log4j2 properties configuration file using Console and Rolling File appender使用控制台和滚动文件附加程序的非常简单的 log4j2 属性配置文件
【发布时间】:2018-03-03 19:18:53
【问题描述】:

我想要一个带有控制台的 log4j2 属性文件配置和一个使用 log4j2 的滚动文件附加程序,可以用于不同的应用程序。日志配置应该在生产环境中轮换日志。

【问题讨论】:

  • 实际上我正在寻找符合行业标准的标准 log4j2 配置。通过一些更改,我可以在我公司的多个应用程序中使用它。

标签: log4j log4j2


【解决方案1】:

我认为日志记录或log4j2 配置没有这样的行业标准。每个人都根据应用程序的需要更改配置。

下面是一个示例 log4j2 配置文件,包含 ConsoleAppenderRollingFileAppender -

status = warn
name= properties_configuration

# Give directory path where log files should get stored
property.basePath = ./log/

# ConsoleAppender will print logs on console
appender.console.type = Console
appender.console.name = consoleLogger
appender.console.target = SYSTEM_OUT
appender.console.layout.type = PatternLayout

# Specify the pattern of the logs
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %level [%t] [%c] [%M] [%l] - %msg%n


# RollingFileAppender will print logs in file which can be rotated based on time or size
appender.rolling.type = RollingFile
appender.rolling.name = fileLogger
appender.rolling.fileName= ${basePath}app.log
appender.rolling.filePattern= ${basePath}app_%d{yyyyMMdd}.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %level [%t] [%c] [%M] [%l] - %msg%n
appender.rolling.policies.type = Policies

# Rotate log file each day and keep 30 days worth
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.delete.type = Delete
appender.rolling.strategy.delete.basePath = ${basePath}
appender.rolling.strategy.delete.maxDepth = 1
appender.rolling.strategy.delete.ifLastModified.type = IfLastModified
# Delete files older than 30 days
appender.rolling.strategy.delete.ifLastModified.age = 30d

# Mention package name here in place of example. Classes in this package or subpackages will use ConsoleAppender and RollingFileAppender for logging         
logger.example.name = example
logger.example.level = debug
logger.example.additivity = false
logger.example.appenderRef.rolling.ref = fileLogger
logger.example.appenderRef.console.ref = consoleLogger

# Configure root logger for logging error logs in classes which are in package other than above specified package
rootLogger.level = error
rootLogger.additivity = false
rootLogger.appenderRef.rolling.ref = fileLogger
rootLogger.appenderRef.console.ref = consoleLogger

【讨论】:

  • 抱歉回复晚了。我需要将主机 IP 地址添加到日志文件中。是否可以不修改应用java代码代码?
  • @SubhajitPal 我认为这是可能的。检查此link。另一个重要的一点是它是完全不同的问题,所以你应该问一个新问题。
  • 还有一个问题。我已经使用了基于时间和大小的基本策略。基于时间的策略的间隔为 1 天。但是,如果一天从一天更改为下一天,则前一天的最后一个日志文件不会翻转。它没有以增量值压缩。
  • 我收到此错误ERROR Unable to locate plugin type for IfLastModified
  • @VikasSachdeva 我遇到了问题。在我的 conf 中 IfLastModified 之后有一个尾随空格。谢谢队友
【解决方案2】:
Try this out:

# Declare loggers
name=LoggingConfig
appenders=a_console, a_rolling
rootLogger.level=info
rootLogger.appenderRefs=ar_console,ar_rolling
rootLogger.appenderRef.ar_console.ref=StdoutAppender
rootLogger.appenderRef.ar_rolling.ref=DailyRollingAppender

# Console logger
appender.a_console.type=Console
appender.a_console.name=StdoutAppender
appender.a_console.layout.type=PatternLayout
appender.a_console.layout.pattern=%d{ISO8601} [%t] %-5p (%F\:%L) - %m%n

# File logger
appender.a_rolling.type=RollingFile
appender.a_rolling.name=DailyRollingAppender
appender.a_rolling.layout.pattern=%d{ISO8601} [%t] %-5p (%F\:%L) - %m%n

appender.a_rolling.fileName=log4j2-sample.log
appender.a_rolling.filePattern=log4j2-sample-%d{yyyy-MM-dd}.log

appender.a_rolling.layout.type=PatternLayout
appender.a_rolling.policies.type=Policies
appender.a_rolling.policies.time.type=TimeBasedTriggeringPolicy
appender.a_rolling.policies.time.interval=1

【讨论】:

    【解决方案3】:

    如果您只需要使用控制台附加程序,这是最简单的配置。

    name=config
    appenders=console
    appender.console.type=Console
    appender.console.name=STDOUT
    appender.console.layout.type=PatternLayout
    #appender.console.layout.pattern =%d{HH:mm:ss} [%t] %c{1} [%-5level] - %msg%n
    appender.console.layout.pattern=%d{dd-MM-yyyy HH:mm:ss} [%-5p] (%F:%L) - %m%n
    rootLogger.level=info
    rootLogger.appenderRefs=stdout
    rootLogger.appenderRef.stdout.ref=STDOUT
    
    #if you want to make package specific configuration
    #logger.org.apache=warn
    

    【讨论】:

      猜你喜欢
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      • 2019-07-27
      • 2018-01-19
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      相关资源
      最近更新 更多