rcmdnk's blog
Last update

20180823_traceback_200_200

前に作った shell-logger というシェルスクリプト用ロガーツールをアップデートして Traceback機能を付けたりしてみました。

shell-logger

etc/shell-logger.sh</del>/etc/shell-logger**というファイルを読み込むと debug, info, notice, warn, errと言った関数が使える様になります。

追記: 2022/08/07

現在はshell-loggershを取った名前になっています。

追記ここまで

インストールは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

.bashrc
1
source /path/to/shell-logger

の様にshell-loggersourceする設定を入れてください。

これでinfoerrと言った関数が使えるようになり、 出力したいワードを引数として渡せば良いだけです。

shelllogger

こんな感じ。

シェルスクリプトの中で使う

Bash/Zshの両方で使えます。

main.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env bash

# Load shell-logger
source /path/to/shell-logger

# shell-logger settings
LOGGER_LEVEL=0
LOGGER_STDERR_LEVEL=4
LOGGER_ERROR_TRACE=0
LOGGER_COLOR=always


debug "debug"
information "information"
info "info"
notification "notification"
notice "notice"
warning "warning"
warn "warn"
error "error"
err "err"

こんな感じでshell-loggerを読み込んで 後は好きなところでinfoerrを呼ぶだけです。

shell-loggerには5つのレベルがあり、 それぞれDEBUG, INFO, NOTICE, WARNING, ERRORとなっていて 出力する色や出力先が違います。

カラー出力はファイルへの出力などでは色を付けないようになっています。

デフォルトでは各レベルの色は以下の様な感じ。

colors

また、INFO以上しか出力しない設定になっています さらに、ERRORに関してはエラー出力に出す様になっています。(他は標準出力)

debugに関してはデフォルト設定では出力しませんが、

log-test.sh
1
2
3
4
5
6
#!/usr/bin/env bash

source /path/to/shell-logger
LOGGER_LEVEL=0

debug "debug"

と、LOGGER_LEVELを0にすることで表示することが出来るので 簡単にデバッグプリントを入れることが出来ます。

Traceback

トレースバック機能を付けてみました。

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
Sponsored Links
Sponsored Links

« shell-subcommand: Gitライクなサブコマンドをシェルスクリプトで作る GitのPagerの設定 »

}