chiark / gitweb /
logfile: New `prefix' option.
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 23 Nov 2019 17:57:46 +0000 (17:57 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 30 Dec 2019 13:15:49 +0000 (13:15 +0000)
This allows the config file to add a fixed string to log messages.
This will be useful in our test suite, which mixes up output from
two instances of secnet.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
README
log.c

diff --git a/README b/README
index d06a71b..d9df1ed 100644 (file)
--- a/README
+++ b/README
@@ -316,6 +316,7 @@ Defines:
 
 logfile: dict argument
   filename (string): where to log to; default is stderr
+  prefix (string): added to messages [""]
   class (string list): what type of messages to log
     { "debug-config", M_DEBUG_CONFIG },
     { "debug-phase", M_DEBUG_PHASE },
diff --git a/log.c b/log.c
index f3ac057..1239612 100644 (file)
--- a/log.c
+++ b/log.c
@@ -308,6 +308,7 @@ struct logfile {
     string_t logfile;
     uint32_t level;
     FILE *f;
+    const char *prefix;
     bool_t forked;
 };
 
@@ -333,9 +334,10 @@ static void logfile_vlog(void *sst, int class, const char *message,
     if (class&st->level) {
        t=time(NULL);
        tm=localtime(&t);
-       fprintf(st->f,"%s %2d %02d:%02d:%02d %s",
+       fprintf(st->f,"%s %2d %02d:%02d:%02d %s%s%s",
                months[tm->tm_mon],tm->tm_mday,tm->tm_hour,tm->tm_min,
                tm->tm_sec,
+               st->prefix, st->prefix[0] ? " " : "",
                pidbuf);
        vfprintf(st->f,message,args);
        fprintf(st->f,"\n");
@@ -427,6 +429,7 @@ static list_t *logfile_apply(closure_t *self, struct cloc loc, dict_t *context,
     st->ops.buff[0]=0;
     st->loc=loc;
     st->f=stderr;
+    st->prefix="";
     st->forked=0;
 
     item=list_elem(args,0);
@@ -436,6 +439,8 @@ static list_t *logfile_apply(closure_t *self, struct cloc loc, dict_t *context,
     dict=item->data.dict;
 
     st->logfile=dict_read_string(dict,"filename",False,"logfile",loc);
+    st->prefix=dict_read_string(dict,"prefix",False,"logfile",loc);
+    if (!st->prefix) st->prefix="";
     st->level=string_list_to_word(dict_lookup(dict,"class"),
                                       message_class_table,"logfile");