概要
Azure App ServiceにデプロイしたJavaアプリケーションからLogbackを使用してログ出力します。
Application InsightsというAzureのアプリケーション診断機能を出力先とします。
下記の内容を最小限の構成で導入したものになります。
Application Insights を使用した Java トレース ログの探索
Application Insights SDK for Javaの導入が前提となっているので、下記の手順の一部も実施します。
Java Web プロジェクトで Application Insights を使う
準備
Application Insights
Application Insightsが無い場合は作成します。
App ServiceのApplication Insightsを選択すると作成するよう促されます。
環境変数
Application Insightsの概要に表示されているインストルメンテーションキーを環境変数に設定します。
App Serviceのアプリケーション設定→アプリ設定に下記のキーの値にインストルメンテーションキーを入力します。
APPLICATION_INSIGHTS_IKEY
Maven
依存情報に以下を追加します。
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-logback</artifactId>
<version>1.0.6</version>
</dependency>
Application Insights SDK for Javaとして、下記のいずれかの依存情報が必要となります。
applicationinsights-core
applicationinsights-web
単純にログ出力するだけであれば、coreのみで可能です。
applicationinsights-logging-logbackがcoreに依存しているので、前述の依存情報のみで充足します。
logback.xml
logback.xmlにApplication Insights用のAppenderを定義します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE logback>
<configuration>
<appender name="aiAppender"
class="com.microsoft.applicationinsights.logback.ApplicationInsightsAppender">
</appender>
<root level="trace">
<appender-ref ref="aiAppender" />
</root>
</configuration>
実装
あとはLogbackとして通常のログ出力するだけです。
Logger logger = LoggerFactory.getLogger(MyClass.class);
logger.trace("Logback to Application Insights");
実行結果
Application Insightsの概要→検索にトレースとして表示されるようになります。
私の環境では反映されるまでにタイムラグがありました(1分くらい?)。
まとめ
Azure App ServiceでJava使ったログ出力の情報が少ないです。
ASP.NETだとSystem.Diagnosticsを使ってアプリケーション診断に記録できるとかあるのですが。
Application Insightsを使うのが妥当なのかは不明ですが、とりあえずログ出力するという目的は達成できました。
参考
Application Insights を使用した Java トレース ログの探索
Java Web プロジェクトで Application Insights を使う
Azure App Service の Web アプリの診断ログの有効化