logback spring отключить консольное журналирование на основе профиля пружины - PullRequest
0 голосов
/ 07 февраля 2019

Вот мой пример logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="LOG_FILE" value="some file path here"/>
    <property name="LOG_FILE_MAX_SIZE" value="50MB" />
    <property name="LOG_FILE_MAX_HISTORY" value="30" />
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />

<springProfile name="!test &amp; !prod">
    <logger name="com.myapp" level="DEBUG" />
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root> 
</springProfile>

<springProfile name="test">
    <logger name="com.myapp" level="DEBUG" />
    <root level="WARN">
        <appender-ref ref="FILE" />
    </root>
</springProfile>

<springProfile name="prod">
    <logger name="com.myapp" level="INFO" />
    <root level="WARN">
        <appender-ref ref="FILE"/>
    </root>
</springProfile>

Мое намерение состоит в том, чтобы регистрировать содержимое только в FILE для профиля test & prod, однако для любого другого профиля (то есть,localhost), я бы хотел, чтобы мои журналы попадали только в CONSOLE.

При вышеуказанных настройках, если я запускаю мое приложение для весенней загрузки (версия 2.1.1.RELEASE) с профилем localhost, оно регистрируется только в CONSOLE.как и ожидалось, однако, если я использую профиль test или prod, он регистрирует содержимое как в CONSOLE, так и в FILE.

Видите ли вы какие-либо проблемы в xml logback?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Вот пример, которому вы можете следовать, где вы можете выбрать тип приложения для различных сред, например, только FILE для профиля test & prod и только stdout или console для локальной среды.

       <springProfile name="dev,test,local">
    <property name="LOG_PATH" value="C:/<folder_name>/" />
</springProfile>
  <!--if production environment is linux -->
   <springProfile name="prod">
    <property name="LOG_PATH" value="/opt/<folder_name>/" />
   </springProfile>

    <!-- make sure the pattern tag expression don't break in the middle-->
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
     <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <pattern>%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }) 
   {magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} 
     %clr(:){faint} %m%n%wEx</pattern>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
        </pattern>
    </encoder>
   </appender>

   <appender name="file"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOG_PATH}projectLog.%d{dd-MM-yyyy}.log
        </fileNamePattern>
        <!-- <maxHistory>30</maxHistory> -->
        <totalSizeCap>3GB</totalSizeCap>
    </rollingPolicy>

   </appender>

  <springProfile name="local">
  <logger name="org.springframework" level="info" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>
   <root level="info">
        <appender-ref ref="STDOUT" />
    </root>
 </springProfile>
 <springProfile name="test,dev,prod">
 <logger name="org.springframework" level="error" additivity="false">
        <appender-ref ref="file" />
    </logger>
 <root level="info">
        <appender-ref ref="file" />
    </root>
  </springProfile>
0 голосов
/ 07 февраля 2019

Насколько я знаю, Spring не допускает логических выражений при выборе профиля.Можно просто сказать !test, но не такую ​​комбинацию.Таким образом, в вашем случае условие сработает, если тест не активен или продукт не активен, что означает, что тест активен или продукт активен.

Что вы можете сделать, так это получить список других профилей, для которых вы действительно хотитевойти в консоль.Напримерlocalhost.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...