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

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

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

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


当前回答

如前所述,有两种方法

首先是将这一行添加到你的main方法中:

BasicConfigurator.configure();

第二种方法是添加这个标准log4j。属性文件到你的类路径:

在采用第二种方法时,您需要确保正确地初始化了文件。

Eg.

Properties props = new Properties();

props.load(new FileInputStream("log4j property file path"));

props.setProperty("log4j.appender.File.File", "Folder where you want to store log files/" + "File Name");

确保创建了存储日志文件所需的文件夹。

其他回答

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>
import org.apache.log4j.BasicConfigurator;

调用这个方法

BasicConfigurator.configure();

要启用-Dlog4j.debug,我进入系统,高级系统设置,环境变量,并设置系统变量_JAVA_OPTIONS为-Dlog4j.debug。

这是使用.yaml的另一种方法

逻辑结构:

Configuration:
    Properties:
    Appenders:
    Loggers:

示例:

Configutation:
    name: Default

    Properties:
        Property:
            name: log-path
            value: "logs"

    Appenders:

        Console:
        name: Console_Appender
        target: SYSTEM_OUT
        PatternLayout:
            pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"

       File:
          name: File_Appender
          fileName: ${log-path}/logfile.log
          PatternLayout:
            pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"

    Loggers:

        Root:
            level: debug
            AppenderRef:
              - ref: Console_Appender

        Logger:
            - name: <package>.<subpackage>.<subsubpackage>.<...>
              level: debug
              AppenderRef:
                 - ref: File_Appender
                 level: error             

参考:LOG4J 2配置:使用YAML

我已经创建了文件log4j。hibernate.cfg.xml文件旁边的资源文件夹中的属性,并用下面的文本填充:

log4j.rootLogger=INFO, CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}:%L] %m%n

现在我去掉了警告和错误