トレースを出力する
作成したユーザスクリプトを運用管理サーバ上で直接実行し、正常に動作することを確認します。その際に詳細なトレースを採取し、ルートチェックやスクリプト内で保持する情報が正しいことを確認します。
トレースを採取するため、スクリプト内に以下のトレース拡張コマンドを記述します。これによりスクリプトのデバッグを可能にします。
組み込み例を“デバッグで使用するコマンドの組み込み例”に示します。
作成したユーザスクリプトをswctclshコマンドで直接実行します。
swctclsh(スクリプト実行コマンド)の詳細については、“Systemwalker Centric Managerリファレンスマニュアル”を参照してください。
例:引数で渡されたファイルを読み込むスクリプト
【Windows版】
スクリプトファイル | LV | 出力内容 |
|---|---|---|
# トレースオープン
# 実運用時は “level 2” を削除のこと
set Trchwnd [sw_TcOpenTrace -level 2 {C:\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 | 動作ログ スクリプト内情報 (ルートチェック) エラーログ ルートチェック ルートチェック スクリプト内情報 (ルートチェック) 動作ログ |
注)LVの欄は、トレースレベルを表します。トレースレベルの省略値は1のため、1の場合はコマンド内での指定を省略しています。
【UNIX版】
スクリプトファイル | LV | 出力内容 |
|---|---|---|
# トレースオープン
# 実運用時は “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 | 動作ログ スクリプト内情報 (ルートチェック) エラーログ ルートチェック ルートチェック スクリプト内情報 (ルートチェック) 動作ログ |
注)LVの欄は、トレースレベルを表します。トレースレベルの省略値は1のため、1の場合はコマンド内での指定を省略しています。
トレースレベルの変更を可能にする
トレースレベルの指定は、Systemwalkerスクリプト内に記述するトレース拡張コマンドのオプションで行います。Systemwalker Centric 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 |
【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 |
外部ファイルによる指定
トレースレベルを記述したファイルからトレースレベルを読み込むようにします。
【Windows版】
例:トレースレベル定義ファイル“c:\home\etc\trclevel”にレベルが記述されている場合
# トレースレベル記述ファイルのオープン,読み込み,クローズ
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 |
【UNIX版】
例:トレースレベル定義ファイル“/home/etc/trclevel”にレベルが記述されている場合
# トレースレベル記述ファイルのオープン,読み込み,クローズ
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 |