2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Apache License, Version 2.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://www.apache.org/licenses/LICENSE-2.0
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
19 * @brief This file defines the diagnostics types.
28 #include <sys/syscall.h>
29 #include <sys/types.h>
30 #include <FIoRegistry.h>
32 #include <FAppTypes.h>
34 #include <FBaseSysLog.h>
35 #include "FBase_Log.h"
36 #include "FBase_StringConverter.h"
37 #include "FApp_AppInfo.h"
39 using namespace Tizen::Base;
40 using namespace Tizen::Io;
41 using namespace Tizen::Base::Collection;
42 using namespace Tizen::App;
46 #define LOG_TAG "OSP_SLP"
47 #define LOG_TAG_NULL ""
50 static const char LOG_TAG_ASSERT[] = "Assert";
52 bool iniLoaded = false;
54 static bool appNameLoaded = false;
55 static char appName[LOG_MODULE_NAME_LEN_MAX];
57 static bool envLoaded = false;
58 static bool envPlatformInfoEnabled = true;
60 #define APP_RESERVED(X) NID_APP+X
61 #define BASE_RESERVED(X) NID_BASE+X
62 #define CNT_RESERVED(X) NID_CNT+X
63 #define CTXT_RESERVED(X) NID_CTXT+X
64 #define GRP_RESERVED(X) NID_GRP+X
66 #define IO_RESERVED(X) NID_IO+X
67 #define LCL_RESERVED(X) NID_LCL+X
68 #define LOC_RESERVED(X) NID_LOC+X
69 #define MEDIA_RESERVED(X) NID_MEDIA+X
70 #define MSG_RESERVED(X) NID_MSG+X
72 #define NET_RESERVED(X) NID_NET+X
73 #define SEC_RESERVED(X) NID_SEC+X
74 #define SCL_RESERVED(X) NID_SCL+X
75 #define SYS_RESERVED(X) NID_SYS+X
76 #define TEL_RESERVED(X) NID_TEL+X
78 #define TEXT_RESERVED(X) NID_TEXT+X
79 #define UI_RESERVED(X) NID_UI+X
80 #define UIX_RESERVED(X) NID_UIX+X
81 #define WEB_RESERVED(X) NID_WEB+X
82 #define SHELL_RESERVED(X) NID_SHELL+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},
297 {NID_SHELL, "NID_SHELL", "Tizen::Shell", true},
298 {SHELL_RESERVED(1) , "RESERVED", "", false},
299 {SHELL_RESERVED(2) , "RESERVED", "", false},
300 {SHELL_RESERVED(3) , "RESERVED", "", false},
301 {SHELL_RESERVED(4) , "RESERVED", "", false},
302 {SHELL_RESERVED(5) , "RESERVED", "", false},
303 {SHELL_RESERVED(6) , "RESERVED", "", false},
304 {SHELL_RESERVED(7) , "RESERVED", "", false},
305 {SHELL_RESERVED(8) , "RESERVED", "", false},
306 {SHELL_RESERVED(9) , "RESERVED", "", false}
310 // Other properties ===========================================================
314 true, //platformInfoEnabled;
315 true, //platformExceptionEnabled;
317 true, // applicationInfoEnabled
318 true, // applicationDebugEnabled
319 true, // applicationExceptionEnabled
324 AppLogInternal(const char* pFunction, int lineNumber, const char* pFormat, ...)
328 if (!logInfo.applicationInfoEnabled)
333 va_start(args, pFormat);
335 __PrintLog(static_cast<_LogType>(LOG_INFO), pFunction, lineNumber, pFormat, args);
341 AppLogTagInternal(const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...)
345 if (!logInfo.applicationInfoEnabled)
350 va_start(args, pFormat);
352 __PrintLogTag(pTag, static_cast<_LogType>(LOG_INFO), pFunction, lineNumber, pFormat, args);
358 AppLogDebugInternal(const char* pFunction, int lineNumber, const char* pFormat, ...)
362 if (!logInfo.applicationDebugEnabled)
367 va_start(args, pFormat);
369 __PrintLog(static_cast<_LogType>(LOG_DEBUG), pFunction, lineNumber, pFormat, args);
375 AppLogDebugTagInternal(const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...)
379 if (!logInfo.applicationDebugEnabled)
384 va_start(args, pFormat);
386 __PrintLogTag(pTag, static_cast<_LogType>(LOG_DEBUG), pFunction, lineNumber, pFormat, args);
392 AppLogExceptionInternal(const char* pFunction, int lineNumber, const char* pFormat, ...)
396 if (!logInfo.applicationExceptionEnabled)
401 va_start(args, pFormat);
403 __PrintLog(static_cast<_LogType>(LOG_EXCEPTION), pFunction, lineNumber, pFormat, args);
409 AppLogExceptionTagInternal(const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...)
413 if (!logInfo.applicationExceptionEnabled)
418 va_start(args, pFormat);
420 __PrintLogTag(pTag, static_cast<_LogType>(LOG_EXCEPTION), pFunction, lineNumber, pFormat, args);
426 AppassertInternal(const char* pFunction, int lineNumber)
428 char logBody[LOG_LEN_MAX];
431 char logTag[LOG_MODULE_NAME_LEN_MAX];
433 vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, &appDebug);
434 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
436 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", appName);
437 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
439 if( (platformDebug == false) && (appDebug == 0) )
441 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > App assertion passed due to debug mode off!", pFunction, lineNumber);
442 ALOG(LOG_ERROR, logTag, "%s", logBody);
446 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > AppAssert!", pFunction, lineNumber);
447 ALOG(LOG_ERROR, logTag, "%s", logBody);
453 AppassertfInternal(const char* expr, const char* pFunction, int lineNumber, const char* pFormat, ...)
455 char logBody[LOG_LEN_MAX];
459 va_start(args, pFormat);
461 vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, &appDebug);
462 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
464 if( (platformDebug == false) && (appDebug == 0) )
466 snprintf(logBody, LOG_LEN_MAX, "App assertion passed due to debug mode off! : %s", pFormat);
467 __PrintLog(static_cast<_LogType>(LOG_USER), pFunction, lineNumber, logBody, args);
472 __PrintLog(static_cast<_LogType>(LOG_USER), pFunction, lineNumber, pFormat, args);
481 SysLogInternal(unsigned long nid, const char* pFunction, int lineNumber, const char* pFormat, ...)
484 char* envValuePlatformlogging;
489 envValuePlatformlogging = getenv("TIZEN_PLATFORMLOGGING_MODE");
490 envValueDebug = getenv("TIZEN_DEBUG_MODE");
492 if ((envValuePlatformlogging != NULL) && (envValuePlatformlogging[0] == '1'))
494 envPlatformInfoEnabled = true;
496 else if ((envValueDebug != NULL) && (envValueDebug[0] == '1'))
498 envPlatformInfoEnabled = true;
502 envPlatformInfoEnabled = false;
507 if (!envPlatformInfoEnabled)
512 if (!logInfo.platformInfoEnabled)
517 va_start(args, pFormat);
519 __PrintSysLog(static_cast<_LogType>(LOG_INFO), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
525 SysLogExceptionInternal(unsigned long nid, result r, const char* pFunction, int lineNumber, const char* pFormat, ...)
531 if (!logInfo.platformExceptionEnabled)
536 va_start(args, pFormat);
538 __PrintSysLog(static_cast<_LogType>(LOG_EXCEPTION), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
544 SysLogTagInternal(unsigned long nid, const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...)
547 char* envValuePlatformlogging;
552 envValuePlatformlogging = getenv("TIZEN_PLATFORMLOGGING_MODE");
553 envValueDebug = getenv("TIZEN_DEBUG_MODE");
555 if ((envValuePlatformlogging != NULL) && (envValuePlatformlogging[0] == '1'))
557 envPlatformInfoEnabled = true;
559 else if ((envValueDebug != NULL) && (envValueDebug[0] == '1'))
561 envPlatformInfoEnabled = true;
565 envPlatformInfoEnabled = false;
570 if (!envPlatformInfoEnabled)
575 if (!logInfo.platformInfoEnabled)
580 va_start(args, pFormat);
582 __PrintSysLogTag(pTag, static_cast<_LogType>(LOG_INFO), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
588 SysLogExceptionTagInternal(unsigned long nid, const char* pTag, result r, const char* pFunction, int lineNumber,
596 if (!logInfo.platformExceptionEnabled)
601 va_start(args, pFormat);
603 __PrintSysLogTag(pTag, static_cast<_LogType>(LOG_EXCEPTION), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
610 SysAssertInternal(const char* pFileName, int lineNumber, const char* pFunction)
614 char logBody[LOG_LEN_MAX];
616 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
623 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > SysAssert!", pFunction, lineNumber);
625 ALOG(LOG_ERROR, LOG_TAG_ASSERT, "%s", logBody);
631 SysAssertfInternal(const char* expr, const char* pFunction, int lineNumber, const char* pFormat, ...)
633 char logBody[LOG_LEN_MAX];
637 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
644 va_start(args, pFormat);
646 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
647 logBody[LOG_LEN_MAX - 1] = '\0';
649 ALOG_VA(LOG_ERROR, LOG_TAG_ASSERT, logBody, args);
657 SysPropagateInternal(const char* pFunction, int lineNumber, unsigned long nid, result r)
659 char logBody[PROPAGATION_LEN_MAX];
660 snprintf(logBody, PROPAGATION_LEN_MAX, "%s(%d) > [%s] Propagating to caller...", pFunction, lineNumber, GetErrorMessage(r));
662 char logTag[LOG_MODULE_NAME_LEN_MAX];
663 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", __GetModuleName(static_cast<LogID>(nid)));
665 ALOG(LOG_ERROR, logTag, "%s", logBody);
669 SysTryReturnResultInternal(unsigned long id, result r, const char* pFunction, int lineNumber, const char* pFormat, ...)
676 if (!logInfo.platformExceptionEnabled)
683 __InitializeLogInfo();
686 if (!__GetEnableInfo(static_cast<LogID>(id)))
691 va_start(args, pFormat);
693 char logBody[LOG_LEN_MAX];
694 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > [%s] %s", pFunction, lineNumber, GetErrorMessage(r), pFormat);
695 logBody[LOG_LEN_MAX -1] = '\0';
697 char logTag[LOG_MODULE_NAME_LEN_MAX];
699 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", __GetModuleName(static_cast<LogID>(id)));
700 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
702 ALOG_VA(LOG_ERROR, logTag, logBody, args);
710 __PrintLog(_LogType type, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
714 __InitializeLogInfo();
717 char logBody[LOG_LEN_MAX];
718 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
719 logBody[LOG_LEN_MAX - 1] = '\0';
721 char logTag[LOG_MODULE_NAME_LEN_MAX];
725 appNameLoaded = true;
726 char* pAppName = _StringConverter::CopyToCharArrayN(_AppInfo::GetAppExecutableName());
727 strncpy(appName, pAppName, LOG_MODULE_NAME_LEN_MAX);
730 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", appName);
732 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
736 case static_cast<_LogType>(LOG_INFO):
737 ALOG_VA(LOG_INFO, logTag, logBody, args);
740 case static_cast<_LogType>(LOG_DEBUG):
741 ALOG_VA(LOG_DEBUG, logTag, logBody, args);
744 case static_cast<_LogType>(LOG_EXCEPTION):
745 ALOG_VA(LOG_ERROR, logTag, logBody, args);
748 case static_cast<_LogType>(LOG_USER):
749 ALOG_VA(LOG_ERROR, logTag, logBody, args);
753 ALOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
759 __PrintLogTag(const char* pTag, _LogType type, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
763 __InitializeLogInfo();
766 char logBody[LOG_LEN_MAX];
767 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
768 logBody[LOG_LEN_MAX -1] = '\0';
770 char logTag[LOG_TAG_LEN_MAX];
772 snprintf(logTag, LOG_TAG_LEN_MAX, "%s", pTag);
773 logTag[LOG_TAG_LEN_MAX - 1] = '\0';
777 case static_cast<_LogType>(LOG_INFO):
778 ALOG_VA(LOG_INFO, logTag, logBody, args);
781 case static_cast<_LogType>(LOG_DEBUG):
782 ALOG_VA(LOG_DEBUG, logTag, logBody, args);
785 case static_cast<_LogType>(LOG_EXCEPTION):
786 ALOG_VA(LOG_ERROR, logTag, logBody, args);
789 case static_cast<_LogType>(LOG_USER):
790 ALOG_VA(LOG_ERROR, logTag, logBody, args);
794 ALOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
801 __PrintSysLog(_LogType type, LogID id, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
805 __InitializeLogInfo();
808 if (!__GetEnableInfo(static_cast<LogID>(id)))
813 char logBody[LOG_LEN_MAX];
814 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
815 logBody[LOG_LEN_MAX -1] = '\0';
817 char logTag[LOG_MODULE_NAME_LEN_MAX];
819 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", __GetModuleName(static_cast<LogID>(id)));
820 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
824 case static_cast<_LogType>(LOG_INFO):
825 LOG_VA(LOG_INFO, logTag, logBody, args);
828 case static_cast<_LogType>(LOG_DEBUG):
829 LOG_VA(LOG_DEBUG, logTag, logBody, args);
832 case static_cast<_LogType>(LOG_EXCEPTION):
833 ALOG_VA(LOG_ERROR, logTag, logBody, args);
836 case static_cast<_LogType>(LOG_USER):
837 ALOG_VA(LOG_ERROR, logTag, logBody, args);
841 LOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
847 __PrintSysLogTag(const char* pTag, _LogType type, LogID id, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
851 __InitializeLogInfo();
854 if (!__GetEnableInfo(static_cast<LogID>(id)))
859 char logBody[LOG_LEN_MAX];
860 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
861 logBody[LOG_LEN_MAX -1] = '\0';
863 char logTag[LOG_MODULE_NAME_LEN_MAX + LOG_TAG_LEN_MAX];
865 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX + LOG_TAG_LEN_MAX, "%s | %s", __GetModuleName(static_cast<LogID>(id)), pTag);
866 logTag[LOG_MODULE_NAME_LEN_MAX + LOG_TAG_LEN_MAX - 1] = '\0';
870 case static_cast<_LogType>(LOG_INFO):
871 LOG_VA(LOG_INFO, logTag, logBody, args);
874 case static_cast<_LogType>(LOG_DEBUG):
875 LOG_VA(LOG_DEBUG, logTag, logBody, args);
878 case static_cast<_LogType>(LOG_EXCEPTION):
879 ALOG_VA(LOG_ERROR, logTag, logBody, args);
882 case static_cast<_LogType>(LOG_USER):
883 ALOG_VA(LOG_ERROR, logTag, logBody, args);
887 LOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
893 __GetModuleName(LogID id)
895 return logInfo.logTable[id].logModuleName;
899 __GetEnableInfo(LogID id)
901 return logInfo.logTable[id].loggingEnabled;
905 __InitializeLogInfo()
911 const String regPath(L"/opt/usr/etc/system-log.ini");
915 r = reg.Construct(regPath, REG_OPEN_READ_ONLY, 0);
919 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] opening ini file failed.\n");
923 __InitializeLogLevel(reg);
924 __InitializePlatformModule(reg);
928 __InitializeLogLevel(const Registry& reg)
930 String sectApp(L"Application");
931 String sectPlatform(L"Platform");
933 String entryInfo(L"INFO");
934 String entryDebug(L"DEBUG");
935 String entryException(L"EXCEPTION");
937 String strYes(L"YES");
942 r = reg.GetValue(sectApp, entryInfo, retString);
945 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Application/INFO failed.\n");
948 logInfo.applicationInfoEnabled = retString.Equals(strYes);
951 r = reg.GetValue(sectApp, entryDebug, retString);
954 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Application/DEBUG failed.\n");
957 logInfo.applicationDebugEnabled = retString.Equals(strYes);
960 r = reg.GetValue(sectApp, entryException, retString);
963 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Application/EXCEPTION failed.\n");
966 logInfo.applicationExceptionEnabled = retString.Equals(strYes);
969 r = reg.GetValue(sectPlatform, entryInfo, retString);
972 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Platform/INFO failed.\n");
975 logInfo.platformInfoEnabled = retString.Equals(strYes);
978 r = reg.GetValue(sectPlatform, entryException, retString);
981 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Platform/EXCEPTION failed.\n");
984 logInfo.platformExceptionEnabled = retString.Equals(strYes);
989 __InitializePlatformModule(const Registry& reg)
991 String strYes(L"YES");
994 String sectModule(L"PlatformModules");
998 for (int i = 0; i < NID_MAX; i++)
1000 String strEntry(logInfo.logTable[i].logIDName);
1001 r = reg.GetValue(sectModule, strEntry, retString);
1004 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding PlatformModules/%ls failed.\n", strEntry.GetPointer());
1008 logInfo.logTable[i].loggingEnabled = retString.Equals(strYes);