Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。3loggerパッケージ簡単な利用方法ログレベルログ出力のカスタマイズ独自の出力フォーマットを定義するログ出力のカスタマイズ最後に参考資料loggerパッケージloggerパッケージの特徴としては、以下のような点が挙げられます。出力先のデフォルトがコンソールであり指定する必要がないログ出力時に時間、呼び出し元ソースと行数などの出力がある表示が分かりやすい出力フォーマットや出力先など役割毎にカスタマイズできる総じて、前述したloggingパッケージよりも高機能です。Dartのパッケージリポジトリで今回紹介する2つのロガーパッケージの評価をみると、前述したloggingパッケージよりもこちらのパッケージの方が評価が高く、多くのFlutter開発者がこのパッケージの方を支持していることが覗えます。簡単な利用方法リスト7のようなコードを記述すると、図1のような出力になります。e);}図1:ログの出力結果例このように文字情報だけではなく、色や表示枠などで分かりやすい出力になることが魅力です。先のloggingパッケージではlistenを利用して出力方法を実装していましたが、このパッケージではコンソールログ(print結果の出力先)への出力であれば特に何もする必要はありません。ログレベルログレベルには表3のようなレベルがあり、メソッドには各レベルの頭文字(ただし小文字)を利用します。APIと同じようになっています。好みは分かれますが、個人的にはこちらのレベル名称の方が分かりやすいと思います。すべてのログログレベルを設定する場合には、リスト8のように設定します。個別の設定);(1)のように設定する事でデフォルトレベルを設定出来ます。インスタンス毎にレベルを設定する場合には(2)のようにlevelプロパティで設定します。出力されるログはログレベルより重要度が高いものが出力されるのは、前述したloggingパッケージと同様です。ログ出力のカスタマイズログ出力をカスタマイズするには、Loggerインスタンス作成時にリスト9のようにPrettyPrinterクラスを明記します。PrettyPrinterクラスはデフォルトで利用されるクラスですが、さまざまなプロパティがあり、それらを使って出力がカスタマイズできるようになっています。));実行結果が図2です。各プロパティは表4のようになっています。レベル毎の枠の表示をON/OFF独自の出力フォーマットを定義するまた、出力フォーマットはPrettyPrinterを使わず、すべてカスタマイズすることも可能で、リスト10のようにLogPrinterクラスを継承して定義します。}}(1)でLogPrinterを継承してクラスを定義します。(2)のようにlogメソッドで出力フォーマットを定義します。注意すべき点は、(3)のようにログ出力を複数行として分割することが前提になっていることです。図3:CustomPrinterの出力例また、LogEventのプロパティには表5があります。ログメッセージ用のオブジェクト。スタックトレース情報(ログ出力時の第三引数で指定した場合のみ)また、ここでは説明しませんが、Loggerでのoutputプロパティで出力先も変更することが出来、printerと同様の手順でLogOutputを継承したクラスを作成し、指定すれば可能です。ログ出力のカスタマイズログの出力先をカスタマイズするには、LogOutputを継承したクラスを作成することで可能です。リスト11はその実装例です。}}(1)でoutputにカスタマイズしたクラスを指定します。(2)のようにLogOutputを継承します。最後にログ出力はアプリ開発時のデバッグでも有用ですが、実際にはテストや本稼動時の調査時に大変役立ちます。開発当初は最適なログ管理方法がわかりにくく、具体的にどのような個所、もしくはどのような点に注意したらよいかということは、プロジェクトが大きくなったり、テストや実稼動時になって分かってくることも多々あります。そのため、当初は必要でないと思っていても、後に様々なカスタマイズが必要になってきます。今回、紹介したロガーパッケージはそれらのニーズに対してどちらも十分に対応出来ると思いますので、開発当初からログの仕組みを導入しておくことをお勧めします。NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Technologies。執筆コミュニティ「WINGSプロジェクト」代表。NEW1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。NEW1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。NEW1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。12:00法務担当者、6割超が今後業務で「生成AIを使用したい」と回答。NEW新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。