[PATCH] syslogd: let log-message timestamps include the year
Joshua Judson Rosen
jrosen at harvestai.com
Tue May 20 16:35:50 UTC 2014
On 2014-05-20 03:23, walter harms wrote:
> just, an idea
> is it possible to make it more generic e.g. providing format string like
> "%Y-%m-%d %H:%M:%S" ? That would be more flexible.
Sure. I guess that requires adding a command-line option to specify it
at runtime; e.g.: "-t"? And perhaps some logic to validate the formatters
in the user-supplied string, and handle any invalid/unsupported ones
accordingly?
Another alternative would be, I suppose, to extend the syntax of syslog.conf--
though adding a command-line option seems somewhat more straightforward.
> Am 20.05.2014 07:06, schrieb Joshua Judson Rosen:
>> Configurable at build time.
>>
>> Signed-off-by: Joshua Judson Rosen <jrosen at harvestai.com>
>> ---
>> sysklogd/Config.src | 11 +++++++++++
>> sysklogd/syslogd.c | 24 +++++++++++++++++-------
>> 2 files changed, 28 insertions(+), 7 deletions(-)
>>
>> diff --git a/sysklogd/Config.src b/sysklogd/Config.src
>> index fcf9930..4ca0c02 100644
>> --- a/sysklogd/Config.src
>> +++ b/sysklogd/Config.src
>> @@ -22,6 +22,17 @@ config SYSLOGD
>> wrong. And something almost always will go wrong if
>> you wait long enough....
>>
>> +config FEATURE_SYSLOG_TIMESTAMP_YEAR
>> + bool "Include year in syslog timestamps"
>> + default n
>> + help
>> + Timestamps in system logs traditionally do not include
>> + the year, but this can be useful for some long-running
>> + systems where logs are checked infrequently.
>> + Note that this causes syslogd to always generate
>> + its own timestamps, overriding the timestamps
>> + generated by clients when they called syslog().
>> +
>> config FEATURE_ROTATE_LOGFILE
>> bool "Rotate message files"
>> default y
>> diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
>> index f758510..d79f2fe 100644
>> --- a/sysklogd/syslogd.c
>> +++ b/sysklogd/syslogd.c
>> @@ -174,9 +174,9 @@ 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 20 chars),
>> * host (64), fac.prio (20) to the message */
>> - /* (growth by: 15 + 64 + 20 + delims = ~110) */
>> + /* (growth by: 20 + 64 + 20 + delims = ~115) */
>> char printbuf[MAX_READ*2 + 128];
>> };
>>
>> @@ -701,17 +701,27 @@ static void timestamp_and_log(int pri, char *msg, int len)
>>
>> /* Jan 18 00:11:22 msg... */
>> /* 01234567890123456 */
>> - if (len < 16 || msg[3] != ' ' || msg[6] != ' '
>> - || msg[9] != ':' || msg[12] != ':' || msg[15] != ' '
>> + if (len >= 16 && msg[3] == ' ' && msg[6] == ' '
>> + && msg[9] == ':' && msg[12] == ':' && msg[15] == ' '
>> ) {
>> - time(&now);
>> - timestamp = ctime(&now) + 4; /* skip day of week */
>> - } else {
>> now = 0;
>> timestamp = msg;
>> msg += 16;
>> }
>> +#if !CONFIG_FEATURE_SYSLOG_TIMESTAMP_YEAR
>> + else {
>> +#endif
>> + time(&now);
>> + timestamp = ctime(&now) + 4; /* skip day of week */
>> +#if !CONFIG_FEATURE_SYSLOG_TIMESTAMP_YEAR
>> + }
>> +#endif
>> +
>> +#if CONFIG_FEATURE_SYSLOG_TIMESTAMP_YEAR
>> + timestamp[20] = '\0';
>> +#else
>> timestamp[15] = '\0';
>> +#endif
>>
>> if (option_mask32 & OPT_kmsg) {
>> log_to_kmsg(pri, msg);
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
>
--
"'tis an ill wind that blows no minds."
More information about the busybox
mailing list