2009-05-28 6 views
11

私は非常に単純な問題がありますが、解決策を見つけることができません。 私はファイルハンドラを追加したロガーを持っていますが、それでも私のコンソールからは逃げ出してしまいます。 どのようにすれば、すべての出力をファイルに出力するようにロガーを設定することができますか?Java Loggerはファイルにのみ出力され、画面出力はありません

+1

感嘆符は、この質問は本当に思われてしまいますエキサイティング。 – jjnguy

+1

どのフレームワークをロギングしますか? –

答えて

5

ファイルハンドラを追加する前に、すべてのハンドラをルートロガーから削除します(Logger.getHandlers()を使用し、ハンドラごとにLogger.removeHandler()を呼び出します)。

+0

Logger.getHandlers()は私のケースでは0ハンドラを返します –

+0

FileHandlerを追加すると、ハンドラのサイズは1になります –

8

何がコンソールに書き込まれないことを保証する最も簡単な方法は置くことです:

java.util.logging.ConsoleHandler.level = NONE 

をごロギング構成ファイルで。他の開発者を支援することが、

16

旧質問:

また、単にあなたのロガーにlogger.setUseParentHandlers(false)を使用することができます。

import org.apache.log4j.Logger; 

Logger logger = Logger.getLogger("com.whatever"); 
PropertyConfigurator.configure("file-log4j.properties"); 

とfile-log4j.propertiesであなたの表示レベルを設定して

+0

他のどの回答よりもはるかに簡単です。 –

+0

これは、最新かつ簡単で効果的な答えです。 – charneykaye

1

利用のlog4j:

私が使用
# Root logger option 
log4j.rootLogger=INFO, file 

# Direct log messages to a log file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=index-service.log 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=1 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
log4j.appender.file.Append=false 
0

Logger logger = Logger.getLogger("MyLog"); 
    Logger parentLog= logger.getParent(); 
    if (parentLog!=null&&parentLog.getHandlers().length>0) parentLog.removeHandler(parentLog.getHandlers()[0]); 
関連する問題