前に作った shell-logger というシェルスクリプト用ロガーツールをアップデートして Traceback機能を付けたりしてみました。
shell-logger
etc/shell-logger.sh</del>/etc/shell-logger**というファイルを読み込むと
debug, info, notice, warn, errと言った関数が使える様になります。
追記: 2022/08/07
現在はshell-loggerとshを取った名前になっています。
追記ここまで
インストールはcurlを使って
$ curl -fsSL https://raw.github.com/rcmdnk/shell-logger/install/install.sh| prefix=~/usr/local/ sh
とすると~/usr/local/etc/shell-loggerがインストールされます。
prefixの場所を適当に変えてインストールしてください。
macOSならHomebrewで
$ brew tap rcmdnk/rcmdnkpac/shell-logger
で入れることが出来ます。
もしくは shell-logger を直接ダウンロードして適当なところに置いてください。
コマンドラインで使う
コマンドラインで使う場合には.bashrcや.zshrcに
1
| |
の様にshell-loggerをsourceする設定を入れてください。
これでinfoやerrと言った関数が使えるようになり、
出力したいワードを引数として渡せば良いだけです。

こんな感じ。
シェルスクリプトの中で使う
Bash/Zshの両方で使えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
こんな感じでshell-loggerを読み込んで
後は好きなところでinfoやerrを呼ぶだけです。
shell-loggerには5つのレベルがあり、
それぞれDEBUG, INFO, NOTICE, WARNING, ERRORとなっていて
出力する色や出力先が違います。
カラー出力はファイルへの出力などでは色を付けないようになっています。
デフォルトでは各レベルの色は以下の様な感じ。

また、INFO以上しか出力しない設定になっています
さらに、ERRORに関してはエラー出力に出す様になっています。(他は標準出力)
debugに関してはデフォルト設定では出力しませんが、
1 2 3 4 5 6 | |
と、LOGGER_LEVELを0にすることで表示することが出来るので
簡単にデバッグプリントを入れることが出来ます。
Traceback
トレースバック機能を付けてみました。

こんな感じでerrの時にPythonっぽい雰囲気のTraceback表示を表示してくれます。
各種設定
設定に関しては以下のLOGGER_という値を設定することで変更可能です。
| Variable Name | Description | Default |
|---|---|---|
| LOGGER_DATE_FORMAT | Output date format. | ‘%Y/%m/%d %H:%M:%S’ |
| LOGGER_LEVEL | 0: DEBUG, 1: INFO, 2: NOTICE, 3: WARN, 4: ERROR | 1 |
| LOGGER_STDERR_LEVEL | For levels greater than equal this level, outputs will go stderr. | 4 |
| LOGGER_DEBUG_COLOR | Color for DEBUG | 3 (Italicized. Some terminal shows it as color inversion) |
| LOGGER_INFO_COLOR | Color for INFO | ”” (Use default output color) |
| LOGGER_NOTICE_COLOR | Color for NOTICE | 36 (Front color cyan) |
| LOGGER_WARNING_COLOR | Color for WARNING | 33 (Front color yellow) |
| LOGGER_ERROR_COLOR | Color for ERROR | 31 (Front color red) |
| LOGGER_COLOR | Color mode: never->Always no color. auto->Put color only for terminal output. always->Always put color. | auto |
| LOGGER_LEVELS | Names printed for each level. Need 5 names. | (“DEBUG” “INFO” “NOTICE” “WARNING” “ERROR”) |
| LOGGER_SHOW_TIME | Show time information | 1 |
| LOGGER_SHOW_FILE | Show file/line information | 1 |
| LOGGER_SHOW_LEVEL | Show level | 1 |
| LOGGER_ERROR_RETURN_CODE | Error reutrn code of err/error |
100 |
| LOGGER_ERROR_TRACE | If 1, error trace back is shown by err/error |
1 |