よっしー
こんにちは。よっしーです(^^)
今日は、bashにおけるlogging(ロギング)についてご紹介します。
背景
bashにおけるlogging(ロギング)について調査する機会があったので、そのときの内容を備忘として残しました。
この記事のソースは下記のサイトにアップしています。
実行環境について
実行環境は下記の記事を参考にお願いします。
作成ファイル一覧
下記のファイルを作成しました。
new file: local/work/05_logging/05_logging.sh
05_logging.sh
#!/usr/bin/env bash
set -euCo pipefail
function log() {
echo "[$(date '+%Y/%m/%d %H:%M:%S.%3N')] $*"
}
log "$(which bash)"
log "$(bash --version)"
動作確認
下記のコマンドを実行します。
make build
make up
make login
cd 05_logging
chmod +x 05_logging.sh
./05_logging.sh
下記の結果が出力されていれば成功です。
[2023/12/07 15:57:43.472] /usr/bin/bash
[2023/12/07 15:57:43.476] GNU bash, version 5.2.15(1)-release (aarch64-unknown-linux-gnu)
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
解説
05_logging.sh
このスクリプトは、Bashシェルスクリプトで書かれています。以下にコードの解説をします。
#!/usr/bin/env bash
:
- この行はシバン(shebang)と呼ばれ、スクリプトの最初に配置されるものです。実行時にどのプログラムでスクリプトを実行するかを指定します。このスクリプトは
bash
で実行されることを指定しています。
set -euCo pipefail
:
- これはスクリプトの実行オプションを設定しています。
-e
: スクリプト内でエラーが発生した場合、即座にスクリプトの実行を終了します。-u
: 未定義の変数を使用しようとした場合にエラーを発生させます。-o pipefail
: パイプの途中でエラーが発生した場合、パイプ全体としてエラー終了するようにします。
function log() { ... }
:
log
という名前の関数が定義されています。- この関数は、引数として渡されたメッセージをログとして出力します。
- ログの形式は、
[日付と時刻] メッセージ
となっており、日付と時刻はミリ秒単位まで表示します。
log "$(which bash)"
:
which bash
は、bash
コマンドのフルパスを返します。これにより、使用されている Bash のバージョンをログに出力しています。
log "$(bash --version)"
:
bash --version
は、Bashのバージョン情報を表示します。これも同様にログに出力しています。
スクリプトの目的は、Bashのバージョン情報を含む詳細なログを生成することです。シェルスクリプトを実行すると、ログが標準出力に表示されるでしょう。
おわりに
今日は、bashにおけるlogging(ロギング)についてご紹介しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント