Applied, thanks!
On Mon, Jan 27, 2020 at 3:36 PM Peter Korsgaard <[email protected]> wrote: > > For some use cases, having logs with more than 1 second accuracy can be > helpful. Add an option to include milliseconds when adding a timestamp in > HH:MM:SS.mmm format, similar to syslog-ng with fraq_digits(3) or journalctl > -o short-precise. > > For simplicity, abuse the remaining space in the buffer used by ctime to add > the millieconds (overwriting year). > > /scripts/bloat-o-meter busybox_old busybox > function old new delta > .rodata 8353 8360 +7 > ------------------------------------------------------------------------------ > (add/remove: 0/0 grow/shrink: 1/0 up/down: 7/0) Total: 7 bytes > > Signed-off-by: Peter Korsgaard <[email protected]> > --- > sysklogd/syslogd.c | 27 ++++++++++++++++++++++++--- > 1 file changed, 24 insertions(+), 3 deletions(-) > > diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c > index 0e226124a..95e213a0a 100644 > --- a/sysklogd/syslogd.c > +++ b/sysklogd/syslogd.c > @@ -64,6 +64,14 @@ > //config: help > //config: Supports restricted syslogd config. See docs/syslog.conf.txt > //config: > +//config:config FEATURE_SYSLOGD_PRECISE_TIMESTAMPS > +//config: bool "Include milliseconds in timestamps" > +//config: default n > +//config: depends on SYSLOGD > +//config: help > +//config: Includes milliseconds (HH:MM:SS.mmm) in timestamp when > +//config: timestamps are added. > +//config: > //config:config FEATURE_SYSLOGD_READ_BUFFER_SIZE > //config: int "Read buffer size in bytes" > //config: default 256 > @@ -276,7 +284,7 @@ struct globals { > /* ...then copy to parsebuf, escaping control chars */ > /* (can grow x2 max) */ > char parsebuf[MAX_READ*2]; > - /* ...then sprintf into printbuf, adding timestamp (15 chars), > + /* ...then sprintf into printbuf, adding timestamp (15 or 19 chars), > * host (64), fac.prio (20) to the message */ > /* (growth by: 15 + 64 + 20 + delims = ~110) */ > char printbuf[MAX_READ*2 + 128]; > @@ -833,11 +841,24 @@ static void timestamp_and_log(int pri, char *msg, int > len) > } > > if (!timestamp) { > +#if ENABLE_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS > + struct timeval tv; > + gettimeofday(&tv, NULL); > + now = tv.tv_sec; > +#else > time(&now); > +#endif > timestamp = ctime(&now) + 4; /* skip day of week */ > - } > > - timestamp[15] = '\0'; > +#if ENABLE_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS > + /* overwrite year by milliseconds, zero terminate */ > + sprintf(timestamp + 15, ".%03ld", tv.tv_usec / 1000); > +#else > + timestamp[15] = '\0'; > +#endif > + } > + else > + timestamp[15] = '\0'; > > if (option_mask32 & OPT_kmsg) { > log_to_kmsg(pri, msg); > -- > 2.20.1 > > _______________________________________________ > busybox mailing list > [email protected] > http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
