Java Logstash同时写入syslog和daemon.log
当前我的Java进程同时写入syslog和daemon.log。Java Logstash同时写入syslog和daemon.log,java,logstash,logback,syslog,Java,Logstash,Logback,Syslog,当前我的Java进程同时写入syslog和daemon.log。 几个月前,我在JSON格式中添加了一个并行写入,但我认为这不应该是这里的问题 如何避免同时写入syslog和daemon.log? 这是我的logback-spring.xml: <?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springfr
几个月前,我在JSON格式中添加了一个并行写入,但我认为这不应该是这里的问题 如何避免同时写入syslog和daemon.log? 这是我的logback-spring.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/basic.xml" />
<springProperty scope="context" name="logs" source="logging.path"
defaultValue="." />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d [%thread] %-5level %logger{36} - %msg %n
</pattern>
</encoder>
</appender>
<appender name="STDOUT"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logs}/app.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
...
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
...
</rollingPolicy>
<encoder>
<pattern>%d [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="STDOUT_JSON"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logs}/app.json.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
...
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
...
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<appender name="STDERR"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logs}/error.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
...
</rollingPolicy>
<encoder>
<pattern>%d [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="STDERR_JSON"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logs}/error.json.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
...
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<appender name="ProcessLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logs}/process.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
...
</rollingPolicy>
<encoder>
<pattern>%d %-5level %msg%n</pattern>
</encoder>
</appender>
<appender name="ProcessLogJson" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logs}/process.json.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
...
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<logger name="ProcessLog" level="INFO">
<appender-ref ref="ProcessLog" />
<appender-ref ref="ProcessLogJson" />
</logger>
<logger name="com.base22" level="TRACE" />
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="STDOUT" />
<appender-ref ref="STDOUT_JSON"/>
<appender-ref ref="STDERR" />
<appender-ref ref="STDERR_JSON" />
</root>
%d[%thread]-5级别%logger{36}-%msg%n
${logs}/app.log
...
...
%d[%thread]-5级别%logger{36}-%msg%n
${logs}/app.json.log
...
...
${logs}/error.log
警告
...
%d[%thread]-5级别%logger{36}-%msg%n
${logs}/error.json.log
警告
...
${logs}/process.log
...
%d%-5级%msg%n
${logs}/process.json.log
...
将STDOUT重命名为某个新名称会奏效吗?所有这些都会转到process.log、error.log。。。也不应出现在syslog中。我将附加器的名称更改为STDOUT_平面和STDERR_平面:
<appender name="STDOUT_PLANE"
...
<appender name="STDERR_PLANE"
...
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="STDOUT_PLANE" />
<appender-ref ref="STDOUT_JSON"/>
<appender-ref ref="STDERR_PLANE" />
<appender-ref ref="STDERR_JSON" />
</root>