@terdonのようなメソッドが使用されているのを見てきました。これは、高レベルのプログラミング言語がロガーと呼ぶものの始まりであり、log4J(Java)、log4Perl(Perl)などの完全なライブラリとして提供されます。
set -x
前述のように、Bashで似たようなものを取得できますが、それを使用してコードのブロックをラップすることで、コマンドのサブセットのみをデバッグすることができます。
$ set -x; cmd1; cmd2; set +x
例
使用できる1ライナーパターンを次に示します。
$ set -x; echo "hi" ;set +x
+ echo hi
hi
+ set +x
スクリプト内の複数のコマンドに対して、このようにラップできます。
set -x
cmd1
cmd2
set +x
cmd3
Log4Bash
ほとんどの人は気づいていませんが、Bashにはlog4 *もあり、Log4Bashです。より控えめなニーズがある場合、これをセットアップするのに時間をかける価値があるかもしれません。
log4bashは、Bashスクリプトのロギングを改善するための試みです(つまり、Bashのロギングを少なくします)。
例
log4bashの使用例をいくつか示します。
#!/usr/bin/env bash
source log4bash.sh
log "This is regular log message... log and log_info do the same thing";
log_warning "Luke ... you turned off your targeting computer";
log_info "I have you now!";
log_success "You're all clear kid, now let's blow this thing and go home.";
log_error "One thing's for sure, we're all gonna be a lot thinner.";
# If you have figlet installed -- you'll see some big letters on the screen!
log_captains "What was in the captain's toilet?";
# If you have the "say" command (e.g. on a Mac)
log_speak "Resistance is futile";
Log4sh
もし私がlog4 *フレームワークのフルパワーとして分類するものが欲しいなら、Log4shを試してみます。
抜粋
log4shは、もともと私が働いていた本番環境のいくつかでロギングが多すぎるか、または十分ではなかったロギングの問題を解決するために開発されました。特にCronの仕事は、すべてが機能している、または何も機能しなかったが詳細な理由ではないことを伝える絶え間なく迷惑なメールで最も頭痛がしました。現在、シェルスクリプトからのログ記録が重要である環境でlog4shを使用していますが、単純な「Hello、fix me!」以上のものが必要です。ロギングメッセージのタイプ。あなたが見たものが好きであるか、改善に関する提案があれば、私にメールを送ってください。プロジェクトに十分な関心がある場合は、さらに開発します。
log4shはLinuxのBourne Again Shell(/ bin / bash)で開発されましたが、SolarisのデフォルトのBourne Shell(/ bin / sh)で動作するように細心の注意を払っています。自分で使用するプラットフォーム。
Log4shは、Bashだけでなく、いくつかのシェルをサポートしています。
- ボーンシェル(sh)
- BASH-GNU Bourne Again SHell(bash)
- DASH(ダッシュ)
- Kornシェル(ksh)
- pdksh-パブリックドメインKornシェル(pdksh)
また、Linuxだけでなく、いくつかのOSでもテストされています。
- Cygwin(Windowsの場合)
- FreeBSD(ユーザーがサポート)
- Linux(Gentoo、RedHat、Ubuntu)
- Mac OS X
- Solaris 8、9、10
log4 *フレームワークを使用するには学習に時間がかかりますが、ロギングの要求がより厳しい場合には価値があります。Log4shは、アペンダーを定義し、表示される出力のフォーマットを制御できる構成ファイルを使用します。
例
#! /bin/sh
#
# log4sh example: Hello, world
#
# load log4sh (disabling properties file warning) and clear the default
# configuration
LOG4SH_CONFIGURATION='none' . ./log4sh
log4sh_resetConfiguration
# set the global logging level to INFO
logger_setLevel INFO
# add and configure a FileAppender that outputs to STDERR, and activate the
# configuration
logger_addAppender stderr
appender_setType stderr FileAppender
appender_file_setFile stderr STDERR
appender_activateOptions stderr
# say Hello to the world
logger_info 'Hello, world'
今実行すると:
$ ./log4sh.bash
INFO - Hello, world
注:上記は、コードの一部としてアペンダーを構成します。必要に応じて、独自のファイルlog4sh.properties
などに抽出することができます。
詳細が必要な場合は、Log4shの優れたドキュメントを参照してください。
set -v
出力のどの部分が必要か、どの部分が必要でないかを説明しない限り、私たちは助けられません。