xref: /aosp_15_r20/system/logging/liblog/include/log/log_system.h (revision 598139dc91b21518d67c408eaea2644226490971)
1*598139dcSAndroid Build Coastguard Worker /*
2*598139dcSAndroid Build Coastguard Worker  * Copyright (C) 2005-2017 The Android Open Source Project
3*598139dcSAndroid Build Coastguard Worker  *
4*598139dcSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*598139dcSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*598139dcSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*598139dcSAndroid Build Coastguard Worker  *
8*598139dcSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*598139dcSAndroid Build Coastguard Worker  *
10*598139dcSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*598139dcSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*598139dcSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*598139dcSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*598139dcSAndroid Build Coastguard Worker  * limitations under the License.
15*598139dcSAndroid Build Coastguard Worker  */
16*598139dcSAndroid Build Coastguard Worker 
17*598139dcSAndroid Build Coastguard Worker #pragma once
18*598139dcSAndroid Build Coastguard Worker 
19*598139dcSAndroid Build Coastguard Worker #include <android/log.h>
20*598139dcSAndroid Build Coastguard Worker 
21*598139dcSAndroid Build Coastguard Worker /*
22*598139dcSAndroid Build Coastguard Worker  * Normally we strip the effects of ALOGV (VERBOSE messages),
23*598139dcSAndroid Build Coastguard Worker  * LOG_FATAL and LOG_FATAL_IF (FATAL assert messages) from the
24*598139dcSAndroid Build Coastguard Worker  * release builds be defining NDEBUG.  You can modify this (for
25*598139dcSAndroid Build Coastguard Worker  * example with "#define LOG_NDEBUG 0" at the top of your source
26*598139dcSAndroid Build Coastguard Worker  * file) to change that behavior.
27*598139dcSAndroid Build Coastguard Worker  */
28*598139dcSAndroid Build Coastguard Worker 
29*598139dcSAndroid Build Coastguard Worker #ifndef LOG_NDEBUG
30*598139dcSAndroid Build Coastguard Worker #ifdef NDEBUG
31*598139dcSAndroid Build Coastguard Worker #define LOG_NDEBUG 1
32*598139dcSAndroid Build Coastguard Worker #else
33*598139dcSAndroid Build Coastguard Worker #define LOG_NDEBUG 0
34*598139dcSAndroid Build Coastguard Worker #endif
35*598139dcSAndroid Build Coastguard Worker #endif
36*598139dcSAndroid Build Coastguard Worker 
37*598139dcSAndroid Build Coastguard Worker #ifndef __predict_false
38*598139dcSAndroid Build Coastguard Worker #define __predict_false(exp) __builtin_expect((exp) != 0, 0)
39*598139dcSAndroid Build Coastguard Worker #endif
40*598139dcSAndroid Build Coastguard Worker 
41*598139dcSAndroid Build Coastguard Worker /*
42*598139dcSAndroid Build Coastguard Worker  * Simplified macro to send a verbose system log message using current LOG_TAG.
43*598139dcSAndroid Build Coastguard Worker  */
44*598139dcSAndroid Build Coastguard Worker #ifndef SLOGV
45*598139dcSAndroid Build Coastguard Worker #define __SLOGV(...)                                                          \
46*598139dcSAndroid Build Coastguard Worker   ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_VERBOSE, LOG_TAG, \
47*598139dcSAndroid Build Coastguard Worker                                  __VA_ARGS__))
48*598139dcSAndroid Build Coastguard Worker #if LOG_NDEBUG
49*598139dcSAndroid Build Coastguard Worker #define SLOGV(...)          \
50*598139dcSAndroid Build Coastguard Worker   do {                      \
51*598139dcSAndroid Build Coastguard Worker     if (0) {                \
52*598139dcSAndroid Build Coastguard Worker       __SLOGV(__VA_ARGS__); \
53*598139dcSAndroid Build Coastguard Worker     }                       \
54*598139dcSAndroid Build Coastguard Worker   } while (0)
55*598139dcSAndroid Build Coastguard Worker #else
56*598139dcSAndroid Build Coastguard Worker #define SLOGV(...) __SLOGV(__VA_ARGS__)
57*598139dcSAndroid Build Coastguard Worker #endif
58*598139dcSAndroid Build Coastguard Worker #endif
59*598139dcSAndroid Build Coastguard Worker 
60*598139dcSAndroid Build Coastguard Worker #ifndef SLOGV_IF
61*598139dcSAndroid Build Coastguard Worker #if LOG_NDEBUG
62*598139dcSAndroid Build Coastguard Worker #define SLOGV_IF(cond, ...) ((void)0)
63*598139dcSAndroid Build Coastguard Worker #else
64*598139dcSAndroid Build Coastguard Worker #define SLOGV_IF(cond, ...)                                                 \
65*598139dcSAndroid Build Coastguard Worker   ((__predict_false(cond))                                                  \
66*598139dcSAndroid Build Coastguard Worker        ? ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_VERBOSE, \
67*598139dcSAndroid Build Coastguard Worker                                         LOG_TAG, __VA_ARGS__))              \
68*598139dcSAndroid Build Coastguard Worker        : (void)0)
69*598139dcSAndroid Build Coastguard Worker #endif
70*598139dcSAndroid Build Coastguard Worker #endif
71*598139dcSAndroid Build Coastguard Worker 
72*598139dcSAndroid Build Coastguard Worker /*
73*598139dcSAndroid Build Coastguard Worker  * Simplified macro to send a debug system log message using current LOG_TAG.
74*598139dcSAndroid Build Coastguard Worker  */
75*598139dcSAndroid Build Coastguard Worker #ifndef SLOGD
76*598139dcSAndroid Build Coastguard Worker #define SLOGD(...)                                                          \
77*598139dcSAndroid Build Coastguard Worker   ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_DEBUG, LOG_TAG, \
78*598139dcSAndroid Build Coastguard Worker                                  __VA_ARGS__))
79*598139dcSAndroid Build Coastguard Worker #endif
80*598139dcSAndroid Build Coastguard Worker 
81*598139dcSAndroid Build Coastguard Worker #ifndef SLOGD_IF
82*598139dcSAndroid Build Coastguard Worker #define SLOGD_IF(cond, ...)                                               \
83*598139dcSAndroid Build Coastguard Worker   ((__predict_false(cond))                                                \
84*598139dcSAndroid Build Coastguard Worker        ? ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_DEBUG, \
85*598139dcSAndroid Build Coastguard Worker                                         LOG_TAG, __VA_ARGS__))            \
86*598139dcSAndroid Build Coastguard Worker        : (void)0)
87*598139dcSAndroid Build Coastguard Worker #endif
88*598139dcSAndroid Build Coastguard Worker 
89*598139dcSAndroid Build Coastguard Worker /*
90*598139dcSAndroid Build Coastguard Worker  * Simplified macro to send an info system log message using current LOG_TAG.
91*598139dcSAndroid Build Coastguard Worker  */
92*598139dcSAndroid Build Coastguard Worker #ifndef SLOGI
93*598139dcSAndroid Build Coastguard Worker #define SLOGI(...)                                                         \
94*598139dcSAndroid Build Coastguard Worker   ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_INFO, LOG_TAG, \
95*598139dcSAndroid Build Coastguard Worker                                  __VA_ARGS__))
96*598139dcSAndroid Build Coastguard Worker #endif
97*598139dcSAndroid Build Coastguard Worker 
98*598139dcSAndroid Build Coastguard Worker #ifndef SLOGI_IF
99*598139dcSAndroid Build Coastguard Worker #define SLOGI_IF(cond, ...)                                              \
100*598139dcSAndroid Build Coastguard Worker   ((__predict_false(cond))                                               \
101*598139dcSAndroid Build Coastguard Worker        ? ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_INFO, \
102*598139dcSAndroid Build Coastguard Worker                                         LOG_TAG, __VA_ARGS__))           \
103*598139dcSAndroid Build Coastguard Worker        : (void)0)
104*598139dcSAndroid Build Coastguard Worker #endif
105*598139dcSAndroid Build Coastguard Worker 
106*598139dcSAndroid Build Coastguard Worker /*
107*598139dcSAndroid Build Coastguard Worker  * Simplified macro to send a warning system log message using current LOG_TAG.
108*598139dcSAndroid Build Coastguard Worker  */
109*598139dcSAndroid Build Coastguard Worker #ifndef SLOGW
110*598139dcSAndroid Build Coastguard Worker #define SLOGW(...)                                                         \
111*598139dcSAndroid Build Coastguard Worker   ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_WARN, LOG_TAG, \
112*598139dcSAndroid Build Coastguard Worker                                  __VA_ARGS__))
113*598139dcSAndroid Build Coastguard Worker #endif
114*598139dcSAndroid Build Coastguard Worker 
115*598139dcSAndroid Build Coastguard Worker #ifndef SLOGW_IF
116*598139dcSAndroid Build Coastguard Worker #define SLOGW_IF(cond, ...)                                              \
117*598139dcSAndroid Build Coastguard Worker   ((__predict_false(cond))                                               \
118*598139dcSAndroid Build Coastguard Worker        ? ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_WARN, \
119*598139dcSAndroid Build Coastguard Worker                                         LOG_TAG, __VA_ARGS__))           \
120*598139dcSAndroid Build Coastguard Worker        : (void)0)
121*598139dcSAndroid Build Coastguard Worker #endif
122*598139dcSAndroid Build Coastguard Worker 
123*598139dcSAndroid Build Coastguard Worker /*
124*598139dcSAndroid Build Coastguard Worker  * Simplified macro to send an error system log message using current LOG_TAG.
125*598139dcSAndroid Build Coastguard Worker  */
126*598139dcSAndroid Build Coastguard Worker #ifndef SLOGE
127*598139dcSAndroid Build Coastguard Worker #define SLOGE(...)                                                          \
128*598139dcSAndroid Build Coastguard Worker   ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_ERROR, LOG_TAG, \
129*598139dcSAndroid Build Coastguard Worker                                  __VA_ARGS__))
130*598139dcSAndroid Build Coastguard Worker #endif
131*598139dcSAndroid Build Coastguard Worker 
132*598139dcSAndroid Build Coastguard Worker #ifndef SLOGE_IF
133*598139dcSAndroid Build Coastguard Worker #define SLOGE_IF(cond, ...)                                               \
134*598139dcSAndroid Build Coastguard Worker   ((__predict_false(cond))                                                \
135*598139dcSAndroid Build Coastguard Worker        ? ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_ERROR, \
136*598139dcSAndroid Build Coastguard Worker                                         LOG_TAG, __VA_ARGS__))            \
137*598139dcSAndroid Build Coastguard Worker        : (void)0)
138*598139dcSAndroid Build Coastguard Worker #endif
139