【Hinemos 監視】ログファイル監視でJavaのStackTraceを監視する
投稿日: / 更新日:
この記事は2年以上前に書かれたものです。情報が古い可能性があります。
こんにちは!
今回は、ログファイル監視についてのお話です。
ログファイル監視は、その名の通りアプリケーションにより出力された
ログファイルを監視することができる監視項目です。
このログファイル監視を使って、JavaのStackTraceを監視することが今回の目標となります。
まずは、ログファイル監視についておさらいしましょう!
1.ログファイル監視とは?
監視対象ノードのファイルに出力されるログ対してフィルタ処理を行い、
出力されたログが指定のマッチ条件と一致した場合、通知する機能です。
ログファイル監視を利用することで、アプリケーションなどが
出力するログファイルを監視し、特定のログが出力されたら通知を行うことができます。
このログファイル監視ですが、基本的には、ファイル情報タブの
「ディレクトリ」と「ファイル名(正規表現)」からどのファイルを
監視するかを設定するだけで、監視は行えます。
ただし、区切り条件を設定せずに監視を行うと、
Hinemosでは一行を一ログとして認識し、監視を実施します。
従って、JavaのStackTraceのような、複数行で意味を持つようなログを監視する場合、
ログの長さを指定する必要があります。
2.設定例
今回は、以下のようなログを監視してみます。
1 2 3 4 5 6 7 |
2020-02-18 11:33:08.754 WARNING [StackTraceTest formatInt] java.lang.NumberFormatException: For input string: "0.1" java.lang.NumberFormatException: For input string: "0.1" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.(Integer.java:867) at StackTraceTest.formatInt(StackTraceTest.java:20) at StackTraceTest.main(StackTraceTest.java:51) |
※ログの出力形式については、先頭に日時が出力されるように設定しています。
ログ内容についての詳しい解説は省きますが、
今回は、int型に”0.1″という小数を渡して、
“NumberFormatException”を出力しています。
こちらをログファイル監視で監視してみますが、
今回は、区切り条件が違う以下の2つの監視設定で違いを確認してみようと思います。
今回は、最初に”yyyy-MM-dd hh:mm:ss.fff”の形式でログが出力されているため、
この部分を先頭パターンとして正規表現で設定します。
先頭パターンの設定内容は以下の通りです。
1 |
[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{1,3} |
以下が、それぞれの監視で得られた監視結果です。
①の「イベントの詳細(左図)」と「詳細メッセージ(オリジナルメッセージ)(右図)」
②の「イベントの詳細(左図)」と「詳細メッセージ(オリジナルメッセージ)(右図)」
このように改行コードLFでは、詳細メッセージを見ると分かる通り、
一行ごとに判定が行われていることが分かります。
対して、先頭パターンを使用した場合は、
StackTrace全体が判定対象となっていることが分かります。
3.終わりに
今回は、StackTraceを監視しましたが、その他の複数行に亘るログでも、
同様に出力パターンを設定することで監視可能です。
それでは、また!