bash入門:logging(ロギング)について -vol.1-

スポンサーリンク
bash入門:logging(ロギング)について -vol.1- ノウハウ
bash入門:logging(ロギング)について -vol.1-
この記事は約4分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、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シェルスクリプトで書かれています。以下にコードの解説をします。

  1. #!/usr/bin/env bash:
  • この行はシバン(shebang)と呼ばれ、スクリプトの最初に配置されるものです。実行時にどのプログラムでスクリプトを実行するかを指定します。このスクリプトはbashで実行されることを指定しています。
  1. set -euCo pipefail:
  • これはスクリプトの実行オプションを設定しています。
  • -e: スクリプト内でエラーが発生した場合、即座にスクリプトの実行を終了します。
  • -u: 未定義の変数を使用しようとした場合にエラーを発生させます。
  • -o pipefail: パイプの途中でエラーが発生した場合、パイプ全体としてエラー終了するようにします。
  1. function log() { ... }:
  • logという名前の関数が定義されています。
  • この関数は、引数として渡されたメッセージをログとして出力します。
  • ログの形式は、[日付と時刻] メッセージ となっており、日付と時刻はミリ秒単位まで表示します。
  1. log "$(which bash)":
  • which bash は、bash コマンドのフルパスを返します。これにより、使用されている Bash のバージョンをログに出力しています。
  1. log "$(bash --version)":
  • bash --version は、Bashのバージョン情報を表示します。これも同様にログに出力しています。

スクリプトの目的は、Bashのバージョン情報を含む詳細なログを生成することです。シェルスクリプトを実行すると、ログが標準出力に表示されるでしょう。

おわりに

今日は、bashにおけるlogging(ロギング)についてご紹介しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました