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

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

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

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


当前回答

我已经创建了文件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

现在我去掉了警告和错误

其他回答

尝试将log4j:configuration节点中的调试属性设置为true。

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">

它在读取配置文件时输出信息,并用于配置log4j环境。你可能会得到更多细节来解决你的问题。

虽然正确地设置log4j对于“真正的”项目很好,但你可能想要一个快速而肮脏的解决方案,例如,如果你只是在测试一个新库。

如果是,则调用静态方法

org.apache.log4j.BasicConfigurator.configure();

将在控制台设置基本日志记录,错误消息将消失。

可以使用setLevel()设置日志级别。

这些级别对于轻松设置希望程序显示的信息类型非常有用。

例如:

Logger.getRootLogger().setLevel(Level.WARN); //will not show debug messages

可能的级别集是:

跟踪, 调试、 信息, 警告说, 错误和 致命的

根据日志服务手册

简单地说,创建log4j。src/main/assembly文件夹下的属性。根据您希望日志消息显示在控制台中还是显示在您修改的文件中。下面的代码将在控制台中显示您的消息。

# Root logger option
log4j.rootLogger=INFO, stdout

# 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.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

这是使用.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