File: 50-ubuntu-logging

package info (click to toggle)
lsb 11.6
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 236 kB
  • sloc: python: 1,162; sh: 143; perl: 6; makefile: 2
file content (144 lines) | stat: -rw-r--r-- 3,752 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# Default init script logging functions suitable for Ubuntu.
# See /lib/lsb/init-functions for usage help.
LOG_DAEMON_MSG=""

log_use_plymouth () {
    if [ "${loop:-n}" = y ]; then
        return 1
    fi
    plymouth --ping >/dev/null 2>&1
}

log_success_msg () {
    echo " * $@" || true
}

log_failure_msg () {
    if log_use_fancy_output; then
        esc=''		# escape character, printf '\033'
        red="$esc[31m"		# ANSI color escapes
        normal="$esc[0m"
        echo " $red*$normal $@" || true
    else
        echo " * $@" || true
    fi
}

log_warning_msg () {
    if log_use_fancy_output; then
        esc=''		# escape character, printf '\033'
        yellow="$esc[33m"	# ANSI color escapes
        normal="$esc[0m"
        echo " $yellow*$normal $@" || true
    else
        echo " * $@" || true
    fi
}

log_begin_msg () {
    log_daemon_msg "$1"
}

log_daemon_msg () {
    if [ -z "$1" ]; then
        return 1
    fi

    TPUT=/usr/bin/tput
    if log_use_fancy_output && $TPUT xenl >/dev/null 2>&1; then
        COLS=`$TPUT cols`
        if [ "$COLS" ] && [ "$COLS" -gt 6 ]; then
            COL=$(( COLS - 7 ))
        else
            COLS=80
            COL=73
        fi

        if log_use_plymouth; then
            # If plymouth is running, don't output anything at this time
            # to avoid buffering problems (LP: #752393)
            if [ -z "$LOG_DAEMON_MSG" ]; then
                LOG_DAEMON_MSG=$*
                return
            fi
        fi

        # We leave the cursor `hanging' about-to-wrap (see terminfo(5)
        # xenl, which is approximately right). That way if the script
        # prints anything then we will be on the next line and not
        # overwrite part of the message.

        # Previous versions of this code attempted to colour-code the
        # asterisk but this can't be done reliably because in practice
        # init scripts sometimes print messages even when they succeed
        # and we won't be able to reliably know where the colourful
        # asterisk ought to go.

        printf " * $*       " || true
        # Enough trailing spaces for ` [fail]' to fit in; if the message
        # is too long it wraps here rather than later, which is what we
        # want.
        esc=''		# escape character, printf '\033'
        movecur="$esc[${COLS}G"	# ANSI horizontal position absolute
        printf "$movecur " || true
    else
        echo " * $@" || true
        COL=
    fi
}

log_progress_msg () {
    :
}

log_end_msg () {
    if [ -z "$1" ]; then
        return 1
    fi

    if [ "$COL" ] && [ -x "$TPUT" ]; then
        # If plymouth is running, print previously stored output
        # to avoid buffering problems (LP: #752393)
        if log_use_plymouth; then
            if [ -n "$LOG_DAEMON_MSG" ]; then
                log_daemon_msg $LOG_DAEMON_MSG
                LOG_DAEMON_MSG=""
            fi
        fi

        esc=''			# escape character, printf '\033'
        movecur="$esc[$(( COL + 1 ))G"	# ANSI horizontal position absolute
        printf "\r$movecur" || true
        if [ "$1" -eq 0 ]; then
            echo "[ OK ]" || true
        else
            red="$esc[31m"	# ANSI color escapes
            normal="$esc[0m"
            echo "[${red}fail${normal}]" || true
        fi
    else
        if [ "$1" -eq 0 ]; then
            echo "   ...done." || true
        else
            echo "   ...fail!" || true
        fi
    fi
    return $1
}

log_action_msg () {
    echo " * $@" || true
}

log_action_begin_msg () {
    log_daemon_msg "$@..." || true
}

log_action_cont_msg () {
    log_daemon_msg "$@..." || true
}

log_action_end_msg () {
    # In the future this may do something with $2 as well.
    log_end_msg "$1" || true
}