From 64acdc39935548eeca43fd3c31a6e59faa008a9b Mon Sep 17 00:00:00 2001 From: Duncaen Date: Fri, 22 Jun 2018 15:04:47 +0200 Subject: vlogger: add logger(1) compatible -s and -i flag, and -S to force syslog --- vlogger.8 | 30 +++++++++++++++++++++++++++--- vlogger.c | 13 +++++++++---- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/vlogger.8 b/vlogger.8 index 9dcb92d..cae3b12 100644 --- a/vlogger.8 +++ b/vlogger.8 @@ -6,7 +6,8 @@ .Nd log messages to syslog or an arbitrary executable .Sh SYNOPSIS .Nm vlogger -.Op Fl p Ar priority +.Op Fl isS +.Op Fl p Ar pri .Op Fl t Ar tag .Sh DESCRIPTION By default, @@ -36,10 +37,33 @@ it uses .Dv foo as default .Ar tag . +.Pp +The options are as follows: .Bl -tag -width indent -.It Fl p Ar priority +.It Fl S +Force +.Nm +to use +.Xr syslog 3 +even if +.Pa /etc/vlogger +exists. +.It Fl s +Output the message to standard error, as well as +.Xr syslog 3 . +Only supported if +.Xr syslog 3 +is used. +.It Fl i +Log the PID of the +.Nm +process. +Only supported if +.Xr syslog 3 +is used. +.It Fl p Ar pri The. -.Ar priority +.Ar pri can be .Pa facility.level or just diff --git a/vlogger.c b/vlogger.c index a3f7a08..0393bc8 100644 --- a/vlogger.c +++ b/vlogger.c @@ -79,6 +79,8 @@ main(int argc, char *argv[]) char *p, *argv0; char *tag = "vlogger"; int c; + int Sflag = 0; + int logflags = 0; int facility = LOG_DAEMON; int level = LOG_INFO; @@ -96,23 +98,26 @@ main(int argc, char *argv[]) } } - while ((c = getopt(argc, argv, "p:t:")) != -1) + while ((c = getopt(argc, argv, "ip:Sst:")) != -1) switch (c) { + case 'i': logflags |= LOG_PID; break; case 'p': strpriority(optarg, &facility, &level); break; + case 'S': Sflag++; break; + case 's': logflags |= LOG_PERROR; break; case 't': tag = optarg; break; default: usage: - fprintf(stderr, "usage: vlogger [-p priority] [-t tag]\n"); + fprintf(stderr, "usage: vlogger [-isS] [-p pri] [-t tag]\n"); exit(1); } - if (access("/etc/vlogger", X_OK) != -1) { + if (!Sflag && access("/etc/vlogger", X_OK) != -1) { execl("/etc/vlogger", argv0, tag, (char *)0); fprintf(stderr, "vlogger: exec: %s\n", strerror(errno)); exit(1); } - openlog(tag, 0, facility); + openlog(tag, logflags, facility); char *line = NULL; size_t linelen = 0; -- cgit 1.4.1