Thanks. I folded that in and applied this to master. Maybe some of your series is cleanups or improvements. If so, please feel free to re-send those parts of it.
On Thu, Aug 09, 2018 at 05:02:29PM +0300, Ilya Maximets wrote: > The patch is good. > > The following incremental needed to make it complete: > ---- > diff --git a/python/ovs/vlog.py b/python/ovs/vlog.py > index d7a84d8..7d416c3 100644 > --- a/python/ovs/vlog.py > +++ b/python/ovs/vlog.py > @@ -305,9 +305,11 @@ class Vlog(object): > return > > logger = logging.getLogger('syslog') > - # If there is no infrastructure to support python syslog, disable > - # the logger to avoid repeated errors. > - if not os.path.exists("/dev/log"): > + # Disable the logger if there is no infrastructure to support python > + # syslog (to avoid repeated errors) or if the "null" syslog method > + # requested by environment. > + if not os.path.exists("/dev/log") \ > + or os.environ.get('OVS_SYSLOG_METHOD') == "null": > logger.disabled = True > return > ---- > > With above change, tests leaves the crystal clear syslog. > > Beside that, > Acked-by: Ilya Maximets <i.maxim...@samsung.com> > > On 09.08.2018 02:04, Ben Pfaff wrote: > > Until now, "make check" generated a huge amount of output to syslog. This > > commit suppresses it. > > > > CC: Ilya Maximets <i.maxim...@samsung.com> > > Signed-off-by: Ben Pfaff <b...@ovn.org> > > --- > > NEWS | 2 ++ > > lib/automake.mk | 2 ++ > > lib/syslog-null.c | 60 > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > lib/syslog-null.h | 22 ++++++++++++++++++++ > > lib/vlog.c | 12 +++++++++-- > > lib/vlog.man | 7 ++++++- > > lib/vlog.xml | 11 +++++++++- > > tests/atlocal.in | 4 ++++ > > 8 files changed, 116 insertions(+), 4 deletions(-) > > create mode 100644 lib/syslog-null.c > > create mode 100644 lib/syslog-null.h > > > > diff --git a/NEWS b/NEWS > > index 7875f6673e34..ae21340e9046 100644 > > --- a/NEWS > > +++ b/NEWS > > @@ -1,5 +1,7 @@ > > Post-v2.10.0 > > --------------------- > > + - The environment variable OVS_SYSLOG_METHOD, if set, is now used > > + as the default syslog method. > > > > > > v2.10.0 - xx xxx xxxx > > diff --git a/lib/automake.mk b/lib/automake.mk > > index fb43aa1413b2..63e9d72ac18a 100644 > > --- a/lib/automake.mk > > +++ b/lib/automake.mk > > @@ -280,6 +280,8 @@ lib_libopenvswitch_la_SOURCES = \ > > lib/syslog-direct.h \ > > lib/syslog-libc.c \ > > lib/syslog-libc.h \ > > + lib/syslog-null.c \ > > + lib/syslog-null.h \ > > lib/syslog-provider.h \ > > lib/table.c \ > > lib/table.h \ > > diff --git a/lib/syslog-null.c b/lib/syslog-null.c > > new file mode 100644 > > index 000000000000..9dbd13911c21 > > --- /dev/null > > +++ b/lib/syslog-null.c > > @@ -0,0 +1,60 @@ > > +/* > > + * Copyright (c) 2015, 2016 Nicira, Inc. > > + * > > + * Licensed under the Apache License, Version 2.0 (the "License"); > > + * you may not use this file except in compliance with the License. > > + * You may obtain a copy of the License at: > > + * > > + * http://www.apache.org/licenses/LICENSE-2.0 > > + * > > + * Unless required by applicable law or agreed to in writing, software > > + * distributed under the License is distributed on an "AS IS" BASIS, > > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > > + * See the License for the specific language governing permissions and > > + * limitations under the License. > > + */ > > +#include "syslog-null.h" > > + > > +#include <config.h> > > + > > +#include "compiler.h" > > +#include "syslog-provider.h" > > +#include "util.h" > > + > > +static void syslog_null_open(struct syslogger *this, int facility); > > +static void syslog_null_log(struct syslogger *this, int pri, const char > > *msg); > > + > > +static struct syslog_class syslog_null_class = { > > + syslog_null_open, > > + syslog_null_log, > > +}; > > + > > +struct syslog_null { > > + struct syslogger parent; > > +}; > > + > > +/* This function creates object that delegate all logging to null's > > + * syslog implementation. */ > > +struct syslogger * > > +syslog_null_create(void) > > +{ > > + struct syslog_null *this = xmalloc(sizeof *this); > > + > > + this->parent.class = &syslog_null_class; > > + this->parent.prefix = ""; > > + > > + return &this->parent; > > +} > > + > > +static void > > +syslog_null_open(struct syslogger *this OVS_UNUSED, int facility > > OVS_UNUSED) > > +{ > > + /* Nothing to do. */ > > +} > > + > > +static void > > +syslog_null_log(struct syslogger *this OVS_UNUSED, int pri OVS_UNUSED, > > + const char *msg OVS_UNUSED) > > +{ > > + /* Nothing to do. */ > > +} > > diff --git a/lib/syslog-null.h b/lib/syslog-null.h > > new file mode 100644 > > index 000000000000..0f7731dc4dcc > > --- /dev/null > > +++ b/lib/syslog-null.h > > @@ -0,0 +1,22 @@ > > +/* > > + * Copyright (c) 2015 Nicira, Inc. > > + * > > + * Licensed under the Apache License, Version 2.0 (the "License"); > > + * you may not use this file except in compliance with the License. > > + * You may obtain a copy of the License at: > > + * > > + * http://www.apache.org/licenses/LICENSE-2.0 > > + * > > + * Unless required by applicable law or agreed to in writing, software > > + * distributed under the License is distributed on an "AS IS" BASIS, > > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > > + * See the License for the specific language governing permissions and > > + * limitations under the License. > > + */ > > + > > +#ifndef SYSLOG_NULL_H > > +#define SYSLOG_NULL_H 1 > > + > > +struct syslogger *syslog_null_create(void); > > + > > +#endif /* syslog-null.h */ > > diff --git a/lib/vlog.c b/lib/vlog.c > > index bf5fd88ba9e8..01cfdc5d3d2d 100644 > > --- a/lib/vlog.c > > +++ b/lib/vlog.c > > @@ -39,6 +39,7 @@ > > #include "svec.h" > > #include "syslog-direct.h" > > #include "syslog-libc.h" > > +#include "syslog-null.h" > > #include "syslog-provider.h" > > #include "timeval.h" > > #include "unixctl.h" > > @@ -584,7 +585,9 @@ vlog_set_syslog_method(const char *method) > > return; > > } > > > > - if (!strcmp(method, "libc")) { > > + if (!strcmp(method, "null")) { > > + syslogger = syslog_null_create(); > > + } else if (!strcmp(method, "libc")) { > > syslogger = syslog_libc_create(); > > } else if (!strncmp(method, "udp:", 4) || !strncmp(method, "unix:", > > 5)) { > > syslogger = syslog_direct_create(method); > > @@ -778,7 +781,12 @@ vlog_init(void) > > * log anything before calling ovsthread_once_done() will > > deadlock. */ > > atomic_read_explicit(&log_facility, &facility, > > memory_order_relaxed); > > if (!syslogger) { > > - syslogger = syslog_libc_create(); > > + char *env = getenv("OVS_SYSLOG_METHOD"); > > + if (env && env[0]) { > > + vlog_set_syslog_method(env); > > + } else { > > + syslogger = syslog_libc_create(); > > + } > > } > > syslogger->class->openlog(syslogger, facility ? facility : > > LOG_DAEMON); > > ovsthread_once_done(&once); > > diff --git a/lib/vlog.man b/lib/vlog.man > > index 674528d79aae..bad80e3d2771 100644 > > --- a/lib/vlog.man > > +++ b/lib/vlog.man > > @@ -83,7 +83,7 @@ Specify \fImethod\fR how syslog messages should be sent > > to syslog daemon. > > Following forms are supported: > > .RS > > .IP \(bu > > -\fBlibc\fR, use libc \fBsyslog()\fR function. This is the default > > behavior. > > +\fBlibc\fR, use libc \fBsyslog()\fR function. > > Downside of using this options is that libc adds fixed prefix to every > > message before it is actually sent to the syslog daemon over \fB/dev/log\fR > > UNIX domain socket. > > @@ -103,4 +103,9 @@ to listen on the specified UDP port, accidental > > iptables rules could be > > interfering with local syslog traffic and there are some security > > considerations that apply to UDP sockets, but do not apply to UNIX domain > > sockets. > > +.IP \(bu > > +\fBnull\fR, discards all messages logged to syslog. > > .RE > > +.IP > > +The default is taken from the \fBOVS_SYSLOG_METHOD\fR environment > > +variable; if it is unset, the default is \fBlibc\fR. > > diff --git a/lib/vlog.xml b/lib/vlog.xml > > index 70f88b3a6652..c3afc0492314 100644 > > --- a/lib/vlog.xml > > +++ b/lib/vlog.xml > > @@ -114,7 +114,7 @@ > > <ul> > > <li> > > <code>libc</code>, to use the libc <code>syslog()</code> function. > > - This is the default behavior. Downside of using this options is > > that > > + Downside of using this options is that > > libc adds fixed prefix to every message before it is actually sent > > to > > the syslog daemon over <code>/dev/log</code> UNIX domain socket. > > </li> > > @@ -139,6 +139,15 @@ > > local syslog traffic and there are some security considerations > > that > > apply to UDP sockets, but do not apply to UNIX domain sockets. > > </li> > > + > > + <li> > > + <code>null</code>, to discard all messages logged to syslog. > > + </li> > > </ul> > > + > > + <p> > > + The default is taken from the <code>OVS_SYSLOG_METHOD</code> > > environment > > + variable; if it is unset, the default is <code>libc</code>. > > + </p> > > </dd> > > </dl> > > diff --git a/tests/atlocal.in b/tests/atlocal.in > > index 0f4a6ca33758..a86de8bc1b90 100644 > > --- a/tests/atlocal.in > > +++ b/tests/atlocal.in > > @@ -212,3 +212,7 @@ unset NO_PROXY > > # Avoid OVN environment variables leaking in from external environment. > > unset OVN_NB_DB > > unset OVN_SB_DB > > + > > +# Prevent logging to syslog during tests. > > +OVS_SYSLOG_METHOD=null > > +export OVS_SYSLOG_METHOD > > _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev