53

SLF4Jの「Hello World」の例がうまくいきません。これは、クラスパスに slf4j-log4 を追加したためだと思います。hello world が機能するように log4j を直接設定する必要がありますか?

log4j:WARN No appenders could be found for logger (HelloWorld).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

更新: log4j の初期化を追加しましたが、まだ機能しません:

public static void main(String[] params) {
        org.apache.log4j.Logger.getRootLogger().addAppender(new ConsoleAppender());
        Logger logger = org.slf4j.LoggerFactory.getLogger(TestBase.class);
        logger.info("Hello World");
    }

そして、私は得ています:

log4j:ERROR No output stream or file set for the appender named [null].
4

5 に答える 5

83

を使用する場合は、クラスパスに次のファイルslf4j simpleが必要です。jar

  • slf4j-api-1.6.1.jar
  • slf4j-simple-1.6.1.jar

slf4jとを使用する場合は、クラスパスに次のファイルlog4jが必要です。jar

  • slf4j-api-1.6.1.jar
  • slf4j-log4j12-1.6.1.jar
  • log4j-1.2.16.jar

それ以上でもそれ以下でもありません。を使用すると、レベル以上slf4j simpleのコンソールに基本的なログが記録されます。INFOを使用する場合は、それに応じて構成log4jする必要があります。

于 2010-11-30T06:40:42.250 に答える
4
you need to add 3 dependency ( API+ API implementation + log4j dependency) 
Add also this 
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.5</version>
</dependency>

# And to see log in command line , set log4j.properties 

# Root logger option
log4j.rootLogger=INFO, file, 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

#And to see log in file  , set log4j.properties 
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./logs/logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
于 2016-02-22T06:59:35.753 に答える
0

私も同じ問題を抱えていました。log4j api を直接使用する場合、コードから log4j.properties ファイルで独自のカスタム ロガーを呼び出しました。slf4j API 呼び出しを使用している場合は、おそらくデフォルトのルート ロガーを使用しているため、log4j.properties でアペンダーに関連付けるように構成する必要があります。

    # ルート ロガー レベルを DEBUG に設定し、その唯一のアペンダーを A1 に設定します。
    log4j.rootLogger=DEBUG、A1

    # A1 は ConsoleAppender に設定されます。
    log4j.appender.A1=org.apache.log4j.ConsoleAppender

于 2014-03-02T22:27:49.577 に答える