[ILM] GalSync! お前のラブレター (Log) を激しくチェック!
皆様、お元気でしょうか。ぴろとです。
本日は、Galsync が愛してたまらない人に送る、Log とっちゃおうYO!をお送りいたします。最近、ILM ネタが少ないと感じている方もいらっしゃったのではないかと思います。また、数少ないぴろとファンの方、お待たせいたしました。今回の記事は、初期調査でデバッグするのは大変!デバッグスキルを会得するまでを乗り切りたいといった場合、Log機能を使うことで、問題解決をスムースに行うことができるかも!
[Galsync のLog 機能 ]
みなさま、Galsync に Log 機能をついていることをご存知でしょうか。Galsync のプログラムソースは、製品に付属してありますので、Logメソッドが呼ばれているのを見たことがある人もいるかもしれません。というわけで、いざ Galsync の Log 取得機能を使ってみましょう!Let’s Try!
Logging を有効にする手順
====================
1) %ProgramFiles%\Microsoft Identity Integration Server\Extensions フォルダを確認
2) logging.xml を Notepad で開きます。
3) 次のように編集
<rules-extension-properties>
<logging>
<use-single-log>false</use-single-log>
<file-name>galsync.log</file-name>
<logging-level>1</logging-level>
</logging>
</rules-extension-properties>
4) Logging.xml を保存
なんと、本手順で Log が取得できるようになります!指定の方法次第で保存場所など変更することができます。
項目について
=========
<use-single-log>
ひとつのLogファイルを使用するかを定義するためのものとなります。False を定義した場合、それぞれの MA にて Logファイルが取得されます。%ProgramFiles%\Microsoft Identity Integration Server\MaData\<MAの名前> に保存されます。また、True を指定した場合、%ProgramFiles%\Microsoft Identity Integration Server\MaData の直下に Log ファイルが作成され、Logが採取されます。ただし、直下にLog されるものとして、Provision 動作時のエラーであった場合、各MAで発生したエラーとみなされないため、MaData直下のファイルに出力されます。
<file-name>
本指定により、ファイル名を指定することができます。
<logging-level>
本指定により、Logレベルを変更することができます。例としては、3 に深刻なエラーをの場合に出力する場合、ログレベルを3 を設定することで、深刻なエラーのみをログさせるといったことができるようになります。
これで、Galsync の Log 機能が有効になります。My 拡張ルールでログしたくなったYoというHipHop なプログラマの方は、実装しちゃいましょう
==========
[Logging クラスについて ]
Loggingクラス自体もプログラムソースが提供されていますので、確認いただくことが可能です。ここでは、規定の Logging クラスの動作を元に、VBを使用して、作成してみます。
1) 参照設定に Logging.dll を追加します。
2) Imports Microsoft.MetadirectoryServices.Logging を追加します。
3) ログを出力したいところにて、Log(“出力したい文字列”) を指定します。
これだけで、Log が採取できます。また、Log メソッドですが、
Public Sub Log( _
ByVal logMessage As String, _
ByVal addTimeStamp As Boolean, _
ByVal loggingLevel As Int32 _
)
と定義されており、addTimeStamp/loggingLevel を省略した場合、addTimeStamp = True, loggingLevel = 1 が使用されます。例えば、致命的なエラーが発生した際のみLogをとりたいといった場合、
Log(“致命的なエラー発生”,True,3) と指定した場合、タイムスタンプが採取されかつ、logging.xml に、<logging-level> に 3 を指定することで、取得できるようになります。
Logをとることで、いろいろ試すことができるようになると思います。たとえば、Provision の際に、どのMA に対してどのオブジェクトが対象となったとか、実装次第でいろんなことができるかと思います。ぜひお試しください!
~ぴろと~
ミニ四駆 / Mini-z はじめました。