java - 运行应用程序时的警告

标签 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>

最佳答案

我尝试使用 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>

关于java - 运行应用程序时的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33658762/

相关文章:

java - 使用DexClassLoader时如何获取Activity中字段的当前值?

java - 从方法返回,在 "try" block 中还是在 "catch" block 之后?

java - 将 HTML 转换为 PDF 的字符问题

java - 如何在java中从Apache-commons scxml api读取数据模型值

java - 如何将 log4j 添加到使用 OSGI bundle 的 Web 应用程序

Java:sl4j 如何记录所有类?

java - NTEventLogAppender 不适用于我的 Java 应用程序

java - 独立的 Java 应用程序在几天后死掉

java - xml 中的 IntelliJ 14.1 日志记录输出

java - 如何向 OSGI Bundle (Eclipse-Plugin) 提供 log4j.properties?