Re: [LEDE-DEV] odhcpd: [PATCH 1/3] enable loglevel setting via envvar ODHCPD_LOG_LEVEL
On 27/09/2016 01:33, Karl Palsson wrote: > > John Crispinwrote: >> >> >> On 22/09/2016 19:32, Karl Palsson wrote: >>> From: Karl Palsson >>> >>> Currently the loglevel is hardcoded to LOG_WARNING, even though there is >>> debug log messages. Allow an env var to control the log threshold. >>> >>> Signed-off-by: Karl Palsson >>> --- >>> src/odhcpd.c | 16 +++- >>> 1 file changed, 15 insertions(+), 1 deletion(-) >>> >>> diff --git a/src/odhcpd.c b/src/odhcpd.c >>> index 74830ac..c51cfa1 100644 >>> --- a/src/odhcpd.c >>> +++ b/src/odhcpd.c >>> @@ -58,7 +58,21 @@ static void sighandler(_unused int signal) >>> int main() >>> { >>> openlog("odhcpd", LOG_PERROR | LOG_PID, LOG_DAEMON); >>> - setlogmask(LOG_UPTO(LOG_WARNING)); >>> + char *env_log_level = getenv("ODHCPD_LOG_LEVEL"); >>> + int log_level = LOG_WARNING; >>> + if (env_log_level) { >>> + char *end; >>> + errno = 0; >>> + long temp = strtol(env_log_level, , 0); >>> + if (end == env_log_level || *end != '\0' >>> + || ((temp == LONG_MIN || temp == LONG_MAX) && errno == >>> ERANGE) >>> + || (log_level > LOG_DEBUG) || log_level < LOG_EMERG) { >>> + syslog(LOG_ERR, "ODHCPD_LOG_LEVEL envvar was invalid"); >>> + } else { >>> + log_level = temp; >>> + } >>> + } >>> + setlogmask(LOG_UPTO(log_level)); >>> uloop_init(); >> >> this is pretty bloaty. i am also not sure if using an env var >> is the right way to solve this. > > sure, strol sucks. But that's "the" way of checking. I could use > atoi, and just convert nulls to some sort of default maybe. As > for an env var, sure, they suck too, I just copied procd, was > trying to be consistent. I'm open to other suggestions. I don't > _need_ the logging anymore, after adding more for the fixing the > "ignore" problem, and with logging feasible, there's probably > more debug that would be relevant, so this patch could be dropped > entirely if it's too much of a headache. > > Cheers, > Karl P being able to set the debug level is good but not like this. why not use the normal config code path or a commandline option ? John ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev
Re: [LEDE-DEV] odhcpd: [PATCH 1/3] enable loglevel setting via envvar ODHCPD_LOG_LEVEL
John Crispinwrote: > > > On 22/09/2016 19:32, Karl Palsson wrote: > > From: Karl Palsson > > > > Currently the loglevel is hardcoded to LOG_WARNING, even though there is > > debug log messages. Allow an env var to control the log threshold. > > > > Signed-off-by: Karl Palsson > > --- > > src/odhcpd.c | 16 +++- > > 1 file changed, 15 insertions(+), 1 deletion(-) > > > > diff --git a/src/odhcpd.c b/src/odhcpd.c > > index 74830ac..c51cfa1 100644 > > --- a/src/odhcpd.c > > +++ b/src/odhcpd.c > > @@ -58,7 +58,21 @@ static void sighandler(_unused int signal) > > int main() > > { > > openlog("odhcpd", LOG_PERROR | LOG_PID, LOG_DAEMON); > > - setlogmask(LOG_UPTO(LOG_WARNING)); > > + char *env_log_level = getenv("ODHCPD_LOG_LEVEL"); > > + int log_level = LOG_WARNING; > > + if (env_log_level) { > > + char *end; > > + errno = 0; > > + long temp = strtol(env_log_level, , 0); > > + if (end == env_log_level || *end != '\0' > > + || ((temp == LONG_MIN || temp == LONG_MAX) && errno == > > ERANGE) > > + || (log_level > LOG_DEBUG) || log_level < LOG_EMERG) { > > + syslog(LOG_ERR, "ODHCPD_LOG_LEVEL envvar was invalid"); > > + } else { > > + log_level = temp; > > + } > > + } > > + setlogmask(LOG_UPTO(log_level)); > > uloop_init(); > > this is pretty bloaty. i am also not sure if using an env var > is the right way to solve this. sure, strol sucks. But that's "the" way of checking. I could use atoi, and just convert nulls to some sort of default maybe. As for an env var, sure, they suck too, I just copied procd, was trying to be consistent. I'm open to other suggestions. I don't _need_ the logging anymore, after adding more for the fixing the "ignore" problem, and with logging feasible, there's probably more debug that would be relevant, so this patch could be dropped entirely if it's too much of a headache. Cheers, Karl P signature.asc Description: OpenPGP Digital Signature ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev
Re: [LEDE-DEV] odhcpd: [PATCH 1/3] enable loglevel setting via envvar ODHCPD_LOG_LEVEL
On 22/09/2016 19:32, Karl Palsson wrote: > From: Karl Palsson> > Currently the loglevel is hardcoded to LOG_WARNING, even though there is > debug log messages. Allow an env var to control the log threshold. > > Signed-off-by: Karl Palsson > --- > src/odhcpd.c | 16 +++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/src/odhcpd.c b/src/odhcpd.c > index 74830ac..c51cfa1 100644 > --- a/src/odhcpd.c > +++ b/src/odhcpd.c > @@ -58,7 +58,21 @@ static void sighandler(_unused int signal) > int main() > { > openlog("odhcpd", LOG_PERROR | LOG_PID, LOG_DAEMON); > - setlogmask(LOG_UPTO(LOG_WARNING)); > + char *env_log_level = getenv("ODHCPD_LOG_LEVEL"); > + int log_level = LOG_WARNING; > + if (env_log_level) { > + char *end; > + errno = 0; > + long temp = strtol(env_log_level, , 0); > + if (end == env_log_level || *end != '\0' > + || ((temp == LONG_MIN || temp == LONG_MAX) && errno == > ERANGE) > + || (log_level > LOG_DEBUG) || log_level < LOG_EMERG) { > + syslog(LOG_ERR, "ODHCPD_LOG_LEVEL envvar was invalid"); > + } else { > + log_level = temp; > + } > + } > + setlogmask(LOG_UPTO(log_level)); > uloop_init(); this is pretty bloaty. i am also not sure if using an env var is the right way to solve this. John > > if (getuid() != 0) { > ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev
[LEDE-DEV] odhcpd: [PATCH 1/3] enable loglevel setting via envvar ODHCPD_LOG_LEVEL
From: Karl PalssonCurrently the loglevel is hardcoded to LOG_WARNING, even though there is debug log messages. Allow an env var to control the log threshold. Signed-off-by: Karl Palsson --- src/odhcpd.c | 16 +++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/odhcpd.c b/src/odhcpd.c index 74830ac..c51cfa1 100644 --- a/src/odhcpd.c +++ b/src/odhcpd.c @@ -58,7 +58,21 @@ static void sighandler(_unused int signal) int main() { openlog("odhcpd", LOG_PERROR | LOG_PID, LOG_DAEMON); - setlogmask(LOG_UPTO(LOG_WARNING)); + char *env_log_level = getenv("ODHCPD_LOG_LEVEL"); + int log_level = LOG_WARNING; + if (env_log_level) { + char *end; + errno = 0; + long temp = strtol(env_log_level, , 0); + if (end == env_log_level || *end != '\0' + || ((temp == LONG_MIN || temp == LONG_MAX) && errno == ERANGE) + || (log_level > LOG_DEBUG) || log_level < LOG_EMERG) { + syslog(LOG_ERR, "ODHCPD_LOG_LEVEL envvar was invalid"); + } else { + log_level = temp; + } + } + setlogmask(LOG_UPTO(log_level)); uloop_init(); if (getuid() != 0) { -- 2.4.11 ___ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev