Журнал AWS CloudWatch и отключение входа на сам сервер с помощью Springboot - PullRequest
2 голосов
/ 24 мая 2019

В моем приложении springboot я настраиваю запись журналов в AWS CloudWatch, но приложение также создает журнал файлов журнала на самом сервере в папке / var / log /, теперь файл журнала даже больше, чем 19G

Как отключить журнал на самом сервере и записывать только журналы в CloudWatch?

Ниже приведена моя текущая конфигурация logback-spring.xml.Любые идеи оценят.Заранее спасибо.

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

    <configuration>

    <include resource="org/springframework/boot/logging/logback/base.xml" />

    <springProperty scope="context" name="ACTIVE_PROFILE" source="spring.profiles.active" />

    <property name="clientPattern" value="payment" />  

    <logger name="org.springframework">

    <level value="INFO" />

    </logger>

    <logger name="com.payment">

    <level value="INFO" />

    </logger>

    <logger name="org.springframework.ws.client.MessageTracing.sent">

    <level value="TRACE" />

    </logger>

    <logger name="org.springframework.ws.client.MessageTracing.received">

    <level value="TRACE" />

    </logger>

    <logger name="org.springframework.ws.server.MessageTracing">

    <level value="TRACE" />

    </logger>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">

    <layout class="ch.qos.logback.classic.PatternLayout">

    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [${HOSTNAME}:%thread] %-5level%replace([${clientPattern}] ){'\[\]\s',''}%logger{50}: %msg%n

    </pattern>

    </layout>

    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">

    <level>TRACE</level>

    </filter>

    </appender>

    <springProfile name="local,dev">

    <root level="INFO">

    <appender-ref ref="CONSOLE" />

    </root>

    </springProfile>

    <springProfile name="prod,uat">

    <timestamp key="date" datePattern="yyyy-MM-dd" />

    <appender name="AWS_SYSTEM_LOGS" class="com.payment.hybrid.log.CloudWatchLogsAppender">

    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">

    <level>TRACE</level>

    </filter>

    <layout>

    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [${HOSTNAME}:%thread] %-5level%replace([${clientPattern}] ){'\[\]\s',''}%logger{50}:

    %msg%n

    </pattern>

    </layout>

    <logGroupName>${ACTIVE_PROFILE}-hybrid-batch</logGroupName>

    <logStreamName>HybridBatchLog-${date}</logStreamName>

    <logRegionName>app-northeast</logRegionName>

    </appender>

    <appender name="ASYNC_AWS_SYSTEM_LOGS" class="ch.qos.logback.classic.AsyncAppender">

    <appender-ref ref="AWS_SYSTEM_LOGS" />

    </appender>

    <root level="INFO">

    <appender-ref ref="ASYNC_AWS_SYSTEM_LOGS" />

    <appender-ref ref="CONSOLE" />

    </root>

    </springProfile>

    </configuration>

1 Ответ

0 голосов
/ 24 мая 2019

Наиболее вероятное исправление заключается в удалении этой строки:

<appender-ref ref="CONSOLE" />

Я говорю "наиболее вероятно", потому что это просто запись вывода на консоль.Это означает, что есть что-то еще, что перенаправляет вывод в /var/log/whatever, возможно, в сценарии запуска для вашего приложения.

Также возможно, что включенный файл по умолчанию, org/springframework/boot/logging/logback/base.xml, потому что этот файл определяет файл appender,Я не знаю, будет ли явное определение <root> полностью переопределять или просто обновлять включенное значение по умолчанию, но если вы не знаете, что вам нужно значение по умолчанию, я удалил бы оператор <include>.

Если вам нужновосстановить пространство из существующего файла журнала, вы можете его урезать:

sudo truncate -s 0 /var/log/WHATEVER

Удаление это не правильное решение, потому что оно не будет фактически удалено доприложение явно закрывает его (что означает перезапуск сервера).

Как предложил один из комментаторов, вы можете использовать logrotate , чтобы не допустить слишком большого размера файла на диске.

Но , безусловно, самая важная вещь, которую вы должны сделать , это прочитать Документация Logback .

...