在添加log4j到我的应用程序后,每次执行我的应用程序时,我都会得到以下输出:

log4j:WARN No appenders could be found for logger (slideselector.facedata.FaceDataParser).
log4j:WARN Please initialize the log4j system properly.

这似乎意味着一个配置文件丢失了。 这个配置文件应该放在哪里,一个好的开始内容是什么?

我正在使用纯java开发桌面应用程序。所以没有网络服务器等等…


当前回答

如果我们在log4j之上使用apache公共日志包装器,那么我们需要在类路径中有两个可用的jar。同时,通用日志。属性和log4j。Properties /xml应该在类路径中可用。

我们还可以传递实现类和log4j。使用- doorg .apache.commons.logging. log =<日志实现类名> -Dlog4j. log =<日志实现类名>。配置=<文件:log4j的位置。/ xml文件>属性。在应用/web服务器的情况下,通过设置JAVA_OPTS也可以做到这一点。

它将有助于外部化可以在部署中更改的属性。

其他回答

你在发展什么?您是否使用Apache Tomcat?

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyyMMdd HH:mm:ss.SSS} [[%5p] %c{1} [%t]] %m%n

我在我的Java应用程序中有一个这样的属性。

找到一个log4j。属性或log4j.xml,它具有根追加器,并将其放在类路径中。

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.rootLogger=debug, stdout

将登录到控制台。我更喜欢记录而不是文件,这样您就可以事后进行调查。

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.maxFileSize=100KB
log4j.appender.file.maxBackupIndex=5
log4j.appender.file.File=test.log
log4j.appender.file.threshold=debug
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=debug,file

尽管对于详细日志记录应用程序,100KB通常需要增加到1MB或10MB,特别是调试。

我个人设置了多个记录器,并将根记录器设置为警告或错误级别,而不是调试级别。

如果您在Intellij IDEA上出现此错误,即使添加了log4j。如果您的资源测试文件夹中存在log4j. properties或log4j.xml文件,可能Intellij IDEA还不知道该文件的存在。

因此,在添加文件之后,右键单击该文件并选择Recompile log4j.xml。

Maven的解决方案:

我遇到了所有与上面相同的问题,对于maven解决方案,我使用了2个依赖项。如果您希望一个简单的项目使用一个标准配置的日志记录器,那么此配置仅用于快速测试。我可以想象,如果您需要更多信息或调整自己的日志级别,您稍后会想要制作一个配置文件。

    <properties>
        <slf4jVersion>1.7.28</slf4jVersion>
    </properties>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4jVersion}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14</artifactId>
            <version>${slf4jVersion}</version>
        </dependency>

对我来说,解决办法是添加“log4j”。将“属性”放入“src”文件夹。