JUL->Log4J2でログを出す

FessではLog4J2を利用しているが、Java標準のロギングのjava.util.loggingのログをLog4J2経由で出せていなかった…。なので、メモがてらに。

やらなきゃならないこととしては、依存関係にorg.apache.logging.log4j:log4j-julをまずは追加する。

あとは、起動時のシステムプロパティに以下を追加する。

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

とすれば、Log4J2で指定したものでログが出てくる。詳しいことはここを参照。

AdoptOpenJDKをパッケージで入れる

ここの情報によると、AdoptOpenJDKでようやくオフィシャルなRPMとDEBファイルが提供されるようになったらしい。というわけで、Ubuntu 18.04に入れてみる。

# wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add -
# echo deb https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ bionic main > /etc/apt/sources.list.d/adoptopenjdk.list
# apt-get update
# apt-get install adoptopenjdk-11-hotspot

という感じで簡単にインストールできる。

$ java -version
 openjdk version "11.0.3" 2019-04-16
 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.3+7)
 OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.3+7, mixed mode)

デフォルトが変わらないようであれば

# update-alternatives --config java

をして切り替える。

Java9で日付のフォーマット変更

Java 11を真面目に使い始めて遭遇したのだが、Java 8まではDateFormat#getDateTimeInstanceで”M/d/yy h:mm a”のDateFormatが返ってきたけど、Java 9からは”M/d/yy, h:mm a”という感じで微妙にカンマが入る。ということで、今までどおりにパースはできない…。

JDK-8152154を見ると、-Djava.locale.providers=COMPAT,CLDR JI9032375 というオプションで前のも使えるらしい。