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.
Update: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].
slf4j simple
を使用する場合は、クラスパスに次のjar
ファイルが必要です。
slf4j
およびlog4j
を使用する場合、クラスパスに次のjar
ファイルが必要です。
これ以上でもそれ以下でもありません。 slf4j simple
を使用すると、INFO
レベル以上でコンソールに基本的なログを取得できます。 log4j
を使用して、 それに応じて構成する にする必要があります。
以下に例を示します。詳細を確認できます http://jkssweetlife.com/configure-slf4j-working-various-logging-frameworks/ および完全なコードをダウンロード here .
Mavenを使用している場合は、pomに次の依存関係を追加します。それ以外の場合は、jarファイルをダウンロードしてクラスパスに配置します
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
Log4j.propertiesを構成する
log4j.rootLogger=TRACE, 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'T'HH:mm:ss.SSS} %-5p [%c] - %m%n
Javaの例
public class Slf4jExample {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(Slf4jExample.class);
final String message = "Hello logging!";
logger.trace(message);
logger.debug(message);
logger.info(message);
logger.warn(message);
logger.error(message);
}
}
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
同じ問題がありました。 log4j apiを直接使用する場合、コードからlog4j.propertiesファイルで独自のカスタムロガーを呼び出しました。 slf4j api呼び出しを使用している場合は、おそらくデフォルトのルートロガーを使用しているため、log4j.propertiesのアペンダーに関連付けるように設定する必要があります。
#ルートロガーレベルをDEBUGに設定し、その唯一のアペンダーをA1に設定します。 log4j.rootLogger = DEBUG、A1 #A1が設定されますConsoleAppenderになるため。 log4j.appender.A1 = org.Apache.log4j.ConsoleAppender