diff options
author | Chris Johns <chrisj@rtems.org> | 2016-06-30 09:14:55 +1000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2016-06-30 09:14:55 +1000 |
commit | 4a2b84469e41786a2cde2b59447f0f135a99e614 (patch) | |
tree | 2c945c8395600a47553b9e1a79b02a12f4c317d0 | |
parent | Add ftpd as a service. Add rtems-bsd-config.h for app libbsd set up. (diff) | |
download | rtems-libbsd-4a2b84469e41786a2cde2b59447f0f135a99e614.tar.bz2 |
Default syslog priority to INFO. Add rtems_setlogpriority to configure the priority.
The rc.conf has 'syslog_priority' where the priority is the name, eg
syslog_priority="debug"
sets the priority to "debug".
-rw-r--r-- | rtemsbsd/include/rtems/bsd/bsd.h | 9 | ||||
-rw-r--r-- | rtemsbsd/rtems/syslog.c | 37 |
2 files changed, 40 insertions, 6 deletions
diff --git a/rtemsbsd/include/rtems/bsd/bsd.h b/rtemsbsd/include/rtems/bsd/bsd.h index 1583dc9e..f687eaf6 100644 --- a/rtemsbsd/include/rtems/bsd/bsd.h +++ b/rtemsbsd/include/rtems/bsd/bsd.h @@ -221,6 +221,15 @@ void rtems_bsd_set_vprintf_handler(int (*new_vprintf_handler) */ int rtems_bsd_vprintf(int level, const char *fmt, va_list ap); +/** + * @brief Set the syslog priority. See syslog.h for the names. + * + * @param priority One of the standard names. + * @retval 0 Priority set. + * @retval errno Otherwise. + */ +int rtems_bsd_setlogpriority(const char* priority); + /** @} */ #ifdef __cplusplus diff --git a/rtemsbsd/rtems/syslog.c b/rtemsbsd/rtems/syslog.c index 76162563..f356690f 100644 --- a/rtemsbsd/rtems/syslog.c +++ b/rtemsbsd/rtems/syslog.c @@ -37,25 +37,35 @@ * SUCH DAMAGE. */ +#include <errno.h> +#include <stddef.h> +#include <strings.h> + +#define SYSLOG_NAMES #include <syslog.h> #include <rtems/bsd/bsd.h> +static int syslog_priority = LOG_NOTICE; + void syslog(int priority, const char *format, ...) { - va_list ap; + if (priority <= syslog_priority) { + va_list ap; - va_start(ap, format); - vsyslog(priority, format, ap); - va_end(ap); + va_start(ap, format); + vsyslog(priority, format, ap); + va_end(ap); + } } void vsyslog(int priority, const char *format, va_list ap) { - - rtems_bsd_vprintf(priority, format, ap); + if (priority <= syslog_priority) { + rtems_bsd_vprintf(priority, format, ap); + } } void @@ -75,3 +85,18 @@ setlogmask(int mask) { /* TODO */ } + +int +rtems_bsd_setlogpriority(const char* priority) +{ + CODE* c = &prioritynames[0]; + while (c->c_name != NULL) { + if (strcasecmp(c->c_name, priority) == 0) { + syslog_priority = c->c_val; + return 0; + } + ++c; + } + errno = ENOENT; + return -1; +} |