[osal]: Add syslog on linux

Change-Id: I484ed12194e2e772326018e7cb1503ab761b2e71
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
Herman Chen
2020-03-19 11:42:48 +08:00
parent 6d52e80b27
commit a225238d0c
2 changed files with 28 additions and 3 deletions

View File

@@ -46,7 +46,7 @@ add_library(osal STATIC
linux/os_allocator.c linux/os_allocator.c
linux/os_mem.c linux/os_mem.c
linux/os_env.c linux/os_env.c
linux/os_log.c linux/os_log.cpp
windows/os_allocator.c windows/os_allocator.c
windows/os_mem.c windows/os_mem.c
windows/os_env.c windows/os_env.c

View File

@@ -17,22 +17,47 @@
#if defined(__gnu_linux__) #if defined(__gnu_linux__)
#include <stdio.h> #include <stdio.h>
#include <stdarg.h> #include <stdarg.h>
#include <syslog.h>
#include "os_log.h" #include "os_log.h"
#define LINE_SZ 1024 #define LINE_SZ 1024
class SyslogWrapper
{
private:
// avoid any unwanted function
SyslogWrapper(const SyslogWrapper &);
SyslogWrapper &operator=(const SyslogWrapper &);
public:
SyslogWrapper();
~SyslogWrapper();
};
static SyslogWrapper syslog_wrapper;
SyslogWrapper::SyslogWrapper()
{
openlog("mpp", LOG_PID | LOG_CONS | LOG_PERROR, LOG_USER);
}
SyslogWrapper::~SyslogWrapper()
{
closelog();
}
void os_log(const char* tag, const char* msg, va_list list) void os_log(const char* tag, const char* msg, va_list list)
{ {
char line[LINE_SZ] = {0}; char line[LINE_SZ] = {0};
snprintf(line, sizeof(line), "%s: %s", tag, msg); snprintf(line, sizeof(line), "%s: %s", tag, msg);
vfprintf(stdout, line, list); vsyslog(LOG_INFO, line, list);
} }
void os_err(const char* tag, const char* msg, va_list list) void os_err(const char* tag, const char* msg, va_list list)
{ {
char line[LINE_SZ] = {0}; char line[LINE_SZ] = {0};
snprintf(line, sizeof(line), "%s: %s", tag, msg); snprintf(line, sizeof(line), "%s: %s", tag, msg);
vfprintf(stderr, line, list); vsyslog(LOG_ERR, line, list);
} }
#endif #endif