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("かなりまずい"); } }