运行应用程序时出现警告

时间:2015-11-11 19:54:28

标签: java log4j slf4j

我配置了log4j,并且我在为线程创建日志文件的应用程序上对其进行了测试,但是在运行时我收到了log4j警告,并且没有为线程创建日志文件。

log4j:WARN No appenders could be found for logger(com.amazonaws.internal.config.InternalConfig).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN 

有关详细信息,请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig

 <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
        <properties>
            <property name="logMsgPattern">%d{HH:mm:ss} %-5level - %msg%n</property>
            <property name="logDir">logs</property><!-- ${sys:testLogDir} -->
        </properties>
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="${logMsgPattern}" />
            </Console>
            <Routing name="Routing">
                <Routes pattern="$${ctx:threadId}">
                    <Route>
                        <RollingFile name="RollingFile-${ctx:threadId}"
                            fileName="${logDir}/${ctx:threadId}.log"
                            filePattern="${logDir}/%d{yyyy-MM-dd}/${ctx:threadId}-%d{yyyy-MM-dd}.log">
                            <PatternLayout pattern="${logMsgPattern}" />
                            <Policies>
                                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                            </Policies>
                        </RollingFile>
                    </Route>
                </Routes>
            </Routing>
        </Appenders>
        <Loggers>
            <Root level="error">
                <AppenderRef ref="Console" />
            </Root>
            <logger name="test" level="INFO" />
            <Root level="INFO">
                <AppenderRef ref="Console" />
                <AppenderRef ref="Routing" />
            </Root>
        </Loggers>
    </Configuration>

1 个答案:

答案 0 :(得分:1)

我尝试使用logback而不是log4j并解决了问题。我可以为多个线程创建多个日志文件。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
    <property name="USER_HOME" value="\logs" />

    <appender name="FILE-THREAD" class="ch.qos.logback.classic.sift.SiftingAppender">

        <!-- This is MDC value -->
        <!-- We will assign a value to 'logFileName' via Java code -->
        <discriminator>
            <key>logFileName</key>
            <defaultValue>head0</defaultValue>
        </discriminator>

        <sift>

            <!-- A standard RollingFileAppender, the log file is based on 'logFileName' 
                at runtime -->
            <appender name="FILE-${logFileName}"
                class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${USER_HOME}/${logFileName}.log</file>

                <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                    <Pattern>
                        %d{yyyy-MM-dd HH:mm:ss} %mdc [%thread] %level %logger{35}
                        - %msg%n
                    </Pattern>
                </encoder>

                <rollingPolicy
                    class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
                    <FileNamePattern>${USER_HOME}/${logFileName}.%i.log.zip
                    </FileNamePattern>
                    <MinIndex>1</MinIndex>
                    <MaxIndex>10</MaxIndex>
                </rollingPolicy>

                <triggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                    <MaxFileSize>10MB</MaxFileSize>
                </triggeringPolicy>

            </appender>

        </sift>
    </appender>