#!/bin/sh getTimeStamp() { (date -u +"%Y-%m-%dT%H:%M:%SZ") } getHostname() { (hostname -s) } uppercase() { echo "$1" | tr '[:lower:] [:upper:]' } # modified syslog fmt: [pid]: [LEVEL:$2] [STATUS:$3] (:) writePlainTextLog() { # not enough information to generate a meaningful log message if [ -z "$1" ] || [ $# -lt 3 ]; then return fi printf "%s %s %s[%s]: [%s] [%s] %s (%s:%s)\n" \ "$(getTimeStamp)" "$(getHostname)" "$LOG_PROGRAM_NAME" "$$" \ "$2" "$3" "$1" "${4:UNSPECIFIED}" "${5:999}" } # $1: message, $2: level, $3: status, $4: operation, $5: code writeJsonLog() { if [ -z "$1" ]; then PROPS="$( jq --null-input \ --arg level "err" \ --arg pName "$LOG_PROGRAM_NAME" \ --arg operation "$LOG_DEFAULT_OPERATION" \ --arg status "$LOG_DEFAULT_STATUS" \ --arg code "$LOG_DEFAULT_CODE" \ --arg message "$LOG_DEFAULT_MESSAGE" \ '{"level":$level, "programName":$pName, "status":$status, "operation":$operation, "code":$code, "message":$message}' \ )" else PROPS="$( jq --null-input \ --arg level "${2:-$LOG_DEFAULT_LEVEL}" \ --arg pName "$LOG_PROGRAM_NAME" \ --arg status "$(uppercase "${3:-$LOG_DEFAULT_STATUS}")" \ --arg operation "${4:-$LOG_DEFAULT_OPERATION}" \ --arg code "${5:-$LOG_DEFAULT_CODE}" \ --arg message "$1" \ '{"level":$level, "programName":$pName, "status":$status, "operation":$operation, "code":$code, "message":$message}' \ )" fi echo "$PROPS" | jq "." return } # $1: message, $2: level, $3: status, $4: operation, $5: code writeJournalLog() { # translate error levels if [ -z "$2" ]; then LOG_LEVEL=1 else case "$2" in "emergency" | "emerg") LOG_LEVEL=7 ;; "alert") LOG_LEVEL=6 ;; "critical" | "crit") LOG_LEVEL=5 ;; "error" | "err") LOG_LEVEL=4 ;; "warning" | "warn") LOG_LEVEL=3 ;; "notice") LOG_LEVEL=2 ;; "info") LOG_LEVEL=1 ;; "debug") LOG_LEVEL=0 ;; esac fi # log the message if [ -z "$1" ]; then logger --journald <