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