首页 > 解决方案 > 停止 log4j 登录到 syslog

问题描述

我正在尝试将 log4j2 配置为使用 Routing & RollingFile appenders 在多个文件中写入日志,到目前为止一切正常。但是,有一个不需要的副作用 - 它还会登录到 Linux 系统日志。有什么方法可以禁用登录系统日志?这是我的 log4j2.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<Configuration name="Staging" status="warn">
    <Properties>
        <Property name="pattern" value="%-5level [%d{DEFAULT}] %logger{30} %X %marker %msg%n"/>
        <Property name="log-path" value="/var/log/application"/>
        <Property name="file-size" value="200 MB"/>
        <Property name="file-total" value="10"/>
    </Properties>

    <Appenders>

         <RollingFile name="SESSIONS_APPENDER" fileName="${log-path}/sessions.log" filePattern="${log-path}/sessions-%i.log.gz" append="true">
            <PatternLayout pattern="${pattern}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${file-size}"/>
            </Policies>
            <DefaultRolloverStrategy max="${file-total}"/>
        </RollingFile>

        <RollingFile name="TRANSACTIONS_APPENDER" fileName="${log-path}/transactions.log" filePattern="${log-path}/transactions-%i.log.gz" append="true">
            <PatternLayout pattern="${pattern}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${file-size}"/>
            </Policies>
            <DefaultRolloverStrategy max="${file-total}"/>
        </RollingFile>

        <RollingFile name="STDROUT_APPENDER" fileName="${log-path}/stdrout.log" filePattern="${log-path}/stdrout-%i.log.gz" append="true">
            <PatternLayout pattern="${pattern}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${file-size}"/>
            </Policies>
            <DefaultRolloverStrategy max="${file-total}"/>

            <!-- Filtering from the stdout log, lines that have their own custom appender -->
            <Filters>
                <MarkerFilter marker="TRANSACTION" onMatch="DENY" onMismatch="NEUTRAL"/>
                <MarkerFilter marker="SESSION" onMatch="DENY" onMismatch="NEUTRAL"/>
            </Filters>
        </RollingFile>

        <Routing>
            <name>ROUTING_APPENDER</name>
            <Routes>
                <pattern>$${marker:}</pattern>
                <!-- Default appender if no matching marker found -->
                <Route ref="STDROUT_APPENDER"/>

                <!-- Appender selection for specific marker -->
                <Route key="TRANSACTION" ref="TRANSACTIONS_APPENDER"/>
                <Route key="SESSION" ref="SESSIONS_APPENDER"/>
            </Routes>
        </Routing>
    </Appenders>


    <Loggers>
        <Root level="info">
            <AppenderRef ref="STDROUT_APPENDER"/>
        </Root>
        <Logger name="com.application" level="info" additivity="false">
            <AppenderRef ref="ROUTING_APPENDER"/>
        </Logger>
        <Logger name="org.apache" level="error">
            <AppenderRef ref="STDROUT_APPENDER"/>
        </Logger>
        <Logger name="com.amazonaws" level="error">
            <AppenderRef ref="STDROUT_APPENDER"/>
        </Logger>
    </Loggers>
</Configuration>

标签: log4jlog4j2syslog

解决方案


推荐阅读