[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox-cvs
Subject: [git commit] sysklogd: add timestamp option to ignore message timestamps
From: Denys Vlasenko <vda.linux () googlemail ! com>
Date: 2018-08-26 15:31:21
Message-ID: 20180826152343.023118E738 () busybox ! osuosl ! org
[Download RAW message or body]
commit: https://git.busybox.net/busybox/commit/?id=9d539f9fbd0dc4ea70ed8ba66e3c78150fa8a8b2
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
Some syslog producers provide inconsistent timestamps, so provide an option
to ignore the message timestamps and always locally timestamp. In order to
implement this, invert the valid-timestamp check, but only use the timestamp
if this option is not enabled.
This is in line with what what other syslogd implementations do:
From sysklogd syslogd.c:
* Sun Nov 7 12:28:47 CET 2004: Martin Schulze <joey@infodrom.org>
* Discard any timestamp information found in received syslog
* messages. This will affect local messages sent from a
* different timezone.
rsyslog's imuxsock module similary has an (enabled by default)
IgnoreTimestamp option:
https://www.rsyslog.com/doc/v8-stable/configuration/modules/imuxsock.html
function old new delta
packed_usage 32877 32912 +35
timestamp_and_log 363 376 +13
syslogd_main 1638 1641 +3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 51/0) Total: 51 bytes
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
sysklogd/syslogd.c | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
index 4265f4f90..5630d97fc 100644
--- a/sysklogd/syslogd.c
+++ b/sysklogd/syslogd.c
@@ -140,6 +140,7 @@
//usage: )
//usage: "\n -l N Log only messages more urgent than prio N (1-8)"
//usage: "\n -S Smaller output"
+//usage: "\n -t Strip client-generated timestamps"
//usage: IF_FEATURE_SYSLOGD_DUP(
//usage: "\n -D Drop duplicates"
//usage: )
@@ -316,6 +317,7 @@ enum {
OPTBIT_outfile, // -O
OPTBIT_loglevel, // -l
OPTBIT_small, // -S
+ OPTBIT_timestamp, // -t
IF_FEATURE_ROTATE_LOGFILE(OPTBIT_filesize ,) // -s
IF_FEATURE_ROTATE_LOGFILE(OPTBIT_rotatecnt ,) // -b
IF_FEATURE_REMOTE_LOG( OPTBIT_remotelog ,) // -R
@@ -330,6 +332,7 @@ enum {
OPT_outfile = 1 << OPTBIT_outfile ,
OPT_loglevel = 1 << OPTBIT_loglevel,
OPT_small = 1 << OPTBIT_small ,
+ OPT_timestamp = 1 << OPTBIT_timestamp,
OPT_filesize = IF_FEATURE_ROTATE_LOGFILE((1 << OPTBIT_filesize )) + 0,
OPT_rotatecnt = IF_FEATURE_ROTATE_LOGFILE((1 << OPTBIT_rotatecnt )) + 0,
OPT_remotelog = IF_FEATURE_REMOTE_LOG( (1 << OPTBIT_remotelog )) + 0,
@@ -339,7 +342,7 @@ enum {
OPT_cfg = IF_FEATURE_SYSLOGD_CFG( (1 << OPTBIT_cfg )) + 0,
OPT_kmsg = IF_FEATURE_KMSG_SYSLOG( (1 << OPTBIT_kmsg )) + 0,
};
-#define OPTION_STR "m:nO:l:S" \
+#define OPTION_STR "m:nO:l:St" \
IF_FEATURE_ROTATE_LOGFILE("s:" ) \
IF_FEATURE_ROTATE_LOGFILE("b:" ) \
IF_FEATURE_REMOTE_LOG( "R:*") \
@@ -813,21 +816,27 @@ static void parse_fac_prio_20(int pri, char *res20)
* that there is no timestamp, short-circuiting the test. */
static void timestamp_and_log(int pri, char *msg, int len)
{
- char *timestamp;
+ char *timestamp = NULL;
time_t now;
/* 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] == ' '
) {
+ if (!(option_mask32 & OPT_timestamp)) {
+ /* use message timestamp */
+ timestamp = msg;
+ now = 0;
+ }
+ msg += 16;
+ }
+
+ if (!timestamp) {
time(&now);
timestamp = ctime(&now) + 4; /* skip day of week */
- } else {
- now = 0;
- timestamp = msg;
- msg += 16;
}
+
timestamp[15] = '\0';
if (option_mask32 & OPT_kmsg) {
_______________________________________________
busybox-cvs mailing list
busybox-cvs@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic