私のアプリケーションでアクションを記録するためにlog4jを使用しています。私は以下のファイルアペンダを使用します:log4jを使用してサードパーティのコンソールログを取得する方法
private FileAppender getFileAppender(String name) {
PatternLayout layout = new PatternLayout("%d{ABSOLUTE} %5p %t %c{1}:%M:%L - %m%n");
StringBuilder filePath = new StringBuilder();
filePath.append("logs/")
.append(name)
.append(".log");
FileAppender fileAppender = null;
try {
File file = new File(filePath.toString());
file.getParentFile().mkdirs();
file.createNewFile();
fileAppender = new FileAppender(layout, filePath.toString(), true);
fileAppender.setName("FileAppender");
fileAppender.setAppend(true);
} catch (IOException e) {
LogWrapper.LOG.get(this.getClass().getSimpleName()).trace(e);
}
return fileAppender;
}
私のアプリケーションは、Webサービスがコンソールに呼び出すログを第三者に使用しています。その後、アプリケーションを実行すると、Intellij Ideaのコンソールにログが表示されますが、生成されたログファイルは表示されません。
これらのログをFile Appenderによって生成されたファイルにリダイレクトする方法はありますか。
更新 答えは正しいですが、プロパティがどのように見えるコンソールアペンダを持つものを使用logback 1つの以上の第三者があります。このため、キャッチコンソール出力スタックの
<configuration status="OFF">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<root level="WARN">
<appender-ref ref="STDOUT" />
</root>
。 Logbackプロパティを捕捉して書き直し、ファイルにログを記録させたり、ログをまったく使用不可にするにはどうすればいいですか?
私は(外部レポーターなし)のTestNGを使用してテストを実行する場合解決策は完璧に動作しているため、コンソールに私の他の第三者ログの1つのように見えますが、その後、私はちょうどそれをGradleの使用スイートを実行スタック。サードパーティのログプロパティを取得して再書き込みしてコンソールにログインしないようにすることはできますか?あるいは、私はこの前提にまったく当てはまらないのですか? – khris
このサードパーティが適切なログライブラリ(Log4j 1/2、Logback、JUL、...)を使用している場合、この設定ファイルをロードする前にログ設定ファイルを編集する必要があります。しかし、この第三者がハードコーディングされた "System.out.println()"を使用すると、あなたは立ち往生します。 – xav
このようなサードパーティのログプロパティをキャッチして調整する方法を教えてください。 – khris