IntelliJ (JetBrains IDE) ファミリー向けのプラグイン開発をしていて、ログ出力まわりが少々わかりにくかった*1のでメモ。
プラグインからのログ出力
プラグインからログを出力するには、 com.intellij.openapi.diagnostic.Logger
を使います。
Javaの場合
Logger log = Logger.getInstance(getClass()); log.trace("trace!!!"); log.debug("debug!!!"); log.info("info!!!"); log.warn("warn!!!"); log.error("error!!!"); log.error("例外を渡すことも可能", new Throwable());
Kotlinの場合*2
val log = Logger.getInstance(javaClass) log.trace("trace!!!") log.debug("debug!!!") log.info("info!!!") log.warn("warn!!!") log.error("error!!!") log.error("例外を渡すことも可能", Throwable())
サンドボックス実行環境のログ出力先
Gradle > runIde で実行すると起動するサンドボックスでは、ログはプロジェクトのルートディレクトリ下 /build/idea-sandbox/system/log/idea.log に出力されます。
idea.logは、Runウィンドウで見られるようにしておくと便利です。 Run > Edit Configurations... を開き、Gradle > runIde の"Logs"タブで"+"アイコンをクリックしてidea.logのパスを追加します。
すると、Runウィンドウにタブが追加されるようになり、そこで idea.log を確認できます。
なお、タブの右方にあるテキストフィールドでログの絞り込み、その左隣のドロップダウン(上図では"all")で表示するログレベルの変更ができます。
実際のログ出力先
プラグインをビルドした後、正規のルートでIntelliJ IDEAなどにインストールして使用するとき、ログはmacOSでは ~/Library/Logs/JetBrains/IntelliJIdea2020.1/idea.log に出力されます。
IDEをJetBrains TOOLBOXからインストールしていれば、TOOLBOXを開いて目的のIDEの右の六角形 > Settings にある "Show logs directory" ボタンで idea.log の場所がFinderで開きます。
なお、2020.1から、ログだけでなく、設定、キャッシュ、プラグインの格納場所が変更になっています。 2019.3以前の情報も含めてまとめられたページを教えていただきました。
こちらのページにもまとめております。ご参考まで https://t.co/9IT27OJB6C
— ユースケ / Yusuke (@yusuke) 2020年4月17日
ログレベルの変更
Diagnostic loggerのログ出力レベルのデフォルトは INFO
です。 DEBUG
まで出力するには、 Help > Diagnostic Tools > Debug Log Settings… を開き、改行区切りで #
+ パッケージ名もしくはクラスのFQCNを設定します*3。
ダイアログに書いてあるとおり、TRACE
まで出力するにはパッケージ名もしくはFQCNの後ろに :trace
を付けます。
なお、いずれも、開発中のサンドボックス実行環境の場合、runIdeで起動された側(サンドボックス側)のIDEで設定する必要があります。
参考
プラグイン開発に関しては、公式ドキュメントにある程度の情報が載っています。日本語版もちゃんと更新されています*4。
IntelliJ プラットフォーム SDK / IntelliJ プラットフォーム SDK プラグイン開発ガイド
IntelliJ Platform SDK / IntelliJ Platform SDK DevGuide
少し込み入った話になると、ヘルプセンターがヒットしたりはします。