Log4j2 + サーブレット(Tomcat)でとりあえず任意のファイルとコンソールへログ出力する上で最低限すべきことをメモ。ログレベルの制御といったことまでは書いていません。
1. Log4j2のダウンロード
Apache ソフトウェア財団から最新版をダウンロード
2. Log4j2のjarをビルドパスに追加
ダウンロードしたzipにいっぱいjarが入っています。そのうち以下のファイルをWEB-INF/libにコピー。
大抵はコピーした段階でeclipseが自動でビルドパスに追加してくれるはずです。
- log4j-XXX-api-XXX.jar
- log4j-api-XXX.jar
- log4j-core-XXX.jar
- log4j-web-XXX.jar
※XXXの部分にはバージョン番号が入ります。
3. log4j2.xmlの編集
WEB-INF直下に「log4j2.xml」を以下の内容で記述しつつ、ハイライトされている部分を適宜書き換えます。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF">
<Appenders>
<RollingFile name="file"
fileName="C:\XXX\YYY\hogeapp.log" <!-- 書き込んでほしいログファイルの場所 -->
filePattern="C:\XXX\YYY\hogeapp-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="[%date] %-5p %location %m%n"/>
<Policies>
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="256 KB" />
</Policies>
<DefaultRolloverStrategy max="100"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="自分のアプリケーションのパッケージ名" level="trace">
<AppenderRef ref="file" />
</Logger>
</Loggers>
</Configuration>
4. ログ出力のコードを書く
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@WebServlet("/Main")
public class Main extends HttpServlet {
private static Logger logger = LogManager.getLogger();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.warn("まずい");
logger.error("かなりまずい");
}
}