Ответ 1
Одним из решений может быть разделение конфигурационных файлов log4j для среды разработки и производства, например:
-
log4j-development.xml
- для среды разработки -
log4j-production.xml
- для производственной среды
Тогда ваша команда запуска приложения может иметь параметр, задающий конфигурационный файл log4j, например. java -Dlog4jconfig=log4j-development.xml -jar Application.jar
Вы можете настроить log4j, получив значение свойства log4jconfig
в вашем коде, например. System.getProperty("log4jconfig")
.
Плюсы этого решения заключаются в следующем:
- Вы можете самостоятельно определять регистраторы (
ConsoleAppender
иLogFileAppender
в разработке и только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>