On Mon, Feb 12, 2018 at 02:47:14PM -0600, Eric Sandeen wrote: > On 2/5/18 5:22 PM, Darrick J. Wong wrote: > > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > > > Record the output of an interactive session in the system log so that > > future support requests can get a better picture of what happened. > > > > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > I really want to log things, but I'm conflicted about spamming syslog. > I'm wondering if a generic /var/log/xfs.log would be good, and it could > eventually log all xfs-related administrative actions and outcomes with > a libfrog library helper... I don't know how non-syslog log files are > handled in general, does everybody just roll their own? > > I'm inclined to leave this one out of 4.15 for now while I/we think > about the big picture here. New idea: we won't flood syslog with the gory details of everything that happened. Instead we syslog right after we've decided that yes we will check this filesystem, and syslog again at the end to report what we found. --D > -Eric > > > --- > > scrub/common.c | 37 +++++++++++++++++++++++++++++++++++++ > > 1 file changed, 37 insertions(+) > > > > > > diff --git a/scrub/common.c b/scrub/common.c > > index 17c3699..672f286 100644 > > --- a/scrub/common.c > > +++ b/scrub/common.c > > @@ -21,6 +21,7 @@ > > #include <pthread.h> > > #include <stdbool.h> > > #include <sys/statvfs.h> > > +#include <syslog.h> > > #include "platform_defs.h" > > #include "xfs.h" > > #include "xfs_fs.h" > > @@ -29,6 +30,8 @@ > > #include "common.h" > > #include "progress.h" > > > > +extern char *progname; > > + > > /* > > * Reporting Status to the Console > > * > > @@ -64,6 +67,12 @@ static const char *err_str[] = { > > [S_PREEN] = "Optimized", > > }; > > > > +static int log_level[] = { > > + [S_ERROR] = LOG_ERR, > > + [S_WARN] = LOG_WARNING, > > + [S_INFO] = LOG_INFO, > > +}; > > + > > /* If stream is a tty, clear to end of line to clean up progress bar. */ > > static inline const char *stream_start(FILE *stream) > > { > > @@ -73,6 +82,8 @@ static inline const char *stream_start(FILE *stream) > > } > > > > /* Print a warning string and some warning text. */ > > +#define LOG_BUFSZ 4096 > > +#define LOGNAME_BUFSZ 256 > > void > > __str_out( > > struct scrub_ctx *ctx, > > @@ -110,6 +121,32 @@ __str_out( > > va_end(args); > > } > > > > + /* If we're running interactively, log the message to syslog too. */ > > + if (isatty(fileno(stdin)) && !debug) { > > + char logname[LOGNAME_BUFSZ]; > > + > > + snprintf(logname, LOGNAME_BUFSZ, "%s@%s", progname, > > + ctx->mntpoint); > > + openlog(logname, LOG_PID, LOG_DAEMON); > > + > > + if (error) { > > + syslog(LOG_ERR, "%s: %s: %s.", > > + _(err_str[level]), descr, > > + strerror_r(error, buf, DESCR_BUFSZ)); > > + } else { > > + char buf[LOG_BUFSZ]; > > + int sz; > > + > > + sz = snprintf(buf, LOG_BUFSZ, "%s: %s: ", > > + _(err_str[level]), descr); > > + va_start(args, format); > > + vsnprintf(buf + sz, LOG_BUFSZ - sz, format, args); > > + va_end(args); > > + syslog(log_level[level], "%s", buf); > > + } > > + closelog(); > > + } > > + > > if (debug) > > fprintf(stream, _(" (%s line %d)"), file, line); > > fprintf(stream, "\n"); > > > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-xfs" in > > the body of a message to majordomo@xxxxxxxxxxxxxxx > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-xfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html