【问题标题】:Cassandra Appender - How to Log ONLY error messages?Cassandra Appender - 如何仅记录错误消息?
【发布时间】:2019-07-31 05:19:53
【问题描述】:

我在我的应用程序中使用 Cassandra 附加程序、控制台和文件附加程序。我只想将 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}INFO 时,它可以工作但 ERROR 不起作用。请帮忙!

【问题讨论】:

    标签: cassandra log4j2


    【解决方案1】:

    问题在于 additivity 设置为 false,这是为了防止将消息复制到 rootabc.xyz 记录器。如果您将 additivity 设置为 false,它将被发送到两个记录器。

    blog entry 提供更多信息。

    【讨论】:

    • 谢谢!可加性设置为假。即使我删除了可加性属性,当级别更改为 ERROR 时,它也不会写入 Cassandra 日志表。问题似乎出在 Cassandra appender 上。
    猜你喜欢
    • 2012-02-11
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多