私は最近、Java Webサービスアプリでlog4jをv1.2からv2.6.2に更新しました。このアプリケーションはJava 7.0_67-b01を使用してTomcat 7.0.21でホストされています。 Eclipse Juno(v4.2.0)を使用したコーディング/コンパイル。log4j2ファイルが作成されましたが、書き込まれません。
log4j.properties機能を新しいlo4j2.xml構成ファイルに再現しました。コードサンプルは以下の通りですが、標準のコンソールアペンダに加えてRollingFileアペンダとFileアペンダを使用しようとしています。
ログファイルは予想される場所に作成されていますが、空のままです。コンソール自体は、私のアプリがスローするすべてのメッセージを記録しています。カタリナ。 yyyy-mm-dd .logファイルが情報レベル以上のログです。前述のように、tearsLog.logファイルとtearsLogRF.logファイルは作成されますが、ログメッセージはまったく書き込まれません。
log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace">
<Properties>
<Property name="log-path">${sys:catalina.home}/logs</Property>
</Properties>
<Appenders>
<Console name="Console"
target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %t [%t] (%F:%L) - %m%n" />
</Console>
<File name="MyFile"
append="true" immediateFlush="true"
fileName="${log-path}/tearsLog.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %t [%t] (%F:%L) - %m%n" />
</File>
<RollingFile name="MyRollingFile"
append="true" immediateFlush="true"
fileName="${log-path}/tearsLogRF.log"
filePattern="${log-path}/tearsLogRF_%d{yyyy-MM-dd_HH-mm-ss}.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %t [%t] (%F:%L) - %m%n" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100 KB" />
</Policies>
<DefaultRolloverStrategy max="10" />
</RollingFile>
</Appenders>
<Loggers>
<Logger name="us.ak.state.adfg.tears.service.TearsService" level="info" additivity="false">
<AppenderRef ref="Console" />
<AppenderRef ref="MyFile" level="trace" />
<AppenderRef ref="MyRollingFile" />
</Logger>
<Logger name="us.ak.state.adfg.tears.data.GenericDao" level="info" additivity="false">
<AppenderRef ref="MyFile" level="trace" />
<AppenderRef ref="MyRollingFile" />
</Logger>
<Logger name="us.ak.state.adfg.tears.data.EmployeeDao" level="info" additivity="false">
<AppenderRef ref="MyFile" level="trace" />
<AppenderRef ref="MyRollingFile" />
</Logger>
<Logger name="us.ak.state.adfg.tears.data.TimesheetDao" level="info" additivity="false">
<AppenderRef ref="MyFile" level="trace" />
<AppenderRef ref="MyRollingFile" />
</Logger>
<Logger name="us.ak.state.adfg.tears.data.SecurityDao" level="info" additivity="false">
<AppenderRef ref="MyFile" level="trace" />
<AppenderRef ref="MyRollingFile" />
</Logger>
<Root level="debug">
<AppenderRef ref="Console" />
<AppenderRef ref="MyFile" level="trace" additivity="false" />
<AppenderRef ref="MyRollingFile" additivity="false" />
</Root>
</Loggers>
</Configuration>
サンプル*のの.javaクラス:私は離れて暴れるしてきた
package us.ak.state.adfg.tears.service;
import java.util.Date;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class TearsService {
static Logger log = LogManager.getLogger(TearsService.class);
public TearsService() {
}
public int saveTimesheet(User user, Timesheet ts) throws Exception {
String msg = "";
if (user == null) {
msg = "Null user.";
log.error(msg);
throw new Exception(msg);
}
...
return 0;
}
、多くの、多くのコードサンプル、Apacheのlog4jのドキュメントとSOの質問を見て/答え、使用されたサンプルコードと提案...何が間違っているのか理解できません。私はそれが近くにあることを知っている、ちょっとしたちょっとしたことが、私がそれを動かすのを止めさせている。助けていただければ幸いです。事前にありがとうございます...
コメントには投稿しないでください。質問を編集します。コメントを削除します。 – Andreas