@@ -96,6 +96,9 @@ declare __GO_LOG_LEVELS_FORMATTED=()
9696# Set by @go.critical_section_{begin,end}
9797declare __GO_CRITICAL_SECTION=0
9898
99+ # DO NOT EDIT: Determines number of stack trace levels to skip for FATAL logs.
100+ declare __GO_LOG_FATAL_STACK_TRACE_SKIP_CALLERS=1
101+
99102# Outputs a single log line that may contain terminal control characters.
100103#
101104# Usage:
@@ -171,7 +174,8 @@ declare __GO_CRITICAL_SECTION=0
171174
172175 printf " $formatted_log_level ${args[*]} $close_code \n" >& " $level_fd "
173176
174- if [[ " $log_level " == FATAL ]]; then
177+ if [[ " $log_level " == ' FATAL' ]]; then
178+ @go.print_stack_trace " $__GO_LOG_FATAL_STACK_TRACE_SKIP_CALLERS " >&2
175179 exit " $exit_status "
176180 fi
177181 return " $exit_status "
@@ -190,18 +194,21 @@ declare __GO_CRITICAL_SECTION=0
190194 local log_level=" $1 "
191195 local format_code=" $2 "
192196 local level_fd=" ${3:- 1} "
197+ (( ++ __GO_LOG_FATAL_STACK_TRACE_SKIP_CALLERS))
193198
194199 if [[ -n " $__GO_LOG_INIT " ]]; then
195- @go.log ' FATAL' " Can't set logging level $log_level ; already initialized"
200+ @go.log FATAL " Can't set logging level $log_level ; already initialized"
196201 elif [[ " $level_fd " != ' keep' && ! " $level_fd " =~ ^[1-9]+[0-9]* $ ]]; then
197202 @go.log FATAL " File descriptor $level_fd for $log_level must be > 0"
198203 elif ! echo -n 2> /dev/null >& " $level_fd " ; then
199204 @go.log FATAL " File descriptor $level_fd for $log_level isn't open"
200205 fi
206+ (( -- __GO_LOG_FATAL_STACK_TRACE_SKIP_CALLERS))
201207
202208 local __go_log_level_index=0
203209 if ! _@go.log_level_index " $log_level " ; then
204210 if [[ " $format_code " == ' keep' || " $level_fd " == ' keep' ]]; then
211+ (( ++ __GO_LOG_FATAL_STACK_TRACE_SKIP_CALLERS))
205212 @go.log FATAL " Can't keep defaults for nonexistent log level $log_level "
206213 fi
207214 _GO_LOG_LEVELS+=(" $log_level " )
@@ -270,6 +277,7 @@ declare __GO_CRITICAL_SECTION=0
270277
271278 if [[ " $exit_status " -ne ' 0' ]]; then
272279 if [[ " $__GO_CRITICAL_SECTION " -ne ' 0' ]]; then
280+ (( ++ __GO_LOG_FATAL_STACK_TRACE_SKIP_CALLERS))
273281 @go.log FATAL " $exit_status " " $cmd_string "
274282 fi
275283 @go.log ERROR " $exit_status " " $cmd_string "
@@ -312,17 +320,20 @@ declare __GO_CRITICAL_SECTION=0
312320
313321 @go.log START Project setup in " $_GO_ROOTDIR "
314322
323+ (( ++ __GO_LOG_FATAL_STACK_TRACE_SKIP_CALLERS))
315324 if [[ ! -f " $setup_script " ]]; then
316325 @go.log FATAL " Create $setup_script before invoking $FUNCNAME ."
317326 elif [[ ! -x " $setup_script " ]]; then
318327 @go.log FATAL " $setup_script is not executable."
319328 fi
329+ (( -- __GO_LOG_FATAL_STACK_TRACE_SKIP_CALLERS))
320330
321331 @go.log RUN " ${setup_script# $_GO_ROOTDIR / } " " $@ "
322332 _@go.run_command_script " $setup_script " " $@ "
323333 setup_status=" $? "
324334
325335 if [[ " $setup_status " -ne ' 0' ]]; then
336+ (( ++ __GO_LOG_FATAL_STACK_TRACE_SKIP_CALLERS))
326337 @go.log FATAL " $setup_status " " Project setup failed"
327338 fi
328339
0 commit comments