2016-10-07 4 views
0

JavaのSeleniumでBrowserMobProxy埋め込みモードを使用しています。log4jフレームワークでnet.lightbody.bmp(BrowserMobProxy)ログメッセージを無効にするにはどうすればよいですか?

コンソールに表示されるBrowserMobProxyからのログメッセージを無効にするにはどうすればよいですか? log4propertiesやその他の方法で何とか無効にすることはできますか?

常に表示されるコンソールで不要なログの例:

/537.36 
Accept: image/webp,image/*,*/*;q=0.8 
Referer: http://something.com/styles/html5-touch-template/main-33a42.css 
Accept-Language: en-US,en;q=0.8 
Cookie: _ga=GA1.2.807057776.1475866489 
Accept-Encoding: gzip, deflate, 
Via: 1.1 browsermobproxy 
2016-10-06 21:28:09 -- ProxyToServerConnection.write(ProxyToServerConnection.java:345) - (AWAITING_INITIAL) [id: 0xe29d0002, L:/112.111.1.11:52907 - R:something.com/333.111.1.11:80]: Using existing connection to: something.com/333.111.1.11:80 
2016-10-06 21:28:09 -- ProxyConnection.doWrite(ProxyConnection.java:228) - (AWAITING_INITIAL) [id: 0xe29d0002, L:/192.168.0.10:52907 - R:something.com/184.180.124.162:80]: Writing: DefaultHttpRequest(decodeResult: success, version: HTTP/1.1) 
GET /styles/html5-touch-template/fonts/HelveticaNeueLTStd-Bd.otf HTTP/1.1 
Host: something.com 
User-Agent 

のLog4j:

log4j.rootLogger=INFO, FILE, CONSOLE 
log=src/test/resources 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.Threshold=INFO 
log4j.appender.CONSOLE.Target=System.out 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} -- %C{1}.%M(%F:%L) - %m%n 
log4j.appender.FILE=org.apache.log4j.RollingFileAppender 
log4j.appender.FILE.File=${log}/log.out 
log4j.appender.FILE.MaxFileSize=100KB 
log4j.appender.FILE.MaxBackupIndex=2 
log4j.appender.FILE.Threshold=INFO 
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} -- %-10p %c{1} - %m%n 
log4j.logger.org.apache.http=ERROR 

:)

+0

コンソール出力を生成するコードやlog4j構成ファイル –

+0

@ D.Bの内容など、より詳細な情報を入力してください。:私の質問を詳細で更新しました。ありがとうございました! – Assarin

答えて

0

はEDITをBEGIN助けてください:

私がしたいです次の提案がlog4jプロパティで制御しようとしているクラスが実際にlog4jを使ってコンソール出力を生成している場合にのみ動作します。そうでなければ、log4j構成で制御することはできません。

のEND EDIT

はあなたのlog4j.propertiesによると、あなたは現在、構成された2つのロガーを持っています。それらはルートロガーとorg.apache.httpロガーです。あなたはいくつかの方法であなたの望む結果を達成することができますが、私は最も簡単な解決策だと思います。

残りの部分とは違って扱いたいパッケージやクラスに対して別々のロガーを設定し、そのロガーを振る舞いに応じて設定することをお勧めします。例えば

ここで私はあなたがこれを行うことができますどのように説明するために一緒に入れ、簡単なlog4j.propertiesさ:

Main.java

log4j.rootLogger=WARN, stdout, R 

#In order to treat the test.Main class differntly, 
#I create a separate logger and configure it to send messages to the rolling file appender only. 
log4j.logger.test.Main=INFO, R 
log4j.additivity.test.Main=false 


## general log 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=logs/general.log 
log4j.appender.R.MaxFileSize=1MB 
log4j.appender.R.MaxBackupIndex=1 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%5p %t %d{ISO8601} %c{2} - %m%n 

# Configure a console appender that will be used for messages of any level 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 

# Pattern to output the caller's file name and line number. 
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n 

ここでは、この設定を実証するためのいくつかのクラスです

package test; 

import org.apache.log4j.Logger; 

public class Main { 

    private static final Logger logger = Logger.getLogger(Main.class); 
    public static void main(String[] args) { 
     logger.debug("here's some debug"); 
     logger.info("here's some info"); 
     logger.warn("here's some warn"); 
     logger.error("here's some error"); 
     logger.fatal("here's some fatal"); 
     Main2.main(null); 
    } 

} 

Main2.java

package test; 

import org.apache.log4j.Logger; 

public class Main2 { 
    private static final Logger logger = Logger.getLogger(Main2.class); 
    public static void main(String[] args) { 
     logger.debug("Main2 here's some debug"); 
     logger.info("Main2 here's some info"); 
     logger.warn("Main2 here's some warn"); 
     logger.error("Main2 here's some error"); 
     logger.fatal("Main2 here's some fatal"); 
    } 
} 
ここで
WARN [main] (Main2.java:10) - Main2 here's some warn 
ERROR [main] (Main2.java:11) - Main2 here's some error 
FATAL [main] (Main2.java:12) - Main2 here's some fatal 

は、ログファイルの内容です:

私はここにMainクラスを実行するコンソール出力である

INFO main 2016-10-10 22:53:15,534 test.Main - here's some info 
WARN main 2016-10-10 22:53:15,535 test.Main - here's some warn 
ERROR main 2016-10-10 22:53:15,535 test.Main - here's some error 
FATAL main 2016-10-10 22:53:15,535 test.Main - here's some fatal 
WARN main 2016-10-10 22:53:15,537 test.Main2 - Main2 here's some warn 
ERROR main 2016-10-10 22:53:15,540 test.Main2 - Main2 here's some error 
FATAL main 2016-10-10 22:53:15,540 test.Main2 - Main2 here's some fatal 

メインのみログに、コンソールに出力することはありませんどのように注意してくださいファイル。

0

@ D.B。ご説明をいただき、ありがとうございます。今私にとってもっと明快です。 browserMob Proxyと他のいくつかのクラスからログを記録する際の問題は、slf4jをbrowserMob Proxyの依存関係やその他の依存関係から除外することで解決されました。

関連する問題