[PATCH v2 0/3] syslogd: Add a configurable option to log timestamps in ISO 8601 format

Grant Erickson gerickson at nuovations.com
Wed Apr 2 14:43:50 UTC 2025


This provides unification for the several syslogd options that
influence handling and formatting of log timestamps and adds a new
configuration and option.

First, this unifies the handling of messages with a client-generated
timestamps when both 'FEATURE_SYSLOGD_PRECISE_TIMESTAMPS' and
'FEATURE_SYSLOGD_UTC' are asserted.

In particular, to support the intermix of client-generated and
server-generated timestamps, the former are zero-padded such that the
timestamp "column" of a log file is consistent in format.

Second, this adds a configurable option 'FEATURE_SYSLOGD_ISO8601FMT' enabling
a command line option ('-I', with semantics similar to 'date') that
directs syslogd to log timestamps in ISO 8601 format.

Precision in seconds (the default), milliseconds, and microseconds are
supported. Without the 'FEATURE_SYSLOGD_UTC' configuration and its
'-u' option, outputs are of the form:

  YYYY-MM-DDThh:mm:ss±hhmm (seconds)
  YYYY-MM-DDThh:mm:ss.sss±hhmm (milliseconds)
  YYYY-MM-DDThh:mm:ss.uuuuuu±hhmm (microseconds)

with the 'FEATURE_SYSLOGD_UTC' configuration and its '-u' option,
outputs are of the form:

  YYYY-MM-DDThh:mm:ssZ (seconds)
  YYYY-MM-DDThh:mm:ss.sssZ (milliseconds)
  YYYY-MM-DDThh:mm:ss.uuuuuuZ (microseconds)

With all three of the follow options asserted:

  * FEATURE_SYSLOGD_PRECISE_TIMESTAMPS
  * FEATURE_SYSLOGD_UTC
  * FEATURE_SYSLOGD_ISO8601FMT

there are a total of twenty (20) possible test cases of which sixteen
(16) are unique (several of which are defaults):

    1. syslogd -O - -n
    2. syslogd -O - -n -u
    3. syslogd -O - -n -I
    4. syslogd -O - -n -Is
    5. syslogd -O - -n -Ims
    6. syslogd -O - -n -Ius
    7. syslogd -O - -n -I -u
    8. syslogd -O - -n -Is -u
    9. syslogd -O - -n -Ims -u
    10. syslogd -O - -n -Ius -u
    11. syslogd -O - -n -t
    12. syslogd -O - -n -t -u
    13. syslogd -O - -n -t -I
    14. syslogd -O - -n -t -Is
    15. syslogd -O - -n -t -Ims
    16. syslogd -O - -n -t -Ius
    17. syslogd -O - -n -t -I -u
    18. syslogd -O - -n -t -Is -u
    19. syslogd -O - -n -t -Ims -u
    20. syslogd -O - -n -t -Ius -u

