log4j2を使う
個人開発で一からlog4j2を使うので備忘録です。
Log4j2を使用するには
Apache Log4j Core
Apache Log4j API の2つが必要です。
mavenリポジトリから取ってきます。現時点で最新のバージョンの2.18.0をダウンロードします。
https://mvnrepository.com/artifact/org.apache.logging.log4j
ライブラリをダウンロードしたら、log4j2の設定ファイルを作成します。 設定は色々ありますがざっくりと見ると
・ログの出力パターンレイアウト
・ログの出力場所
・ログローテート
を定義しています。
設定ファイルはクラスパスが通っているフォルダ(src配下など)に置くことで自動的に読み込まれます。
形式は.properties、.yml、.json、.xml
が使用できるようです。一般的にはxmlファイルで書かれます。
ファイル名はlog4j2-test.xml
またはlog4j2.xml
とつける必要があります。
以下、log4j2.xmlの使用例です。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration> <Configuration status="OFF"> <Properties> <Property name="layout">%d{yyyy-MM-dd HH:mm:ss.SSS}, %level, %t, %c, %m%n</Property> </Properties> <Appenders> <Console name="console" target="SYSTEM_OUT"> <PatternLayout pattern="${layout}" /> </Console> <RollingFile name="file" fileName="/log/log4j2.log" filePattern="/log/%d{yyyyMM}/log4j2_%d{yyyyMMdd}_%i.log"> <PatternLayout pattern="${layout}" /> <Policies> <SizeBasedTriggeringPolicy size="20 MB" /> <TimeBasedTriggeringPolicy /> </Policies> <DefaultRolloverStrategy max="10" /> </RollingFile> </Appenders> <Loggers> <Root level="all"> <AppenderRef ref="console" /> <AppenderRef ref="file" /> </Root> </Loggers> </Configuration>
<Configuration> ・・・log4j2自身のログを出力するかどうかをstatus属性で指定できる。通常はoff <Properties> ・・・設定ファイル内で使用するプロパティを設定できる。何度も使用するものはここに記載しておく。 PatternLayout ・・・ %d 日時、%level ログレベル、%t スレッド名、%c ロガー名、%m ログメッセージ、%n 改行 <Appenders> ・・・ログの出力方式、ログローテートの設定を行う <Console> ・・・コンソールにログを出力する。 <RollingFile> ・・・ログファイルの出力場所、ファイル名、ログローテートの設定。 <Loggers> ・・・ログを出力するJavaパッケージ、ログレベル、ログの出力先を指定する。 <Root> ・・・Appenderに対して一律の設定を行います。
Gradleについて
最近Gradleを勉強しているので、その書き残し。
Gradleとは
2007年頃に開発がスタートし、SpringフレームワークやAndroidアプリケーション開発のビルドツールとして採用されるなどで注目される。
大きな特徴としてはビルドスクリプトを「シンプルに記述出来る」という点。
また、AntやMavenと言った既存のビルドツールを活用しているため、既存の資産を活かしてGradleを取り込めます。
ビルドツールとは
・テストを実行してテスト結果やカバレッジ測定結果を出力する。
・Javadocなどのドキュメントを生成する。
・jarやwarを生成する
・ライブラリを自動でダウンロードし、依存関係の解決を行う
Javaの主なビルドツール
Ant
提供機能は多くないため、シンプルで使いやすい。
しかし、複雑なことをするにはビルドスクリプトが冗長になってしまい、メンテナンスが困難になる。
ライブラリの依存関係を管理できないため、手作業での解決となる。
POM(プロジェクトオブジェクトモデル)という概念を持ち、Antのビルドスクリプトが冗長するという弱点を解決。
POMにメタデータを持たせることでライブラリの依存関係を自動的に解決することができるようになる。高機能だが仕様の理解が重要であり、仕様外のことをするのは難易度が高い。
Gradle
Antの柔軟性とMavenの依存性解決という良い点を組み合わせ、シンプルなスクリプトで記述が出来る。言語はGroovy言語で書かれている。GroovyとJavaは言語として似ている部分があり、Javaエンジニアにとっては理解しやすい。
便利機能
Gradle ラッパー
プロジェクトにGradleを導入する際、メンバーや担当者がGradleをインストールする必要がない。
GradleにはGradleラッパー機能というものがあり、gradleプロジェクトのフォルダを配布するだけ、インストール不要でビルドや各タスクを実行することが出来る。
通常Gradleの実行にはコマンド gradle ~~ の用に指定するが、未インストール環境では gradlew ~~ の用にwを一文字つけるだけで同じようにタスクを実行出来る。