feature(logger): Add plain-text logger function

This commit is contained in:
2026-07-22 21:58:14 -06:00
parent c1f54a619c
commit 3792881529
+43 -34
View File
@@ -4,38 +4,47 @@ getTimeStamp() {
(date -u +"%Y-%m-%dT%H:%M:%SZ") (date -u +"%Y-%m-%dT%H:%M:%SZ")
} }
getHostname() {
(hostname -s)
}
uppercase() { uppercase() {
echo "$1" | tr '[:lower:] [:upper:]' echo "$1" | tr '[:lower:] [:upper:]'
} }
# modified syslog fmt: <ISO-8601 timestamp> <hostname> <tag>[pid]: [LEVEL:$2] [STATUS:$3] <MESSAGE:$1> (<OPERATION:$4>:<CODE:$5>)
writePlainTextLog() {
# if no message is supplied, there is no purpose in generating a log message!
if [ -z "$1" ]; 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 # $1: message, $2: level, $3: status, $4: operation, $5: code
writeJsonLog() { 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 if [ -z "$1" ]; then
PROPS="$( PROPS="$(
jq --null-input \ jq --null-input \
--arg level "err" \ --arg level "err" \
--arg pName "$PROGRAM_NAME" \ --arg pName "$LOG_PROGRAM_NAME" \
--arg operation "$DEFAULT_OPERATION" \ --arg operation "$LOG_DEFAULT_OPERATION" \
--arg status "$DEFAULT_STATUS" \ --arg status "$LOG_DEFAULT_STATUS" \
--arg code "$DEFAULT_CODE" \ --arg code "$LOG_DEFAULT_CODE" \
--arg message "$DEFAULT_MESSAGE" \ --arg message "$LOG_DEFAULT_MESSAGE" \
'{"level":$level, "programName":$pName, "status":$status, "operation":$operation, "code":$code, "message":$message}' \ '{"level":$level, "programName":$pName, "status":$status, "operation":$operation, "code":$code, "message":$message}' \
)" )"
else else
PROPS="$( PROPS="$(
jq --null-input \ jq --null-input \
--arg level "${2:-$DEFAULT_LEVEL}" \ --arg level "${2:-$LOG_DEFAULT_LEVEL}" \
--arg pName "$PROGRAM_NAME" \ --arg pName "$LOG_PROGRAM_NAME" \
--arg status "$(uppercase "${3:-$DEFAULT_STATUS}")" \ --arg status "$(uppercase "${3:-$LOG_DEFAULT_STATUS}")" \
--arg operation "${4:-$DEFAULT_OPERATION}" \ --arg operation "${4:-$LOG_DEFAULT_OPERATION}" \
--arg code "${5:-$DEFAULT_CODE}" \ --arg code "${5:-$LOG_DEFAULT_CODE}" \
--arg message "$1" \ --arg message "$1" \
'{"level":$level, "programName":$pName, "status":$status, "operation":$operation, "code":$code, "message":$message}' \ '{"level":$level, "programName":$pName, "status":$status, "operation":$operation, "code":$code, "message":$message}' \
)" )"
@@ -45,15 +54,8 @@ writeJsonLog() {
return return
} }
# $1: message, $2: level, $3: status, $4: operation, $5: code # $1: message, $2: level, $3: status, $4: operation, $5: code
writeJournalLog() { 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 # translate error levels
if [ -z "$2" ]; then if [ -z "$2" ]; then
LOG_LEVEL=1 LOG_LEVEL=1
@@ -92,30 +94,37 @@ writeJournalLog() {
MESSAGE_ID="$(systemd-id128 new)" MESSAGE_ID="$(systemd-id128 new)"
SYSLOG_TIMESTAMP="$(getTimeStamp)" SYSLOG_TIMESTAMP="$(getTimeStamp)"
SYSLOG_FACILITY=3 SYSLOG_FACILITY=3
SYSLOG_IDENTIFIER="${PROGRAM_NAME}" SYSLOG_IDENTIFIER="${LOG_PROGRAM_NAME}"
PRIORITY=4 PRIORITY=4
ERRNO="${DEFAULT_CODE}" ERRNO="${LOG_DEFAULT_CODE}"
OPERATION="${DEFAULT_OPERATION}" OPERATION="${LOG_DEFAULT_OPERATION}"
MESSAGE="${DEFAULT_MESSAGE}" MESSAGE="${LOG_DEFAULT_MESSAGE}"
STATUS="${DEFAULT_STATUS}" STATUS="${LOG_DEFAULT_STATUS}"
end end
else else
logger --journald <<end logger --journald <<end
MESSAGE_ID="$(systemd-id128 new)" MESSAGE_ID="$(systemd-id128 new)"
SYSLOG_TIMESTAMP="$(getTimeStamp)" SYSLOG_TIMESTAMP="$(getTimeStamp)"
SYSLOG_FACILITY=3 SYSLOG_FACILITY=3
SYSLOG_IDENTIFIER="${PROGRAM_NAME}" SYSLOG_IDENTIFIER="${LOG_PROGRAM_NAME}"
PRIORITY="${LOG_LEVEL}" PRIORITY="${LOG_LEVEL}"
ERRNO="${5:-$DEFAULT_CODE}" ERRNO="${5:-$LOG_DEFAULT_CODE}"
OPERATION="${4:-$DEFAULT_OPERATION}" OPERATION="${4:-$LOG_DEFAULT_OPERATION}"
MESSAGE="$1" MESSAGE="$1"
STATUS="${3:-$DEFAULT_STATUS}" STATUS="${3:-$LOG_DEFAULT_STATUS}"
end end
fi fi
return return
} }
LOG_PROGRAM_NAME="cfddns"
LOG_DEFAULT_CODE=99
LOG_DEFAULT_LEVEL="info"
LOG_DEFAULT_MESSAGE="An unspecified error has occurred"
LOG_DEFAULT_OPERATION="unspecified"
LOG_DEFAULT_STATUS="ERR"
if [ "$1" = "json" ]; then if [ "$1" = "json" ]; then
writeJsonLog # this will generate a generic error message writeJsonLog # this will generate a generic error message
writeJsonLog "This is a test message" # generate this message at the default level with the default code writeJsonLog "This is a test message" # generate this message at the default level with the default code