我在应用程序中使用cassandraappender、控制台和文件appender。我只想储存 ERROR
cassandra表日志中的消息 INFO
消息到控制台和文件。
下面是 log4j2.xml
文件。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Properties>
<Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"</Property>
<Property name="APP_LOG_ROOT">./log</Property>
<Property name="MINLEVEL">INFO</Property>
<Property name="FILEMAXSIZE">800MB</Property>
<Property name="MAXFILES">5</Property>x
</Properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
<RollingFile name="ROLLING" fileName="${APP_LOG_ROOT}/abc.log"
filePattern="${APP_LOG_ROOT}/abc-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="${FILEMAXSIZE}" />
</Policies>
<DefaultRolloverStrategy max="${MAXFILES}"/>
</RollingFile>
<Cassandra name="Cassandra" clusterName="TestCluster" keyspace="Employee" table="Logs" bufferSize="10" username="tomcat" password="password">
<SocketAddress host="IPaddress" port="9042"/>
<ColumnMapping name="userid" pattern="%uuid{TIME}" type="java.util.UUID"/>
<ColumnMapping name="logger" pattern="%logger"/>
<ColumnMapping name="message" pattern="%message"/>
<ColumnMapping name="level" pattern="%level"/>
<ColumnMapping name="timestamp" literal="now()"/>
</Cassandra>
</Appenders>
<Loggers>
<Root level="${MINLEVEL}" additivity="false">
<AppenderRef ref="ROLLING"/>
</Root>
<Logger name="abc.xyz" level="ERROR" additivity="false">
<AppenderRef ref="Cassandra" />
<AppenderRef ref="console" />
</Logger>
</Loggers>
在最后一段中,当我将级别更改为 ${MINLEVEL}
i、 e信息,然后它工作,但错误不工作。请帮帮我!
1条答案
按热度按时间dy2hfwbg1#
问题是additivity设置为false,这会阻止将消息复制到
root
以及.xyz
伐木工人。如果将additivity设置为false,它将被发送到两个记录器。更多信息可在此博客中找到。