which result in the following test output, generated interactively
with 'logger' over ssh:

    2025-03-28T20:10:11-0600 [19205453]# ./busybox syslogd -O - -n
    Mar 28 20:10:54.824 19205453 syslog.info syslogd started: BusyBox v1.36.1
    Mar 28 20:10:59.000 19205453 auth.info sshd-session[940]: Accepted publickey for test from 192.168.1.94 port 44522 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    Mar 28 20:10:59.000 19205453 user.info test[42]: busybox syslogd test.
    Mar 28 20:10:59.000 19205453 auth.info sshd-session[942]: Received disconnect from 192.168.1.94 port 44522:11: disconnected by user
    Mar 28 20:10:59.000 19205453 auth.info sshd-session[942]: Disconnected from user test 192.168.1.94 port 44522
    Mar 28 20:11:09.185 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:11:09-0600 [19205453]# ./busybox syslogd -O - -n -u
    Mar 29 02:11:11.742 19205453 syslog.info syslogd started: BusyBox v1.36.1
    Mar 29 02:11:14.000 19205453 auth.info sshd-session[945]: Accepted publickey for test from 192.168.1.94 port 45900 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    Mar 29 02:11:14.000 19205453 user.info test[42]: busybox syslogd test.
    Mar 29 02:11:14.000 19205453 auth.info sshd-session[947]: Received disconnect from 192.168.1.94 port 45900:11: disconnected by user
    Mar 29 02:11:14.000 19205453 auth.info sshd-session[947]: Disconnected from user test 192.168.1.94 port 45900
    Mar 29 02:11:21.280 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:11:21-0600 [19205453]# ./busybox syslogd -O - -n -I
    2025-03-28T20:11:25-0600 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-28T20:11:30-0600 19205453 auth.info sshd-session[950]: Accepted publickey for test from 192.168.1.94 port 45842 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-28T20:11:30-0600 19205453 user.info test[42]: busybox syslogd test.
    2025-03-28T20:11:30-0600 19205453 auth.info sshd-session[952]: Received disconnect from 192.168.1.94 port 45842:11: disconnected by user
    2025-03-28T20:11:30-0600 19205453 auth.info sshd-session[952]: Disconnected from user test 192.168.1.94 port 45842
    2025-03-28T20:11:34-0600 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:11:34-0600 [19205453]# ./busybox syslogd -O - -n -Is
    2025-03-28T20:11:35-0600 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-28T20:11:38-0600 19205453 auth.info sshd-session[955]: Accepted publickey for test from 192.168.1.94 port 46904 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-28T20:11:38-0600 19205453 user.info test[42]: busybox syslogd test.
    2025-03-28T20:11:38-0600 19205453 auth.info sshd-session[957]: Received disconnect from 192.168.1.94 port 46904:11: disconnected by user
    2025-03-28T20:11:38-0600 19205453 auth.info sshd-session[957]: Disconnected from user test 192.168.1.94 port 46904
    2025-03-28T20:11:41-0600 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:11:41-0600 [19205453]# ./busybox syslogd -O - -n -Ims
    2025-03-28T20:11:45.942-0600 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-28T20:11:49.000-0600 19205453 auth.info sshd-session[960]: Accepted publickey for test from 192.168.1.94 port 35262 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-28T20:11:49.000-0600 19205453 user.info test[42]: busybox syslogd test.
    2025-03-28T20:11:49.000-0600 19205453 auth.info sshd-session[962]: Received disconnect from 192.168.1.94 port 35262:11: disconnected by user
    2025-03-28T20:11:49.000-0600 19205453 auth.info sshd-session[962]: Disconnected from user test 192.168.1.94 port 35262
    2025-03-28T20:11:54.296-0600 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:11:54-0600 [19205453]# ./busybox syslogd -O - -n -Ius
    2025-03-28T20:11:58.332879-0600 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-28T20:12:02.000000-0600 19205453 auth.info sshd-session[965]: Accepted publickey for test from 192.168.1.94 port 42812 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-28T20:12:02.000000-0600 19205453 user.info test[42]: busybox syslogd test.
    2025-03-28T20:12:02.000000-0600 19205453 auth.info sshd-session[967]: Received disconnect from 192.168.1.94 port 42812:11: disconnected by user
    2025-03-28T20:12:02.000000-0600 19205453 auth.info sshd-session[967]: Disconnected from user test 192.168.1.94 port 42812
    2025-03-28T20:12:08.350903-0600 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:12:08-0600 [19205453]# ./busybox syslogd -O - -n -I -u
    2025-03-29T02:12:18Z 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-29T02:12:21Z 19205453 auth.info sshd-session[970]: Accepted publickey for test from 192.168.1.94 port 59600 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-29T02:12:21Z 19205453 user.info test[42]: busybox syslogd test.
    2025-03-29T02:12:21Z 19205453 auth.info sshd-session[972]: Received disconnect from 192.168.1.94 port 59600:11: disconnected by user
    2025-03-29T02:12:21Z 19205453 auth.info sshd-session[972]: Disconnected from user test 192.168.1.94 port 59600
    2025-03-29T02:12:24Z 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:12:24-0600 [19205453]# ./busybox syslogd -O - -n -Is -u
    2025-03-29T02:12:27Z 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-29T02:12:30Z 19205453 auth.info sshd-session[975]: Accepted publickey for test from 192.168.1.94 port 49052 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-29T02:12:30Z 19205453 user.info test[42]: busybox syslogd test.
    2025-03-29T02:12:30Z 19205453 auth.info sshd-session[977]: Received disconnect from 192.168.1.94 port 49052:11: disconnected by user
    2025-03-29T02:12:30Z 19205453 auth.info sshd-session[977]: Disconnected from user test 192.168.1.94 port 49052
    2025-03-29T02:12:33Z 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:12:33-0600 [19205453]# ./busybox syslogd -O - -n -Ims -u
    2025-03-29T02:12:37.756Z 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-29T02:12:40.000Z 19205453 auth.info sshd-session[980]: Accepted publickey for test from 192.168.1.94 port 33894 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-29T02:12:40.000Z 19205453 user.info test[42]: busybox syslogd test.
    2025-03-29T02:12:40.000Z 19205453 auth.info sshd-session[982]: Received disconnect from 192.168.1.94 port 33894:11: disconnected by user
    2025-03-29T02:12:40.000Z 19205453 auth.info sshd-session[982]: Disconnected from user test 192.168.1.94 port 33894
    2025-03-29T02:13:06.782Z 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:13:06-0600 [19205453]# ./busybox syslogd -O - -n -Ius -u
    2025-03-29T02:13:09.593088Z 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-29T02:13:12.000000Z 19205453 auth.info sshd-session[986]: Accepted publickey for test from 192.168.1.94 port 49542 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-29T02:13:12.000000Z 19205453 user.info test[42]: busybox syslogd test.
    2025-03-29T02:13:12.000000Z 19205453 auth.info sshd-session[988]: Received disconnect from 192.168.1.94 port 49542:11: disconnected by user
    2025-03-29T02:13:12.000000Z 19205453 auth.info sshd-session[988]: Disconnected from user test 192.168.1.94 port 49542
    2025-03-29T02:13:12.000000Z 19205453 daemon.info connmand[529]: ntp: adjust (slew): +0.000051 sec
    2025-03-29T02:13:19.679452Z 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:13:19-0600 [19205453]# ./busybox syslogd -O - -n -t
    Mar 28 20:15:22.452 19205453 syslog.info syslogd started: BusyBox v1.36.1
    Mar 28 20:15:24.606 19205453 auth.info sshd-session[992]: Accepted publickey for test from 192.168.1.94 port 36734 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    Mar 28 20:15:24.682 19205453 user.info test[42]: busybox syslogd test.
    Mar 28 20:15:24.684 19205453 auth.info sshd-session[994]: Received disconnect from 192.168.1.94 port 36734:11: disconnected by user
    Mar 28 20:15:24.684 19205453 auth.info sshd-session[994]: Disconnected from user test 192.168.1.94 port 36734
    Mar 28 20:15:28.262 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:15:28-0600 [19205453]# ./busybox syslogd -O - -n -t -u
    Mar 29 02:15:33.963 19205453 syslog.info syslogd started: BusyBox v1.36.1
    Mar 29 02:15:36.646 19205453 auth.info sshd-session[997]: Accepted publickey for test from 192.168.1.94 port 47486 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    Mar 29 02:15:36.719 19205453 user.info test[42]: busybox syslogd test.
    Mar 29 02:15:36.721 19205453 auth.info sshd-session[999]: Received disconnect from 192.168.1.94 port 47486:11: disconnected by user
    Mar 29 02:15:36.722 19205453 auth.info sshd-session[999]: Disconnected from user test 192.168.1.94 port 47486
    Mar 29 02:15:42.726 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:15:42-0600 [19205453]# ./busybox syslogd -O - -n -t -I
    2025-03-28T20:15:44-0600 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-28T20:15:47-0600 19205453 auth.info sshd-session[1002]: Accepted publickey for test from 192.168.1.94 port 40804 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-28T20:15:47-0600 19205453 user.info test[42]: busybox syslogd test.
    2025-03-28T20:15:47-0600 19205453 auth.info sshd-session[1004]: Received disconnect from 192.168.1.94 port 40804:11: disconnected by user
    2025-03-28T20:15:47-0600 19205453 auth.info sshd-session[1004]: Disconnected from user test 192.168.1.94 port 40804
    2025-03-28T20:15:55-0600 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:15:55-0600 [19205453]# ./busybox syslogd -O - -n -t -Is
    2025-03-28T20:15:58-0600 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-28T20:16:00-0600 19205453 auth.info sshd-session[1007]: Accepted publickey for test from 192.168.1.94 port 59882 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-28T20:16:00-0600 19205453 user.info test[42]: busybox syslogd test.
    2025-03-28T20:16:00-0600 19205453 auth.info sshd-session[1009]: Received disconnect from 192.168.1.94 port 59882:11: disconnected by user
    2025-03-28T20:16:00-0600 19205453 auth.info sshd-session[1009]: Disconnected from user test 192.168.1.94 port 59882
    2025-03-28T20:16:03-0600 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:16:04-0600 [19205453]# ./busybox syslogd -O - -n -t -Ims
    2025-03-28T20:16:16.742-0600 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-28T20:16:19.040-0600 19205453 auth.info sshd-session[1013]: Accepted publickey for test from 192.168.1.94 port 43856 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-28T20:16:19.115-0600 19205453 user.info test[42]: busybox syslogd test.
    2025-03-28T20:16:19.119-0600 19205453 auth.info sshd-session[1015]: Received disconnect from 192.168.1.94 port 43856:11: disconnected by user
    2025-03-28T20:16:19.119-0600 19205453 auth.info sshd-session[1015]: Disconnected from user test 192.168.1.94 port 43856
    2025-03-28T20:16:25.382-0600 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:16:25-0600 [19205453]# ./busybox syslogd -O - -n -t -Ius
    2025-03-28T20:16:27.542901-0600 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-28T20:16:29.717165-0600 19205453 auth.info sshd-session[1018]: Accepted publickey for test from 192.168.1.94 port 54902 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-28T20:16:29.792157-0600 19205453 user.info test[42]: busybox syslogd test.
    2025-03-28T20:16:29.794654-0600 19205453 auth.info sshd-session[1020]: Received disconnect from 192.168.1.94 port 54902:11: disconnected by user
    2025-03-28T20:16:29.795390-0600 19205453 auth.info sshd-session[1020]: Disconnected from user test 192.168.1.94 port 54902
    2025-03-28T20:16:31.518777-0600 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:16:31-0600 [19205453]# ./busybox syslogd -O - -n -t -I -u
    2025-03-29T02:16:36Z 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-29T02:16:39Z 19205453 auth.info sshd-session[1023]: Accepted publickey for test from 192.168.1.94 port 37222 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-29T02:16:39Z 19205453 user.info test[42]: busybox syslogd test.
    2025-03-29T02:16:39Z 19205453 auth.info sshd-session[1025]: Received disconnect from 192.168.1.94 port 37222:11: disconnected by user
    2025-03-29T02:16:39Z 19205453 auth.info sshd-session[1025]: Disconnected from user test 192.168.1.94 port 37222
    2025-03-29T02:16:45Z 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:16:46-0600 [19205453]# ./busybox syslogd -O - -n -t -Is -u
    2025-03-29T02:16:47Z 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-29T02:16:49Z 19205453 auth.info sshd-session[1028]: Accepted publickey for test from 192.168.1.94 port 50590 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-29T02:16:49Z 19205453 user.info test[42]: busybox syslogd test.
    2025-03-29T02:16:49Z 19205453 auth.info sshd-session[1030]: Received disconnect from 192.168.1.94 port 50590:11: disconnected by user
    2025-03-29T02:16:49Z 19205453 auth.info sshd-session[1030]: Disconnected from user test 192.168.1.94 port 50590
    2025-03-29T02:16:59Z 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:16:59-0600 [19205453]# ./busybox syslogd -O - -n -t -Ims -u
    2025-03-29T02:16:59.792Z 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-29T02:17:03.189Z 19205453 auth.info sshd-session[1033]: Accepted publickey for test from 192.168.1.94 port 59012 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-29T02:17:03.263Z 19205453 user.info test[42]: busybox syslogd test.
    2025-03-29T02:17:03.267Z 19205453 auth.info sshd-session[1035]: Received disconnect from 192.168.1.94 port 59012:11: disconnected by user
    2025-03-29T02:17:03.267Z 19205453 auth.info sshd-session[1035]: Disconnected from user test 192.168.1.94 port 59012
    2025-03-29T02:17:11.750Z 19205453 syslog.info syslogd exiting
    
    2025-03-28T20:17:11-0600 [19205453]# ./busybox syslogd -O - -n -t -Ius -u
    2025-03-29T02:17:13.063079Z 19205453 syslog.info syslogd started: BusyBox v1.36.1
    2025-03-29T02:17:15.512774Z 19205453 auth.info sshd-session[1038]: Accepted publickey for test from 192.168.1.94 port 34840 ssh2: RSA SHA256:hvjEhxYOZchXOw6JKONWGR0Aei/02ef3bSvt5UF6/SE
    2025-03-29T02:17:15.592759Z 19205453 user.info test[42]: busybox syslogd test.
    2025-03-29T02:17:15.596451Z 19205453 auth.info sshd-session[1040]: Received disconnect from 192.168.1.94 port 34840:11: disconnected by user
    2025-03-29T02:17:15.596526Z 19205453 auth.info sshd-session[1040]: Disconnected from user test 192.168.1.94 port 34840
    2025-03-29T02:17:18.254941Z 19205453 syslog.info syslogd exiting

Grant Erickson (3):
  syslogd: Use a local to track whether a message has a timestamp.
  syslogd: Unify messages with client timestamps when both PRECISE and
    UTC are enabled.
  syslogd: Add a configurable option to log timestamps in ISO 8601
    format

 sysklogd/syslogd.c | 292 ++++++++++++++++++++++++++++++++-------------
 1 file changed, 206 insertions(+), 86 deletions(-)

-- 
2.45.0



More information about the busybox mailing list