1 /* SPDX-License-Identifier: Apache-2.0 OR MIT */
2 /*
3 * Copyright (c) 2015 Rockchip Electronics Co., Ltd.
4 */
5
6 #if defined(linux) && !defined(__ANDROID__)
7
8 #define MODULE_TAG "os_log"
9
10 #include <stdio.h>
11 #include <stdarg.h>
12 #include <syslog.h>
13
14 #include "os_log.h"
15 #include "os_env.h"
16 #include "mpp_singleton.h"
17
18 #define LINE_SZ 1024
19
syslog_wrapper_init()20 void syslog_wrapper_init()
21 {
22 int option = LOG_PID;
23 RK_U32 syslog_perror = 1;
24 RK_U32 syslog_cons = 0;
25
26 os_get_env_u32("mpp_syslog_perror", &syslog_perror, 1);
27 if (syslog_perror)
28 option |= LOG_PERROR;
29
30 os_get_env_u32("mpp_syslog_cons", &syslog_cons, 0);
31 if (syslog_cons)
32 option |= LOG_CONS;
33
34 openlog("mpp", option, LOG_USER);
35 }
36
syslog_wrapper_deinit()37 void syslog_wrapper_deinit()
38 {
39 closelog();
40 }
41
os_log_trace(const char * tag,const char * msg,va_list list)42 void os_log_trace(const char* tag, const char* msg, va_list list)
43 {
44 char line[LINE_SZ] = {0};
45 snprintf(line, sizeof(line) - 1, "%s: %s", tag, msg);
46 vsyslog(LOG_NOTICE, line, list);
47 }
48
os_log_debug(const char * tag,const char * msg,va_list list)49 void os_log_debug(const char* tag, const char* msg, va_list list)
50 {
51 char line[LINE_SZ] = {0};
52 snprintf(line, sizeof(line) - 1, "%s: %s", tag, msg);
53 vsyslog(LOG_DEBUG, line, list);
54 }
55
os_log_info(const char * tag,const char * msg,va_list list)56 void os_log_info(const char* tag, const char* msg, va_list list)
57 {
58 char line[LINE_SZ] = {0};
59 snprintf(line, sizeof(line) - 1, "%s: %s", tag, msg);
60 vsyslog(LOG_INFO, line, list);
61 }
62
os_log_warn(const char * tag,const char * msg,va_list list)63 void os_log_warn(const char* tag, const char* msg, va_list list)
64 {
65 char line[LINE_SZ] = {0};
66 snprintf(line, sizeof(line) - 1, "%s: %s", tag, msg);
67 vsyslog(LOG_WARNING, line, list);
68 }
69
os_log_error(const char * tag,const char * msg,va_list list)70 void os_log_error(const char* tag, const char* msg, va_list list)
71 {
72 char line[LINE_SZ] = {0};
73 snprintf(line, sizeof(line) - 1, "%s: %s", tag, msg);
74 vsyslog(LOG_ERR, line, list);
75 }
76
os_log_fatal(const char * tag,const char * msg,va_list list)77 void os_log_fatal(const char* tag, const char* msg, va_list list)
78 {
79 char line[LINE_SZ] = {0};
80 snprintf(line, sizeof(line) - 1, "%s: %s", tag, msg);
81 vsyslog(LOG_CRIT, line, list);
82 }
83
84 MPP_SINGLETON(MPP_SGLN_OS_LOG, os_log, syslog_wrapper_init, syslog_wrapper_deinit)
85
86 #endif
87