2011-12-12 28 views
4

slf4jを使用して.propertiesファイルからデータを読み込みたいのですが、コンソールでデータを出力することができますが、私がしたいのは、ファイルを出力することです。これは.propertiesファイルで宣言されています。私はslf4jを使用して.propertiesファイルを読むことができません。slf4jを使用して.propertiesファイルを読み込みます

PS:slf4jでのuse.propertiesファイルの使用方法とそのためのロガーファクトリの初期化方法を説明する例が必要です。

+0

どのslf4j実装を使用していますか?例えばlog4j、logback? – artbristol

答えて

4

http://slf4j.org/faq.htmlを参照してください。

SLF4Jはファサードであり、完全な ロギングソリューションは提供されません。アペンダーの設定やログレベルの設定などの操作は、SLF4Jでは実行できません。

slf4j-simpleは特別な設定機能をまったく提供しません。

他の実装では、提供する設定方法を使用する必要があります。

たとえば、slf4j-log4jのlog4j.properties。 http://logging.apache.org/log4j/1.2/manual.html#Configurationを参照してください。

1

slf4jはAPIです。インターフェイスとクラスだけで構成されていると考えると、遠く離れているわけではありません。

必要な動作は、slf4jの場合はlogback、AVSL、JDK14(java.util.logging)、log4jまたはSimpleのいずれかのインターフェイスの実装です。プロパティーを読み取ることができるものもあれば、読み取れないものもありますあなたは

<property file="src/main/java/chapters/configuration/variables1.properties" /> 

詳細についてはhttp://logback.qos.ch/manual/configuration.html#definingPropsを参照してくださいを使用することができますlogbackについては

3

log4jを使用する場合は、「Log4jLoggerAdapter」を使用して、.propertiesファイルの設定を定義することもできます。 以下のコード。

必要ジャー:

slf4j-api-1.7.5.jar 
slf4j-log4j12-1.7.5.jar 

If desired the source code (useful when debugging): 
slf4j-api-1.7.5-sources.jar 
slf4j-log4j12-1.7.5-sources.jar 

テストJavaクラス:

import org.apache.log4j.PropertyConfigurator; 
import org.slf4j.LoggerFactory; 
import org.slf4j.impl.Log4jLoggerAdapter; 


public class Slf4j_log4j_main { 

    private static Log4jLoggerAdapter log = (Log4jLoggerAdapter) LoggerFactory.getLogger(Slf4j_log4j_main.class); 

    public static void main(String[] args) { 
     PropertyConfigurator.configure(Slf4j_log4j_main.class.getClassLoader().getResource("basic/log4j.properties")); 
     log.debug("a debug"); 
     log.info("an info"); 
     log.warn("a warn"); 
     log.error("an error"); 
     //log.fatal("a fatal"); // slf4j misses fatal log. 
     log.trace("a fatal"); 
     System.out.println(""); 
     System.out.println("[INFO]: done"); 
    } 
} 

基本/ log4j.properties

#@FROM: log4j_slf4j.basic 
#@BASED: [BIN319P17]/[BIN319P42] 
#using your own named logger. 

# defining appender file 
log=/home/alsdias/work/dev/java/lab/slf4j/log4j/log4j_slf4j/src/basic 

# root logger setup 
log4j.rootLogger = DEBUG, A1, FILE 

#setting your own named logger. If more loggers, set additivity false (below) 
log4j.logger.log4j.level=INFO,A1 
log4j.additivity.log4j.level=false 

# console appender config 
log4j.appender.A1=org.apache.log4j.ConsoleAppender 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 

# Print the date in ISO 8601 format 
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 

# file appender config 
log4j.appender.FILE=org.apache.log4j.FileAppender 
log4j.appender.FILE.File=${log}/log.out 

#setting the immediate flush to true (default) 
log4j.appender.FILE.ImmediateFlush=true 
#setting the threshold 
log4j.appender.FILE.Threshold=debug 
#setting the append to false, overwrite 
log4j.appender.FILE.Append=false 

#set a layout for the appender 
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.FILE.layout.conversionPattern=%d [%t] %-5p %c - %m%n 

生成された出力:

2013-06-14 11:47:00,473 [main] DEBUG basic.Slf4j_log4j_main - a debug 
2013-06-14 11:47:00,474 [main] INFO basic.Slf4j_log4j_main - an info 
2013-06-14 11:47:00,474 [main] WARN basic.Slf4j_log4j_main - a warn 
2013-06-14 11:47:00,475 [main] ERROR basic.Slf4j_log4j_main - an error 

[INFO]: done 
+0

ありがとうございました。それは、インターネットのサンプルプロパティファイルを取得するために誰と話をしなければならないのですか? – barclay

関連する問題