2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
20 * @brief This file defines the diagnostics types.
29 #include <sys/syscall.h>
30 #include <sys/types.h>
31 #include <FIoRegistry.h>
33 #include <FAppTypes.h>
35 #include <FBaseSysLog.h>
36 #include "FBase_Log.h"
37 #include "FBase_StringConverter.h"
38 #include "FApp_AppInfo.h"
40 using namespace Tizen::Base;
41 using namespace Tizen::Io;
42 using namespace Tizen::Base::Collection;
43 using namespace Tizen::App;
47 #define LOG_TAG "OSP_SLP"
48 #define LOG_TAG_NULL ""
51 static const char LOG_TAG_ASSERT[] = "Assert";
53 bool iniLoaded = false;
55 static bool appNameLoaded = false;
56 static char appName[LOG_MODULE_NAME_LEN_MAX];
58 static bool envLoaded = false;
59 static bool envPlatformInfoEnabled = true;
61 #define APP_RESERVED(X) NID_APP+X
62 #define BASE_RESERVED(X) NID_BASE+X
63 #define CNT_RESERVED(X) NID_CNT+X
64 #define CTXT_RESERVED(X) NID_CTXT+X
65 #define GRP_RESERVED(X) NID_GRP+X
67 #define IO_RESERVED(X) NID_IO+X
68 #define LCL_RESERVED(X) NID_LCL+X
69 #define LOC_RESERVED(X) NID_LOC+X
70 #define MEDIA_RESERVED(X) NID_MEDIA+X
71 #define MSG_RESERVED(X) NID_MSG+X
73 #define NET_RESERVED(X) NID_NET+X
74 #define SEC_RESERVED(X) NID_SEC+X
75 #define SCL_RESERVED(X) NID_SCL+X
76 #define SYS_RESERVED(X) NID_SYS+X
77 #define TEL_RESERVED(X) NID_TEL+X
79 #define TEXT_RESERVED(X) NID_TEXT+X
80 #define UI_RESERVED(X) NID_UI+X
81 #define UIX_RESERVED(X) NID_UIX+X
82 #define WEB_RESERVED(X) NID_WEB+X
87 //OSP Namespace ID ===============================================================
88 {NID_APP, "NID_APP", "Tizen::App", true},
89 {APP_RESERVED(1) , "RESERVED", "", false},
90 {APP_RESERVED(2) , "RESERVED", "", false},
91 {APP_RESERVED(3) , "RESERVED", "", false},
92 {APP_RESERVED(4) , "RESERVED", "", false},
93 {APP_RESERVED(5) , "RESERVED", "", false},
94 {APP_RESERVED(6) , "RESERVED", "", false},
95 {APP_RESERVED(7) , "RESERVED", "", false},
96 {APP_RESERVED(8) , "RESERVED", "", false},
97 {APP_RESERVED(9) , "RESERVED", "", false},
99 {NID_BASE, "NID_BASE", "Tizen::Base", true},
100 {NID_BASE_COL, "NID_BASE_COL", "Tizen::Base::Collection", true},
101 {NID_BASE_RT, "NID_BASE_RT", "Tizen::Base::Runtime", true},
102 {NID_BASE_UTIL, "NID_BASE_UTIL", "Tizen::Base::Utility", true},
103 {BASE_RESERVED(4) , "RESERVED", "", false},
104 {BASE_RESERVED(5) , "RESERVED", "", false},
105 {BASE_RESERVED(6) , "RESERVED", "", false},
106 {BASE_RESERVED(7) , "RESERVED", "", false},
107 {BASE_RESERVED(8) , "RESERVED", "", false},
108 {BASE_RESERVED(9) , "RESERVED", "", false},
110 {NID_CNT, "NID_CNT", "Tizen::Content", true},
111 {CNT_RESERVED(1) , "RESERVED", "", false},
112 {CNT_RESERVED(2) , "RESERVED", "", false},
113 {CNT_RESERVED(3) , "RESERVED", "", false},
114 {CNT_RESERVED(4) , "RESERVED", "", false},
115 {CNT_RESERVED(5) , "RESERVED", "", false},
116 {CNT_RESERVED(6) , "RESERVED", "", false},
117 {CNT_RESERVED(7) , "RESERVED", "", false},
118 {CNT_RESERVED(8) , "RESERVED", "", false},
119 {CNT_RESERVED(9) , "RESERVED", "", false},
121 {NID_CTXT, "NID_CTXT", "Tizen::Context", true},
122 {CTXT_RESERVED(1) , "RESERVED", "", false},
123 {CTXT_RESERVED(2) , "RESERVED", "", false},
124 {CTXT_RESERVED(3) , "RESERVED", "", false},
125 {CTXT_RESERVED(4) , "RESERVED", "", false},
126 {CTXT_RESERVED(5) , "RESERVED", "", false},
127 {CTXT_RESERVED(6) , "RESERVED", "", false},
128 {CTXT_RESERVED(7) , "RESERVED", "", false},
129 {CTXT_RESERVED(8) , "RESERVED", "", false},
130 {CTXT_RESERVED(9) , "RESERVED", "", false},
132 {NID_GRP, "NID_GRP", "Tizen::Graphics", true},
133 {GRP_RESERVED(1) , "RESERVED", "", false},
134 {GRP_RESERVED(2) , "RESERVED", "", false},
135 {GRP_RESERVED(3) , "RESERVED", "", false},
136 {GRP_RESERVED(4) , "RESERVED", "", false},
137 {GRP_RESERVED(5) , "RESERVED", "", false},
138 {GRP_RESERVED(6) , "RESERVED", "", false},
139 {GRP_RESERVED(7) , "RESERVED", "", false},
140 {GRP_RESERVED(8) , "RESERVED", "", false},
141 {GRP_RESERVED(9) , "RESERVED", "", false},
143 {NID_IO, "NID_IO", "Tizen::Io", true},
144 {IO_RESERVED(1) , "RESERVED", "", false},
145 {IO_RESERVED(2) , "RESERVED", "", false},
146 {IO_RESERVED(3) , "RESERVED", "", false},
147 {IO_RESERVED(4) , "RESERVED", "", false},
148 {IO_RESERVED(5) , "RESERVED", "", false},
149 {IO_RESERVED(6) , "RESERVED", "", false},
150 {IO_RESERVED(7) , "RESERVED", "", false},
151 {IO_RESERVED(8) , "RESERVED", "", false},
152 {IO_RESERVED(9) , "RESERVED", "", false},
154 {NID_LCL, "NID_LCL", "Tizen::Locales", true},
155 {LCL_RESERVED(1) , "RESERVED", "", false},
156 {LCL_RESERVED(2) , "RESERVED", "", false},
157 {LCL_RESERVED(3) , "RESERVED", "", false},
158 {LCL_RESERVED(4) , "RESERVED", "", false},
159 {LCL_RESERVED(5) , "RESERVED", "", false},
160 {LCL_RESERVED(6) , "RESERVED", "", false},
161 {LCL_RESERVED(7) , "RESERVED", "", false},
162 {LCL_RESERVED(8) , "RESERVED", "", false},
163 {LCL_RESERVED(9) , "RESERVED", "", false},
165 {NID_LOC, "NID_LOC", "Tizen::Locations", true},
166 {NID_LOC_CTRL, "NID_LOC_CTRL", "Tizen::Locations::Controls", true},
167 {NID_LOC_SVC, "NID_LOC_SVC", "Tizen::Locations::Services", true},
168 {LOC_RESERVED(3) , "RESERVED", "", false},
169 {LOC_RESERVED(4) , "RESERVED", "", false},
170 {LOC_RESERVED(5) , "RESERVED", "", false},
171 {LOC_RESERVED(6) , "RESERVED", "", false},
172 {LOC_RESERVED(7) , "RESERVED", "", false},
173 {LOC_RESERVED(8) , "RESERVED", "", false},
174 {LOC_RESERVED(9) , "RESERVED", "", false},
176 {NID_MEDIA, "NID_MEDIA", "Tizen::Media", true},
177 {MEDIA_RESERVED(1) , "RESERVED", "", false},
178 {MEDIA_RESERVED(2) , "RESERVED", "", false},
179 {MEDIA_RESERVED(3) , "RESERVED", "", false},
180 {MEDIA_RESERVED(4) , "RESERVED", "", false},
181 {MEDIA_RESERVED(5) , "RESERVED", "", false},
182 {MEDIA_RESERVED(6) , "RESERVED", "", false},
183 {MEDIA_RESERVED(7) , "RESERVED", "", false},
184 {MEDIA_RESERVED(8) , "RESERVED", "", false},
185 {MEDIA_RESERVED(9) , "RESERVED", "", false},
187 {NID_MSG, "NID_MSG", "Tizen::Messaging", true},
188 {MSG_RESERVED(1) , "RESERVED", "", false},
189 {MSG_RESERVED(2) , "RESERVED", "", false},
190 {MSG_RESERVED(3) , "RESERVED", "", false},
191 {MSG_RESERVED(4) , "RESERVED", "", false},
192 {MSG_RESERVED(5) , "RESERVED", "", false},
193 {MSG_RESERVED(6) , "RESERVED", "", false},
194 {MSG_RESERVED(7) , "RESERVED", "", false},
195 {MSG_RESERVED(8) , "RESERVED", "", false},
196 {MSG_RESERVED(9) , "RESERVED", "", false},
198 {NID_NET, "NID_NET", "Tizen::Net", true},
199 {NID_NET_BT, "NID_NET_BT", "Tizen::Net::Bluetooth", true},
200 {NID_NET_HTTP, "NID_NET_HTTP", "Tizen::Net::Http", true},
201 {NID_NET_NFC, "NID_NET_NFC", "Tizen::Net::Nfc", true},
202 {NID_NET_SOCK, "NID_NET_SOCK", "Tizen::Net::Sockets", true},
203 {NID_NET_WIFI, "NID_NET_WIFI", "Tizen::Net::Wifi", true},
204 {NET_RESERVED(6) , "RESERVED", "", false},
205 {NET_RESERVED(7) , "RESERVED", "", false},
206 {NET_RESERVED(8) , "RESERVED", "", false},
207 {NET_RESERVED(9) , "RESERVED", "", false},
209 {NID_SEC, "NID_SEC", "Tizen::Security", true},
210 {NID_SEC_CERT, "NID_SEC_CERT", "Tizen::Security::Cert", true},
211 {NID_SEC_CRYPTO, "NID_SEC_CRYPTO", "Tizen::Security::Crypto", true},
212 {SEC_RESERVED(3) , "RESERVED", "", false},
213 {SEC_RESERVED(4) , "RESERVED", "", false},
214 {SEC_RESERVED(5) , "RESERVED", "", false},
215 {SEC_RESERVED(6) , "RESERVED", "", false},
216 {SEC_RESERVED(7) , "RESERVED", "", false},
217 {SEC_RESERVED(8) , "RESERVED", "", false},
218 {SEC_RESERVED(9) , "RESERVED", "", false},
220 {NID_SCL, "NID_SCL", "Tizen::Social", true},
221 {SCL_RESERVED(1) , "RESERVED", "", false},
222 {SCL_RESERVED(2) , "RESERVED", "", false},
223 {SCL_RESERVED(3) , "RESERVED", "", false},
224 {SCL_RESERVED(4) , "RESERVED", "", false},
225 {SCL_RESERVED(5) , "RESERVED", "", false},
226 {SCL_RESERVED(6) , "RESERVED", "", false},
227 {SCL_RESERVED(7) , "RESERVED", "", false},
228 {SCL_RESERVED(8) , "RESERVED", "", false},
229 {SCL_RESERVED(9) , "RESERVED", "", false},
231 {NID_SYS, "NID_SYS", "Tizen::System", true},
232 {SYS_RESERVED(1) , "RESERVED", "", false},
233 {SYS_RESERVED(2) , "RESERVED", "", false},
234 {SYS_RESERVED(3) , "RESERVED", "", false},
235 {SYS_RESERVED(4) , "RESERVED", "", false},
236 {SYS_RESERVED(5) , "RESERVED", "", false},
237 {SYS_RESERVED(6) , "RESERVED", "", false},
238 {SYS_RESERVED(7) , "RESERVED", "", false},
239 {SYS_RESERVED(8) , "RESERVED", "", false},
240 {SYS_RESERVED(9) , "RESERVED", "", false},
242 {NID_TEL, "NID_TEL", "Tizen::Telephony", true},
243 {TEL_RESERVED(1) , "RESERVED", "", false},
244 {TEL_RESERVED(2) , "RESERVED", "", false},
245 {TEL_RESERVED(3) , "RESERVED", "", false},
246 {TEL_RESERVED(4) , "RESERVED", "", false},
247 {TEL_RESERVED(5) , "RESERVED", "", false},
248 {TEL_RESERVED(6) , "RESERVED", "", false},
249 {TEL_RESERVED(7) , "RESERVED", "", false},
250 {TEL_RESERVED(8) , "RESERVED", "", false},
251 {TEL_RESERVED(9) , "RESERVED", "", false},
253 {NID_TEXT, "NID_TEXT", "Tizen::Text", true},
254 {TEXT_RESERVED(1) , "RESERVED", "", false},
255 {TEXT_RESERVED(2) , "RESERVED", "", false},
256 {TEXT_RESERVED(3) , "RESERVED", "", false},
257 {TEXT_RESERVED(4) , "RESERVED", "", false},
258 {TEXT_RESERVED(5) , "RESERVED", "", false},
259 {TEXT_RESERVED(6) , "RESERVED", "", false},
260 {TEXT_RESERVED(7) , "RESERVED", "", false},
261 {TEXT_RESERVED(8) , "RESERVED", "", false},
262 {TEXT_RESERVED(9) , "RESERVED", "", false},
264 {NID_UI, "NID_UI", "Tizen::Ui", true},
265 {NID_UI_ANIM, "NID_UI_ANIM", "Tizen::Ui::Animations", true},
266 {NID_UI_CTRL, "NID_UI_CTRL", "Tizen::Ui::Controls", true},
267 {NID_UI_EFFECT, "NID_UI_EFFECT", "Tizen::Ui::Effects", true},
268 {NID_UI_IME, "NID_UI_IME", "Tizen::Ui::Ime", true},
269 {NID_UI_SCENES, "NID_UI_SCENES", "Tizen::Ui::Scenes", true},
270 {UI_RESERVED(6) , "RESERVED", "", false},
271 {UI_RESERVED(7) , "RESERVED", "", false},
272 {UI_RESERVED(8) , "RESERVED", "", false},
273 {UI_RESERVED(9) , "RESERVED", "", false},
275 {NID_UIX, "NID_UIX", "Tizen::Uix", true},
276 {NID_UIX_SPEECH, "NID_UIX_SPEECH", "Tizen::Uix::Speech", true},
277 {UIX_RESERVED(2) , "RESERVED", "", false},
278 {UIX_RESERVED(3) , "RESERVED", "", false},
279 {UIX_RESERVED(4) , "RESERVED", "", false},
280 {UIX_RESERVED(5) , "RESERVED", "", false},
281 {UIX_RESERVED(6) , "RESERVED", "", false},
282 {UIX_RESERVED(7) , "RESERVED", "", false},
283 {UIX_RESERVED(8) , "RESERVED", "", false},
284 {UIX_RESERVED(9) , "RESERVED", "", false},
286 {NID_WEB, "NID_WEB", "Tizen::Web", true},
287 {NID_WEB_CTRL, "NID_WEB_CTRL", "Tizen::Web::Controls", true},
288 {NID_WEB_JSON, "NID_WEB_JSON", "Tizen::Web::Json", true},
289 {WEB_RESERVED(3) , "RESERVED", "", false},
290 {WEB_RESERVED(4) , "RESERVED", "", false},
291 {WEB_RESERVED(5) , "RESERVED", "", false},
292 {WEB_RESERVED(6) , "RESERVED", "", false},
293 {WEB_RESERVED(7) , "RESERVED", "", false},
294 {WEB_RESERVED(8) , "RESERVED", "", false},
295 {WEB_RESERVED(9) , "RESERVED", "", false}
299 // Other properties ===========================================================
303 true, //platformInfoEnabled;
304 true, //platformExceptionEnabled;
306 true, // applicationInfoEnabled
307 true, // applicationDebugEnabled
308 true, // applicationExceptionEnabled
313 AppLogInternal(const char* pFunction, int lineNumber, const char* pFormat, ...)
317 if (!logInfo.applicationInfoEnabled)
322 va_start(args, pFormat);
324 __PrintLog(static_cast<_LogType>(LOG_INFO), pFunction, lineNumber, pFormat, args);
330 AppLogTagInternal(const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...)
334 if (!logInfo.applicationInfoEnabled)
339 va_start(args, pFormat);
341 __PrintLogTag(pTag, static_cast<_LogType>(LOG_INFO), pFunction, lineNumber, pFormat, args);
347 AppLogDebugInternal(const char* pFunction, int lineNumber, const char* pFormat, ...)
351 if (!logInfo.applicationDebugEnabled)
356 va_start(args, pFormat);
358 __PrintLog(static_cast<_LogType>(LOG_DEBUG), pFunction, lineNumber, pFormat, args);
364 AppLogDebugTagInternal(const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...)
368 if (!logInfo.applicationDebugEnabled)
373 va_start(args, pFormat);
375 __PrintLogTag(pTag, static_cast<_LogType>(LOG_DEBUG), pFunction, lineNumber, pFormat, args);
381 AppLogExceptionInternal(const char* pFunction, int lineNumber, const char* pFormat, ...)
385 if (!logInfo.applicationExceptionEnabled)
390 va_start(args, pFormat);
392 __PrintLog(static_cast<_LogType>(LOG_EXCEPTION), pFunction, lineNumber, pFormat, args);
398 AppLogExceptionTagInternal(const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...)
402 if (!logInfo.applicationExceptionEnabled)
407 va_start(args, pFormat);
409 __PrintLogTag(pTag, static_cast<_LogType>(LOG_EXCEPTION), pFunction, lineNumber, pFormat, args);
415 AppassertInternal(const char* pFunction, int lineNumber)
417 char logBody[LOG_LEN_MAX];
420 char logTag[LOG_MODULE_NAME_LEN_MAX];
422 vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, &appDebug);
423 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
425 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", appName);
426 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
428 if( (platformDebug == false) && (appDebug == 0) )
430 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > App assertion passed due to debug mode off!", pFunction, lineNumber);
431 ALOG(LOG_ERROR, logTag, logBody);
435 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > AppAssert!", pFunction, lineNumber);
436 ALOG(LOG_ERROR, logTag, logBody);
442 AppassertfInternal(const char* expr, const char* pFunction, int lineNumber, const char* pFormat, ...)
444 char logBody[LOG_LEN_MAX];
448 va_start(args, pFormat);
450 vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, &appDebug);
451 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
453 if( (platformDebug == false) && (appDebug == 0) )
455 snprintf(logBody, LOG_LEN_MAX, "App assertion passed due to debug mode off! : %s", pFormat);
456 __PrintLog(static_cast<_LogType>(LOG_USER), pFunction, lineNumber, logBody, args);
461 __PrintLog(static_cast<_LogType>(LOG_USER), pFunction, lineNumber, pFormat, args);
470 SysLogInternal(unsigned long nid, const char* pFunction, int lineNumber, const char* pFormat, ...)
473 char* envValuePlatformlogging;
478 envValuePlatformlogging = getenv("TIZEN_PLATFORMLOGGING_MODE");
479 envValueDebug = getenv("TIZEN_DEBUG_MODE");
481 if ((envValuePlatformlogging != NULL) && (envValuePlatformlogging[0] == '1'))
483 envPlatformInfoEnabled = true;
485 else if ((envValueDebug != NULL) && (envValueDebug[0] == '1'))
487 envPlatformInfoEnabled = true;
491 envPlatformInfoEnabled = false;
496 if (!envPlatformInfoEnabled)
501 if (!logInfo.platformInfoEnabled)
506 va_start(args, pFormat);
508 __PrintSysLog(static_cast<_LogType>(LOG_INFO), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
514 SysLogExceptionInternal(unsigned long nid, result r, const char* pFunction, int lineNumber, const char* pFormat, ...)
520 if (!logInfo.platformExceptionEnabled)
525 va_start(args, pFormat);
527 __PrintSysLog(static_cast<_LogType>(LOG_EXCEPTION), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
533 SysLogTagInternal(unsigned long nid, const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...)
536 char* envValuePlatformlogging;
541 envValuePlatformlogging = getenv("TIZEN_PLATFORMLOGGING_MODE");
542 envValueDebug = getenv("TIZEN_DEBUG_MODE");
544 if ((envValuePlatformlogging != NULL) && (envValuePlatformlogging[0] == '1'))
546 envPlatformInfoEnabled = true;
548 else if ((envValueDebug != NULL) && (envValueDebug[0] == '1'))
550 envPlatformInfoEnabled = true;
554 envPlatformInfoEnabled = false;
559 if (!envPlatformInfoEnabled)
564 if (!logInfo.platformInfoEnabled)
569 va_start(args, pFormat);
571 __PrintSysLogTag(pTag, static_cast<_LogType>(LOG_INFO), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
577 SysLogExceptionTagInternal(unsigned long nid, const char* pTag, result r, const char* pFunction, int lineNumber,
585 if (!logInfo.platformExceptionEnabled)
590 va_start(args, pFormat);
592 __PrintSysLogTag(pTag, static_cast<_LogType>(LOG_EXCEPTION), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
599 SysAssertInternal(const char* pFileName, int lineNumber, const char* pFunction)
603 char logBody[LOG_LEN_MAX];
605 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
612 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > SysAssert!", pFunction, lineNumber);
614 ALOG(LOG_ERROR, LOG_TAG_ASSERT, logBody);
620 SysAssertfInternal(const char* expr, const char* pFunction, int lineNumber, const char* pFormat, ...)
622 char logBody[LOG_LEN_MAX];
626 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
633 va_start(args, pFormat);
635 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
636 logBody[LOG_LEN_MAX - 1] = '\0';
638 ALOG_VA(LOG_ERROR, LOG_TAG_ASSERT, logBody, args);
646 SysPropagateInternal(const char* pFunction, int lineNumber, unsigned long nid, result r)
648 char logBody[PROPAGATION_LEN_MAX];
649 snprintf(logBody, PROPAGATION_LEN_MAX, "%s(%d) > [%s] Propagating to caller...", pFunction, lineNumber, GetErrorMessage(r));
651 char logTag[LOG_MODULE_NAME_LEN_MAX];
652 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", __GetModuleName(static_cast<LogID>(nid)));
654 ALOG(LOG_ERROR, logTag, logBody);
658 SysTryReturnResultInternal(unsigned long id, result r, const char* pFunction, int lineNumber, const char* pFormat, ...)
665 if (!logInfo.platformExceptionEnabled)
672 __InitializeLogInfo();
675 if (!__GetEnableInfo(static_cast<LogID>(id)))
680 va_start(args, pFormat);
682 char logBody[LOG_LEN_MAX];
683 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > [%s] %s", pFunction, lineNumber, GetErrorMessage(r), pFormat);
684 logBody[LOG_LEN_MAX -1] = '\0';
686 char logTag[LOG_MODULE_NAME_LEN_MAX];
688 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", __GetModuleName(static_cast<LogID>(id)));
689 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
691 ALOG_VA(LOG_ERROR, logTag, logBody, args);
699 __PrintLog(_LogType type, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
703 __InitializeLogInfo();
706 char logBody[LOG_LEN_MAX];
707 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
708 logBody[LOG_LEN_MAX - 1] = '\0';
710 char logTag[LOG_MODULE_NAME_LEN_MAX];
714 appNameLoaded = true;
715 char* pAppName = _StringConverter::CopyToCharArrayN(_AppInfo::GetAppExecutableName());
716 strncpy(appName, pAppName, LOG_MODULE_NAME_LEN_MAX);
719 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", appName);
721 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
725 case static_cast<_LogType>(LOG_INFO):
726 ALOG_VA(LOG_INFO, logTag, logBody, args);
729 case static_cast<_LogType>(LOG_DEBUG):
730 ALOG_VA(LOG_DEBUG, logTag, logBody, args);
733 case static_cast<_LogType>(LOG_EXCEPTION):
734 ALOG_VA(LOG_ERROR, logTag, logBody, args);
737 case static_cast<_LogType>(LOG_USER):
738 ALOG_VA(LOG_ERROR, logTag, logBody, args);
742 ALOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
748 __PrintLogTag(const char* pTag, _LogType type, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
752 __InitializeLogInfo();
755 char logBody[LOG_LEN_MAX];
756 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
757 logBody[LOG_LEN_MAX -1] = '\0';
759 char logTag[LOG_TAG_LEN_MAX];
761 snprintf(logTag, LOG_TAG_LEN_MAX, "%s", pTag);
762 logTag[LOG_TAG_LEN_MAX - 1] = '\0';
766 case static_cast<_LogType>(LOG_INFO):
767 ALOG_VA(LOG_INFO, logTag, logBody, args);
770 case static_cast<_LogType>(LOG_DEBUG):
771 ALOG_VA(LOG_DEBUG, logTag, logBody, args);
774 case static_cast<_LogType>(LOG_EXCEPTION):
775 ALOG_VA(LOG_ERROR, logTag, logBody, args);
778 case static_cast<_LogType>(LOG_USER):
779 ALOG_VA(LOG_ERROR, logTag, logBody, args);
783 ALOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
790 __PrintSysLog(_LogType type, LogID id, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
794 __InitializeLogInfo();
797 if (!__GetEnableInfo(static_cast<LogID>(id)))
802 char logBody[LOG_LEN_MAX];
803 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
804 logBody[LOG_LEN_MAX -1] = '\0';
806 char logTag[LOG_MODULE_NAME_LEN_MAX];
808 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", __GetModuleName(static_cast<LogID>(id)));
809 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
813 case static_cast<_LogType>(LOG_INFO):
814 LOG_VA(LOG_INFO, logTag, logBody, args);
817 case static_cast<_LogType>(LOG_DEBUG):
818 LOG_VA(LOG_DEBUG, logTag, logBody, args);
821 case static_cast<_LogType>(LOG_EXCEPTION):
822 ALOG_VA(LOG_ERROR, logTag, logBody, args);
825 case static_cast<_LogType>(LOG_USER):
826 ALOG_VA(LOG_ERROR, logTag, logBody, args);
830 LOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
836 __PrintSysLogTag(const char* pTag, _LogType type, LogID id, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
840 __InitializeLogInfo();
843 if (!__GetEnableInfo(static_cast<LogID>(id)))
848 char logBody[LOG_LEN_MAX];
849 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
850 logBody[LOG_LEN_MAX -1] = '\0';
852 char logTag[LOG_MODULE_NAME_LEN_MAX + LOG_TAG_LEN_MAX];
854 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX + LOG_TAG_LEN_MAX, "%s | %s", __GetModuleName(static_cast<LogID>(id)), pTag);
855 logTag[LOG_MODULE_NAME_LEN_MAX + LOG_TAG_LEN_MAX - 1] = '\0';
859 case static_cast<_LogType>(LOG_INFO):
860 LOG_VA(LOG_INFO, logTag, logBody, args);
863 case static_cast<_LogType>(LOG_DEBUG):
864 LOG_VA(LOG_DEBUG, logTag, logBody, args);
867 case static_cast<_LogType>(LOG_EXCEPTION):
868 ALOG_VA(LOG_ERROR, logTag, logBody, args);
871 case static_cast<_LogType>(LOG_USER):
872 ALOG_VA(LOG_ERROR, logTag, logBody, args);
876 LOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
882 __GetModuleName(LogID id)
884 return logInfo.logTable[id].logModuleName;
888 __GetEnableInfo(LogID id)
890 return logInfo.logTable[id].loggingEnabled;
894 __InitializeLogInfo()
900 const String regPath(L"/opt/usr/etc/system-log.ini");
904 r = reg.Construct(regPath, REG_OPEN_READ_ONLY, 0);
908 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] opening ini file failed.\n");
912 __InitializeLogLevel(reg);
913 __InitializePlatformModule(reg);
917 __InitializeLogLevel(const Registry& reg)
919 String sectApp(L"Application");
920 String sectPlatform(L"Platform");
922 String entryInfo(L"INFO");
923 String entryDebug(L"DEBUG");
924 String entryException(L"EXCEPTION");
926 String strYes(L"YES");
931 r = reg.GetValue(sectApp, entryInfo, retString);
934 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Application/INFO failed.\n");
937 logInfo.applicationInfoEnabled = retString.Equals(strYes);
940 r = reg.GetValue(sectApp, entryDebug, retString);
943 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Application/DEBUG failed.\n");
946 logInfo.applicationDebugEnabled = retString.Equals(strYes);
949 r = reg.GetValue(sectApp, entryException, retString);
952 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Application/EXCEPTION failed.\n");
955 logInfo.applicationExceptionEnabled = retString.Equals(strYes);
958 r = reg.GetValue(sectPlatform, entryInfo, retString);
961 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Platform/INFO failed.\n");
964 logInfo.platformInfoEnabled = retString.Equals(strYes);
967 r = reg.GetValue(sectPlatform, entryException, retString);
970 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Platform/EXCEPTION failed.\n");
973 logInfo.platformExceptionEnabled = retString.Equals(strYes);
978 __InitializePlatformModule(const Registry& reg)
980 String strYes(L"YES");
983 String sectModule(L"PlatformModules");
987 for (int i = 0; i < NID_MAX; i++)
989 String strEntry(logInfo.logTable[i].logIDName);
990 r = reg.GetValue(sectModule, strEntry, retString);
993 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding PlatformModules/%ls failed.\n", strEntry.GetPointer());
997 logInfo.logTable[i].loggingEnabled = retString.Equals(strYes);