gpt4 book ai didi

java - Log4j,禁用依赖于环境的附加程序

转载 作者:搜寻专家 更新时间:2023-10-30 19:55:28 24 4
gpt4 key购买 nike

我想要一个 log4j.xml 配置,并且能够在开发我的应用程序时登录到控制台。一旦部署到环境中,我只想登录到文件附加程序而不是控制台。我怎样才能做到这一点?

这是我当前的配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="DEBUG" />
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd-MM-yyyy HH:mm:ss} %-5p%c{1} - %m%n" />
</layout>
</appender>

<appender name="LogFileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${log-base-dir}/${adapter-name}.log" />
<param name="MaxFileSize" value="5000KB" />
<param name="MaxBackupIndex" value="99" />
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd-MM-yyyy HH:mm:ss} %-5p%c{1} - %m%n" />
</layout>
</appender>

<root>
<level value="info" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="LogFileAppender" />
</root>

</log4j:configuration>

最佳答案

解决方案之一可能是为开发生产 环境分离 log4j 配置文件,例如:

  • log4j-development.xml - 用于开发环境
  • log4j-production.xml - 用于生产环境

然后您的应用程序启动命令可以有指定 log4j 配置文件的参数,例如java -Dlog4jconfig=log4j-development.xml -jar Application.jar

您可以通过在代码中获取 log4jconfig 属性的值来配置 log4j,例如System.getProperty("log4jconfig")

该解决方案的优点如下:

  • 您可以独立指定记录器(ConsoleAppenderLogFileAppender 在开发中,只有 LogFileAppender 在生产中)
  • 您可以指定每个环境的日志记录级别(例如,error 在生产环境中和 debug 在开发环境中)
  • 您可以独立配置文件记录器,例如在生产中保留 X 天的日志(用于审计目的等)并且在开发中只有一个日志文件等。

该模式用于具有多个环境(开发、UAT、暂存、生产等)的许多应用程序服务器

log4j-development.xml 示例

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="DEBUG" />
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd-MM-yyyy HH:mm:ss} %-5p%c{1} - %m%n" />
</layout>
</appender>

<root>
<level value="debug" />
<appender-ref ref="ConsoleAppender" />
</root>

</log4j:configuration>

log4j-production.xml 示例

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="LogFileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${log-base-dir}/${adapter-name}.log" />
<param name="MaxFileSize" value="5000KB" />
<param name="MaxBackupIndex" value="99" />
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd-MM-yyyy HH:mm:ss} %-5p%c{1} - %m%n" />
</layout>
</appender>

<root>
<level value="error" />
<appender-ref ref="LogFileAppender" />
</root>

</log4j:configuration>

关于java - Log4j,禁用依赖于环境的附加程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14155832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com