本節では、Systemwalkerスクリプトのデバッグ例として以下の2つの例を説明します。
デバッグで使用するコマンドの組み込み例
トレースレベルの変更の仕方の例
デバッグで使用するコマンドの組み込み例
“16.3 デバッグで使用するコマンド”をスクリプト内に組み込んだ例を以下に示します。
例:引数で渡されたファイルを読み込むスクリプト
スクリプトファイル | level (注) | 出力内容 |
---|
# トレースオープン # 実運用時は"level 2"を削除のこと set Trchwnd [sw_TcOpenTrace -level 2 /var/log/G001] if {$Trchwnd < 0} { puts stderr "Trace open err" exit 1 } # 起動ログ出力 sw_TcWriteTrace $Trchwnd "業務001 START" # ファイル名取得 set filename [lindex $argv 0] sw_TcWriteTrace -level 2 $Trchwnd "Input file name: $filename" # 動作制御ファイルオープン if {[catch { set cid [open $filename r] }]} { # open のエラーをキャッチした場合 # エラーログ出力 sw_TcWriteTrace $Trchwnd "File open err (filename :$filename)" sw_TcCloseTrace $Trchwnd exit 1 } sw_TcWriteTrace -level 2 $Trchwnd "File opened " # ファイル読み込み set rc [gets $cid buf] if {$rc == -1} { # ファイルが空のため読み込みバッファにデフォルト値を設定する sw_TcWriteTrace -level 2 $Trchwnd "File empty " set buf 100 } sw_TcWriteTrace -level 2 $Trchwnd "Gets data: $buf" close $cid … # 終了ログ出力 sw_TcWriteTrace $Trchwnd "業務001 END" sw_TcCloseTrace $Trchwnd |
1
2
1
2
2
2
1
|
動作ログ
スクリプト内情報 (ルートチェック)
エラーログ
ルートチェック
ルートチェック
スクリプト内情報 (ルートチェック)
動作ログ
|
- 注)
levelの欄は、トレースレベルを表します。
トレースレベルのデフォルトは1のため、1の場合はコマンド内での指定を省略しています。
トレースレベルの変更の仕方の例
トレースレベルの指定は、Systemwalkerスクリプト内に記述するトレース拡張コマンドのオプションで行います。Systemwalker Operation Managerでの運用中にトレースレベルの変更が必要になった場合、スクリプト内を直接修正するのは困難なため、以下に示すような方法により、スクリプトを変更せずにトレースレベルを変更可能にしておくことができます。
スクリプトの引数による指定
スクリプト起動時の引数によりトレースレベルを受け渡します。
例:第1引数がトレースレベルを表す場合【Windows版】
# 第1引数からトレースレベル取得 set trclevel [lindex $argv 0] # 指定値チェック if {$trclevel < 0 || $trclevel > 2} { # 指定値エラー puts stderr "trace level err :$trclevel" exit 1 } # トレースオープン set Trchwnd [sw_TcOpenTrace -level $trclevel {c:\var\log\G001.trc}] … sw_TcCloseTrace $Trchwnd exit 0 |
例:第1引数がトレースレベルを表す場合【UNIX版】
# 第1引数からトレースレベル取得 set trclevel [lindex $argv 0] # 指定値チェック if {$trclevel < 0 || $trclevel > 2} { # 指定値エラー puts stderr "trace level err :$trclevel" exit 1 } # トレースオープン set Trchwnd [sw_TcOpenTrace -level $trclevel /var/log/G001.trc] … sw_TcCloseTrace $Trchwnd exit 0 |
外部ファイルによる指定
トレースレベルを記述したファイルからトレースレベルを読み込むようにします。
- 例:
トレースレベル定義ファイルc:\home\etc\trclevelにレベルが記述されている場合【Windows版】
# トレースレベル記述ファイルのオープン,読み込み,クローズ if {[catch { set cid [open {c:\home\etc\trclevel} r] gets $cid trclevel close $cid }]} { # トレースレベル記述ファイルのエラー puts stderr "Can not read {c:\home\etc\trclevel}" exit 1 } # 指定値チェック if {$trclevel < 0 || $trclevel > 2} { # 指定値エラー puts stderr "trace level err :$trclevel" exit 1 } # トレースオープン set Trchwnd [sw_TcOpenTrace -level $trclevel {c:\var\log\G001.trc}] … sw_TcCloseTrace $Trchwnd exit 0 |
- 例:
トレースレベル定義ファイル“/home/etc/trclevel”にレベルが記述されている場合【UNIX版】
# トレースレベル記述ファイルのオープン,読み込み,クローズ if {[catch { set cid [open /home/etc/trclevel r] gets $cid trclevel close $cid }]} { # トレースレベル記述ファイルのエラー puts stderr "Can not read /home/etc/trclevel" exit 1 } # 指定値チェック if {$trclevel < 0 || $trclevel > 2} { # 指定値エラー puts stderr "trace level err :$trclevel" exit 1 } # トレースオープン set Trchwnd [sw_TcOpenTrace -level $trclevel /var/log/G001.trc] … sw_TcCloseTrace $Trchwnd exit 0 |