Bash日志记录包括行号

时间:2013-03-10 06:59:53

标签: bash logging

我习惯于Java中的SLF4J和Python中的logging,我可以将函数名称​​和 行号作为输出的字段格式。

强调:行号

我可以在Bash中获得类似的东西吗?

目标:构建一个log_error泛型函数,从我的(巨大的)脚本调用,输出错误源,函数名和行号的严重性级别。

预期用途:

log_error "INFO: my info" ... # called from within my_function at line 20

预期输出:

[INFO] my_function@20 my info

这样的事情是否可能?

2 个答案:

答案 0 :(得分:2)

使用$LINENO:每次引用此参数时,shell都会在脚本或函数中替换表示当前顺序行号(以1开头)的十进制数。

答案 1 :(得分:0)

最好使用BASH_LINENO数组。这是Bash Manual的摘录:

  

BASH_LINENO   一个数组变量,其成员是中的行号   调用FUNCNAME的每个相应成员的源文件。   $ {BASH_LINENO [$ i]}是源文件中的行号   ($ {BASH_SOURCE [$ i + 1]}),其中调用了$ {FUNCNAME [$ i]}(或   $ {BASH_LINENO [$ i-1]}(如果在另一个shell函数中引用)。采用   LINENO获取当前行号。

这是Bash的全面日志记录实现:

https://github.com/codeforester/base/blob/master/lib/stdlib.sh