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 = false;
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, ...)
487 int ret = access("/home/developer/.platforminfologgingmode", F_OK);
490 envPlatformInfoEnabled = true;
494 envPlatformInfoEnabled = false;
500 if (!envPlatformInfoEnabled)
505 if (!logInfo.platformInfoEnabled)
510 va_start(args, pFormat);
512 __PrintSysLog(static_cast<_LogType>(LOG_INFO), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
518 SysLogExceptionInternal(unsigned long nid, result r, const char* pFunction, int lineNumber, const char* pFormat, ...)
524 if (!logInfo.platformExceptionEnabled)
529 va_start(args, pFormat);
531 __PrintSysLog(static_cast<_LogType>(LOG_EXCEPTION), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
537 SysLogTagInternal(unsigned long nid, const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...)
543 int ret = access("/home/developer/.platforminfologgingmode", F_OK);
546 envPlatformInfoEnabled = true;
550 envPlatformInfoEnabled = false;
556 if (!envPlatformInfoEnabled)
561 if (!logInfo.platformInfoEnabled)
566 va_start(args, pFormat);
568 __PrintSysLogTag(pTag, static_cast<_LogType>(LOG_INFO), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
574 SysLogExceptionTagInternal(unsigned long nid, const char* pTag, result r, const char* pFunction, int lineNumber,
582 if (!logInfo.platformExceptionEnabled)
587 va_start(args, pFormat);
589 __PrintSysLogTag(pTag, static_cast<_LogType>(LOG_EXCEPTION), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
596 SysAssertInternal(const char* pFileName, int lineNumber, const char* pFunction)
600 char logBody[LOG_LEN_MAX];
602 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
609 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > SysAssert!", pFunction, lineNumber);
611 ALOG(LOG_ERROR, LOG_TAG_ASSERT, "%s", logBody);
617 SysAssertfInternal(const char* expr, const char* pFunction, int lineNumber, const char* pFormat, ...)
619 char logBody[LOG_LEN_MAX];
623 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
630 va_start(args, pFormat);
632 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
633 logBody[LOG_LEN_MAX - 1] = '\0';
635 ALOG_VA(LOG_ERROR, LOG_TAG_ASSERT, logBody, args);
643 SysPropagateInternal(const char* pFunction, int lineNumber, unsigned long nid, result r)
645 char logBody[PROPAGATION_LEN_MAX];
646 snprintf(logBody, PROPAGATION_LEN_MAX, "%s(%d) > [%s] Propagating to caller...", pFunction, lineNumber, GetErrorMessage(r));
648 char logTag[LOG_MODULE_NAME_LEN_MAX];
649 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", __GetModuleName(static_cast<LogID>(nid)));
651 ALOG(LOG_ERROR, logTag, "%s", logBody);
655 SysTryReturnResultInternal(unsigned long id, result r, const char* pFunction, int lineNumber, const char* pFormat, ...)
662 if (!logInfo.platformExceptionEnabled)
669 __InitializeLogInfo();
672 if (!__GetEnableInfo(static_cast<LogID>(id)))
677 va_start(args, pFormat);
679 char logBody[LOG_LEN_MAX];
680 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > [%s] %s", pFunction, lineNumber, GetErrorMessage(r), pFormat);
681 logBody[LOG_LEN_MAX -1] = '\0';
683 char logTag[LOG_MODULE_NAME_LEN_MAX];
685 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", __GetModuleName(static_cast<LogID>(id)));
686 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
688 ALOG_VA(LOG_ERROR, logTag, logBody, args);
696 __PrintLog(_LogType type, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
700 __InitializeLogInfo();
703 char logBody[LOG_LEN_MAX];
704 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
705 logBody[LOG_LEN_MAX - 1] = '\0';
707 char logTag[LOG_MODULE_NAME_LEN_MAX];
711 appNameLoaded = true;
712 char* pAppName = _StringConverter::CopyToCharArrayN(_AppInfo::GetAppExecutableName());
713 strncpy(appName, pAppName, LOG_MODULE_NAME_LEN_MAX);
716 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", appName);
718 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
722 case static_cast<_LogType>(LOG_INFO):
723 ALOG_VA(LOG_INFO, logTag, logBody, args);
726 case static_cast<_LogType>(LOG_DEBUG):
727 ALOG_VA(LOG_DEBUG, logTag, logBody, args);
730 case static_cast<_LogType>(LOG_EXCEPTION):
731 ALOG_VA(LOG_ERROR, logTag, logBody, args);
734 case static_cast<_LogType>(LOG_USER):
735 ALOG_VA(LOG_ERROR, logTag, logBody, args);
739 ALOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
745 __PrintLogTag(const char* pTag, _LogType type, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
749 __InitializeLogInfo();
752 char logBody[LOG_LEN_MAX];
753 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
754 logBody[LOG_LEN_MAX -1] = '\0';
756 char logTag[LOG_TAG_LEN_MAX];
758 snprintf(logTag, LOG_TAG_LEN_MAX, "%s", pTag);
759 logTag[LOG_TAG_LEN_MAX - 1] = '\0';
763 case static_cast<_LogType>(LOG_INFO):
764 ALOG_VA(LOG_INFO, logTag, logBody, args);
767 case static_cast<_LogType>(LOG_DEBUG):
768 ALOG_VA(LOG_DEBUG, logTag, logBody, args);
771 case static_cast<_LogType>(LOG_EXCEPTION):
772 ALOG_VA(LOG_ERROR, logTag, logBody, args);
775 case static_cast<_LogType>(LOG_USER):
776 ALOG_VA(LOG_ERROR, logTag, logBody, args);
780 ALOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
787 __PrintSysLog(_LogType type, LogID id, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
791 __InitializeLogInfo();
794 if (!__GetEnableInfo(static_cast<LogID>(id)))
799 char logBody[LOG_LEN_MAX];
800 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
801 logBody[LOG_LEN_MAX -1] = '\0';
803 char logTag[LOG_MODULE_NAME_LEN_MAX];
805 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", __GetModuleName(static_cast<LogID>(id)));
806 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
810 case static_cast<_LogType>(LOG_INFO):
811 ALOG_VA(LOG_INFO, logTag, logBody, args);
814 case static_cast<_LogType>(LOG_DEBUG):
815 ALOG_VA(LOG_DEBUG, logTag, logBody, args);
818 case static_cast<_LogType>(LOG_EXCEPTION):
819 ALOG_VA(LOG_ERROR, logTag, logBody, args);
822 case static_cast<_LogType>(LOG_USER):
823 ALOG_VA(LOG_ERROR, logTag, logBody, args);
827 ALOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
833 __PrintSysLogTag(const char* pTag, _LogType type, LogID id, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
837 __InitializeLogInfo();
840 if (!__GetEnableInfo(static_cast<LogID>(id)))
845 char logBody[LOG_LEN_MAX];
846 snprintf(logBody, LOG_LEN_MAX, "%s(%d) > %s", pFunction, lineNumber, pFormat);
847 logBody[LOG_LEN_MAX -1] = '\0';
849 char logTag[LOG_MODULE_NAME_LEN_MAX + LOG_TAG_LEN_MAX];
851 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX + LOG_TAG_LEN_MAX, "%s | %s", __GetModuleName(static_cast<LogID>(id)), pTag);
852 logTag[LOG_MODULE_NAME_LEN_MAX + LOG_TAG_LEN_MAX - 1] = '\0';
856 case static_cast<_LogType>(LOG_INFO):
857 ALOG_VA(LOG_INFO, logTag, logBody, args);
860 case static_cast<_LogType>(LOG_DEBUG):
861 ALOG_VA(LOG_DEBUG, logTag, logBody, args);
864 case static_cast<_LogType>(LOG_EXCEPTION):
865 ALOG_VA(LOG_ERROR, logTag, logBody, args);
868 case static_cast<_LogType>(LOG_USER):
869 ALOG_VA(LOG_ERROR, logTag, logBody, args);
873 ALOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
879 __GetModuleName(LogID id)
881 return logInfo.logTable[id].logModuleName;
885 __GetEnableInfo(LogID id)
887 return logInfo.logTable[id].loggingEnabled;
891 __InitializeLogInfo()
897 const String regPath(L"/opt/usr/etc/system-log.ini");
901 r = reg.Construct(regPath, REG_OPEN_READ_ONLY, 0);
905 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] opening ini file failed.\n");
909 __InitializeLogLevel(reg);
910 __InitializePlatformModule(reg);
914 __InitializeLogLevel(const Registry& reg)
916 String sectApp(L"Application");
917 String sectPlatform(L"Platform");
919 String entryInfo(L"INFO");
920 String entryDebug(L"DEBUG");
921 String entryException(L"EXCEPTION");
923 String strYes(L"YES");
928 r = reg.GetValue(sectApp, entryInfo, retString);
931 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Application/INFO failed.\n");
934 logInfo.applicationInfoEnabled = retString.Equals(strYes);
937 r = reg.GetValue(sectApp, entryDebug, retString);
940 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Application/DEBUG failed.\n");
943 logInfo.applicationDebugEnabled = retString.Equals(strYes);
946 r = reg.GetValue(sectApp, entryException, retString);
949 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Application/EXCEPTION failed.\n");
952 logInfo.applicationExceptionEnabled = retString.Equals(strYes);
955 r = reg.GetValue(sectPlatform, entryInfo, retString);
958 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Platform/INFO failed.\n");
961 logInfo.platformInfoEnabled = retString.Equals(strYes);
964 r = reg.GetValue(sectPlatform, entryException, retString);
967 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Platform/EXCEPTION failed.\n");
970 logInfo.platformExceptionEnabled = retString.Equals(strYes);
975 __InitializePlatformModule(const Registry& reg)
977 String strYes(L"YES");
980 String sectModule(L"PlatformModules");
984 for (int i = 0; i < NID_MAX; i++)
986 String strEntry(logInfo.logTable[i].logIDName);
987 r = reg.GetValue(sectModule, strEntry, retString);
990 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding PlatformModules/%ls failed.\n", strEntry.GetPointer());
994 logInfo.logTable[i].loggingEnabled = retString.Equals(strYes);