在我的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>
答案 0 :(得分:0)
最可能的解决方法是删除此行:
<appender-ref ref="CONSOLE" />
我说“最有可能”是因为这只是将输出写入控制台。这意味着可能还有其他东西可以将输出重定向到/var/log/whatever
,可能是在应用程序的启动脚本中。
包含的默认文件org/springframework/boot/logging/logback/base.xml
也可能是因为该文件定义了文件附加程序。我不知道显式的<root>
定义是否会完全覆盖或仅更新包含的默认值,但是除非您知道您需要默认值,否则我将删除<include>
语句。
如果需要从现有的日志文件中恢复空间,则可以截断它:
sudo truncate -s 0 /var/log/WHATEVER
删除它不是正确的解决方案,因为在应用程序显式关闭它之前,它实际上不会被删除(这意味着重新启动服务器)。
>如评论者所建议的那样,您可以使用logrotate来防止磁盘上的文件变得太大。
但是,到目前为止,您应该做的最重要的事情是the Logback documentation。