#!/bin/sh getTimeStamp() { (date -u +"%Y-%m-%dT%H:%M:%SZ") } uppercase() { echo "$1" | tr '[:lower:] [:upper:]' } # $1: message, $2: level, $3: status, $4: operation, $5: code writeJsonLog() { PROGRAM_NAME="cfddns" DEFAULT_CODE=99 DEFAULT_LEVEL="info" DEFAULT_MESSAGE="An unspecified error has occurred" DEFAULT_OPERATION="unspecified" DEFAULT_STATUS="ERR" if [ -z "$1" ]; then PROPS="$( jq --null-input \ --arg level "err" \ --arg pName "$PROGRAM_NAME" \ --arg operation "$DEFAULT_OPERATION" \ --arg status "$DEFAULT_STATUS" \ --arg code "$DEFAULT_CODE" \ --arg message "$DEFAULT_MESSAGE" \ '{"level":$level, "programName":$pName, "status":$status, "operation":$operation, "code":$code, "message":$message}' \ )" else PROPS="$( jq --null-input \ --arg level "${2:-$DEFAULT_LEVEL}" \ --arg pName "$PROGRAM_NAME" \ --arg status "$(uppercase "${3:-$DEFAULT_STATUS}")" \ --arg operation "${4:-$DEFAULT_OPERATION}" \ --arg code "${5:-$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() { PROGRAM_NAME="cfddns" DEFAULT_CODE=99 DEFAULT_LEVEL="info" DEFAULT_MESSAGE="An unspecified error has occurred" DEFAULT_OPERATION="unspecified" DEFAULT_STATUS="ERR" # 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 <