log4j - не записывает в файл при использовании исполняемого файла jar - PullRequest
0 голосов
/ 30 августа 2018

Я использую Spring Boot и создаю исполняемый файл JAR. У нас настроен log4j2. Когда приложение запускается, оно создает файл журнала, как указано в файле log4j2-spring.xml, но никогда не записывает в него. Горячие изменения уровня журнала в файле конфигурации также не работают ... я полагаю, так как он все равно не записывает данные в файл. Мой конфиг ниже. Все пути прошли двойную и тройную проверку и отображаются правильно.

Следует отметить, что у Spring, по-видимому, настроен какой-то журнал. В jar-файле я удалил конфигурацию xml, чтобы убедиться, что она не читает ни из чего в jar-файле ... все же ведение журнала происходит на консоли, но никогда не в файле ... и, опять же, изменение уровня не имеет никакого эффекта .

ФАЙЛ: log4j2-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <Properties>
        <Property name="PID">????</Property>
        <property name="name">AddressValidation</property>
        <Property name="log.file.path">/opt/java/logs</Property>
        <Property name="log.file.archive.path">/opt/java/logs/archive</Property>
        <Property name="log.file">AddressValidation</Property>
        <Property name="log.file.size">500MB</Property>
        <Property name="log.file.max-files">10</Property>
        <Property name="log.level">ERROR</Property>
        <Property name="LOG_PATTERN">%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n</Property>
    </Properties>
    <Appenders>
        <RollingFile name="file" fileName="${log.file.path}/${log.file}.log" filePattern="${log.file.archive.path}/${log.file}-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID} --- [%t] %c{1}(%M:%L) : %m%n%wEx" />
            <Policies>
                <TimeBasedTriggeringPolicy /><!-- Rotated everyday -->
                <SizeBasedTriggeringPolicy size="${log.file.size}" /> <!-- Or every 100 MB -->
            </Policies>
            <DefaultRolloverStrategy max="${log.file.max-files}"/>
        </RollingFile>
        <Console name="Console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1}(%M:%L)}{cyan} %clr{:}{faint} %m%n%wEx" />
        </Console>
    </Appenders>
    <Loggers>
        <AsyncLogger name="org.hibernate.validator.internal.util.Version" level="warn" additivity="false" />
        <AsyncLogger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" additivity="false" />
        <AsyncLogger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" additivity="false" />
        <AsyncLogger name="org.apache.catalina.startup.DigesterFactory" level="error" additivity="false" />
        <AsyncLogger name="org.springframework.web" level="error" />
        <AsyncLogger name="com.netflix" level="error" additivity="false" />
        <AsyncLogger name="org.springframework.cloud" level="error" additivity="false" />
        <AsyncLogger name="com.abc.addressvalidation" level="ERROR">
            <AppenderRef ref="file"/>
        </AsyncLogger>
        <Root level="ERROR">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="file" />
        </Root>
    </Loggers>
</Configuration>

Я называю это следующим образом: java -Dlog4j.configurationFile = C: \ test \ config \ log4j2-spring.xml -jar AddressValidation-0.0.1-SNAPSHOT.jar

У меня заканчиваются идеи здесь. Я нахожу здесь много информации о StackOverflow. Это все тот же совет, которому я следую.

...