Подтвердить что ты не робот

Почему каталог catalina.home_IS_UNDEFINED генерируется журналом "Резервное копирование" в том же каталоге проекта?

Я написал файл конфигурации журнала для своего приложения, но когда я делал maven clean install (mvn clean install), он сгенерировал каталог catalina.home_IS_UNDEFINED с файлом журнала в каталоге проекта. Почему этот каталог создан?

Я не хочу, чтобы это было в моей директории проекта.

Любая помощь для решения этой проблемы?

Вот конфигурационный файл.

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date{HH:mm:ss.SSS} %-5p [%t] %c{1} - %m%n</pattern>
        </encoder>
    </appender>

    <appender name="MY_APP_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${catalina.home}/logs/myApplication.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${catalina.home}/logs/myApplication.%d{yyyy-MM-dd}.log</FileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%-5p  %date{HH:mm:ss.SSS} [%t] %c{1} - %m%n</pattern>
        </encoder>
        <append>true</append>
    </appender>

    <logger name="org.springframework" level="WARN"/>


    <root>
        <priority value="INFO"/>
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="MY_APP_LOG"/>
    </root>

</configuration>
4b9b3361

Ответ 1

Фон

Ошибка загрузки этого свойства, поскольку он заполняется только tomcat. Он не заполняется заданием maven compile.

Решение 1

Задайте свойство, подобное этому в logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <if condition='isDefined("catalina.home")'>
        <then>
            <property name="log.folder" value="${catalina.home}/logs"/>
        </then>
        <else>
            <property name="log.folder" value="./target/logs"/>
        </else>
    </if>

    <appender name="companyMyAppServiceAppender" class="ch.qos.logback.core.FileAppender">
        <file>${log.folder}/company.myApp.log</file>
        ...
    </appender>

    ...

</configuration>

Это создаст файлы журналов в целевой папке во время компиляции, которые будут удалены с помощью чистой.

Решение 2

Значение "Rewrite":

<property name="log.folder" value="./target/logs"/>
<if condition='isDefined("catalina.home")'>
    <then>
        <property name="log.folder" value="${catalina.home}/logs"/>
    </then>
</if>

NB!

И не забудьте импортировать зависимость maven janino

<!-- The org.codehaus.janino:commons-compiler:2.7.8 dependency -->
<!-- will be automatically pulled in by Maven transitivity rules -->
<dependency>
    <groupId>org.codehaus.janino</groupId>
    <artifactId>janino</artifactId>
    <version>2.7.8</version>
</dependency>

Ответ 2

У меня была аналогичная проблема, и я решил, что это было вызвано моими модульными тестами, не имеющими надлежащей среды Tomcat.

Моим минимальным решением было добавить следующий src/test/resources/logback.xml в мой проект проекта Maven:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="catalina.home" value="target" />
</configuration>

Журналы, сгенерированные модульными тестами, затем оказались в каталоге target, а не в каталоге верхнего уровня проекта.

Ответ 3

Я бы посоветовал не полагаться на зависимость janino (в данном случае 1 МБ ни за что). Существует более простое решение, использующее реализацию значений по умолчанию для logback, например:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="base.folder" value="${catalina.home:-./target}"/>

    <appender name="MY_APP_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${base.folder}/logs/myApplication.log</file>
        ...
    </appender>

    ...

</configuration>

Найдите символы :- между именем переменной и значением по умолчанию. Если переменная ${catalina.home} пуста, будет использовано значение по умолчанию (в данном случае ./target).

Ответ 4

Попробуйте изменить:

<logger name="org.springframework" level="WARN"/>

в

<logger name="org.springframework" level="OFF"/>