log4j
bashスクリプトのようなものがありますか?重大度によってエラーを異なる方法で処理できるようにしたいです。たとえば、log4j
エラー、情報、デバッグなどを区別できます。 Bashでこれを行う方法はありますか?
次の例に示すように、ログに書き込む関数を作成できます。
LOG () {
echo `date` $* >> /var/log/my_log.log
}
しかし、実際にlog4jのようなものがbashに関連しているかどうかを知りたいです。
次の能力を得るために -エラーレベルなど。
答え1
ほとんどのシステムにはこのlogger
ユーティリティがありますsyslogd
。syslogd
STDERR
ロギングセマンティクスは.などのツールが提供するものとまったく同じではありませんが、設定をメッセージタグと組み合わせるとlog4j
非常facility.level
に似た結果が得られます。
はい
メモ:この例ではFreeBSDバージョンを使用していますlogger
。システムには他のオプションがある可能性があるので、現地のマニュアルを読んでください。
logger -p local3.info -f /var/log/messages -t MY_LOG_TAG "something interesting happened"
/var/log/messages
これにより、施設にinfo
重大度でログインするように求められますlocal3
。-t MY_LOG_TAG
各行に含まれるマーカー()で構成されています。タグは、などを使用してログエントリを抽出するのに役立ちますgrep
。awk
logger -h loghost -p mail.crit -s -f /var/log/mail "an unrecoverable error has occurred"
crit
ログインのために重大度を含むメッセージをデバイスからmail
リモートコンピュータに送信します。これにより、メッセージがスクリプトに印刷され、ログに送信されます。loghost
/var/log/mail
-s
STDERR
答え2
シェルグローバル変数を介してシェルスクリプトをロギングする方法についての詳細な情報がたくさんあります。シェルスクリプトで同様のロギングをシミュレートできます。http://www.cubicrace.com/2016/03/log-tracing-mechnism-for-shell-scripts.html
この資料では、INFO、DEBUG、ERROR などのログレベルについて詳しく説明します。スクリプト入力、スクリプト終了、関数入力、関数終了などの詳細を追跡します。
サンプルログ:
答え3
GitHubで私のロギングの実装を見てください。
https://github.com/codeforester/base/blob/master/lib/stdlib.sh
5つのログレベル(ERROR、WARN、INFO、DEBUG、VERBOSE)と複数のロガーをサポートします。