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 #define APP_RESERVED(X) NID_APP+X
59 #define BASE_RESERVED(X) NID_BASE+X
60 #define CNT_RESERVED(X) NID_CNT+X
61 #define CTXT_RESERVED(X) NID_CTXT+X
62 #define GRP_RESERVED(X) NID_GRP+X
64 #define IO_RESERVED(X) NID_IO+X
65 #define LCL_RESERVED(X) NID_LCL+X
66 #define LOC_RESERVED(X) NID_LOC+X
67 #define MEDIA_RESERVED(X) NID_MEDIA+X
68 #define MSG_RESERVED(X) NID_MSG+X
70 #define NET_RESERVED(X) NID_NET+X
71 #define SEC_RESERVED(X) NID_SEC+X
72 #define SCL_RESERVED(X) NID_SCL+X
73 #define SYS_RESERVED(X) NID_SYS+X
74 #define TEL_RESERVED(X) NID_TEL+X
76 #define TEXT_RESERVED(X) NID_TEXT+X
77 #define UI_RESERVED(X) NID_UI+X
78 #define UIX_RESERVED(X) NID_UIX+X
79 #define WEB_RESERVED(X) NID_WEB+X
84 //OSP Namespace ID ===============================================================
85 {NID_APP, "NID_APP", "Tizen::App", true},
86 {APP_RESERVED(1) , "RESERVED", "", false},
87 {APP_RESERVED(2) , "RESERVED", "", false},
88 {APP_RESERVED(3) , "RESERVED", "", false},
89 {APP_RESERVED(4) , "RESERVED", "", false},
90 {APP_RESERVED(5) , "RESERVED", "", false},
91 {APP_RESERVED(6) , "RESERVED", "", false},
92 {APP_RESERVED(7) , "RESERVED", "", false},
93 {APP_RESERVED(8) , "RESERVED", "", false},
94 {APP_RESERVED(9) , "RESERVED", "", false},
96 {NID_BASE, "NID_BASE", "Tizen::Base", true},
97 {NID_BASE_COL, "NID_BASE_COL", "Tizen::Base::Collection", true},
98 {NID_BASE_RT, "NID_BASE_RT", "Tizen::Base::Runtime", true},
99 {NID_BASE_UTIL, "NID_BASE_UTIL", "Tizen::Base::Utility", true},
100 {BASE_RESERVED(4) , "RESERVED", "", false},
101 {BASE_RESERVED(5) , "RESERVED", "", false},
102 {BASE_RESERVED(6) , "RESERVED", "", false},
103 {BASE_RESERVED(7) , "RESERVED", "", false},
104 {BASE_RESERVED(8) , "RESERVED", "", false},
105 {BASE_RESERVED(9) , "RESERVED", "", false},
107 {NID_CNT, "NID_CNT", "Tizen::Content", true},
108 {CNT_RESERVED(1) , "RESERVED", "", false},
109 {CNT_RESERVED(2) , "RESERVED", "", false},
110 {CNT_RESERVED(3) , "RESERVED", "", false},
111 {CNT_RESERVED(4) , "RESERVED", "", false},
112 {CNT_RESERVED(5) , "RESERVED", "", false},
113 {CNT_RESERVED(6) , "RESERVED", "", false},
114 {CNT_RESERVED(7) , "RESERVED", "", false},
115 {CNT_RESERVED(8) , "RESERVED", "", false},
116 {CNT_RESERVED(9) , "RESERVED", "", false},
118 {NID_CTXT, "NID_CTXT", "Tizen::Context", true},
119 {CTXT_RESERVED(1) , "RESERVED", "", false},
120 {CTXT_RESERVED(2) , "RESERVED", "", false},
121 {CTXT_RESERVED(3) , "RESERVED", "", false},
122 {CTXT_RESERVED(4) , "RESERVED", "", false},
123 {CTXT_RESERVED(5) , "RESERVED", "", false},
124 {CTXT_RESERVED(6) , "RESERVED", "", false},
125 {CTXT_RESERVED(7) , "RESERVED", "", false},
126 {CTXT_RESERVED(8) , "RESERVED", "", false},
127 {CTXT_RESERVED(9) , "RESERVED", "", false},
129 {NID_GRP, "NID_GRP", "Tizen::Graphics", true},
130 {GRP_RESERVED(1) , "RESERVED", "", false},
131 {GRP_RESERVED(2) , "RESERVED", "", false},
132 {GRP_RESERVED(3) , "RESERVED", "", false},
133 {GRP_RESERVED(4) , "RESERVED", "", false},
134 {GRP_RESERVED(5) , "RESERVED", "", false},
135 {GRP_RESERVED(6) , "RESERVED", "", false},
136 {GRP_RESERVED(7) , "RESERVED", "", false},
137 {GRP_RESERVED(8) , "RESERVED", "", false},
138 {GRP_RESERVED(9) , "RESERVED", "", false},
140 {NID_IO, "NID_IO", "Tizen::Io", true},
141 {IO_RESERVED(1) , "RESERVED", "", false},
142 {IO_RESERVED(2) , "RESERVED", "", false},
143 {IO_RESERVED(3) , "RESERVED", "", false},
144 {IO_RESERVED(4) , "RESERVED", "", false},
145 {IO_RESERVED(5) , "RESERVED", "", false},
146 {IO_RESERVED(6) , "RESERVED", "", false},
147 {IO_RESERVED(7) , "RESERVED", "", false},
148 {IO_RESERVED(8) , "RESERVED", "", false},
149 {IO_RESERVED(9) , "RESERVED", "", false},
151 {NID_LCL, "NID_LCL", "Tizen::Locales", true},
152 {LCL_RESERVED(1) , "RESERVED", "", false},
153 {LCL_RESERVED(2) , "RESERVED", "", false},
154 {LCL_RESERVED(3) , "RESERVED", "", false},
155 {LCL_RESERVED(4) , "RESERVED", "", false},
156 {LCL_RESERVED(5) , "RESERVED", "", false},
157 {LCL_RESERVED(6) , "RESERVED", "", false},
158 {LCL_RESERVED(7) , "RESERVED", "", false},
159 {LCL_RESERVED(8) , "RESERVED", "", false},
160 {LCL_RESERVED(9) , "RESERVED", "", false},
162 {NID_LOC, "NID_LOC", "Tizen::Locations", true},
163 {NID_LOC_CTRL, "NID_LOC_CTRL", "Tizen::Locations::Controls", true},
164 {NID_LOC_SVC, "NID_LOC_SVC", "Tizen::Locations::Services", true},
165 {LOC_RESERVED(3) , "RESERVED", "", false},
166 {LOC_RESERVED(4) , "RESERVED", "", false},
167 {LOC_RESERVED(5) , "RESERVED", "", false},
168 {LOC_RESERVED(6) , "RESERVED", "", false},
169 {LOC_RESERVED(7) , "RESERVED", "", false},
170 {LOC_RESERVED(8) , "RESERVED", "", false},
171 {LOC_RESERVED(9) , "RESERVED", "", false},
173 {NID_MEDIA, "NID_MEDIA", "Tizen::Media", true},
174 {MEDIA_RESERVED(1) , "RESERVED", "", false},
175 {MEDIA_RESERVED(2) , "RESERVED", "", false},
176 {MEDIA_RESERVED(3) , "RESERVED", "", false},
177 {MEDIA_RESERVED(4) , "RESERVED", "", false},
178 {MEDIA_RESERVED(5) , "RESERVED", "", false},
179 {MEDIA_RESERVED(6) , "RESERVED", "", false},
180 {MEDIA_RESERVED(7) , "RESERVED", "", false},
181 {MEDIA_RESERVED(8) , "RESERVED", "", false},
182 {MEDIA_RESERVED(9) , "RESERVED", "", false},
184 {NID_MSG, "NID_MSG", "Tizen::Messaging", true},
185 {MSG_RESERVED(1) , "RESERVED", "", false},
186 {MSG_RESERVED(2) , "RESERVED", "", false},
187 {MSG_RESERVED(3) , "RESERVED", "", false},
188 {MSG_RESERVED(4) , "RESERVED", "", false},
189 {MSG_RESERVED(5) , "RESERVED", "", false},
190 {MSG_RESERVED(6) , "RESERVED", "", false},
191 {MSG_RESERVED(7) , "RESERVED", "", false},
192 {MSG_RESERVED(8) , "RESERVED", "", false},
193 {MSG_RESERVED(9) , "RESERVED", "", false},
195 {NID_NET, "NID_NET", "Tizen::Net", true},
196 {NID_NET_BT, "NID_NET_BT", "Tizen::Net::Bluetooth", true},
197 {NID_NET_HTTP, "NID_NET_HTTP", "Tizen::Net::Http", true},
198 {NID_NET_NFC, "NID_NET_NFC", "Tizen::Net::Nfc", true},
199 {NID_NET_SOCK, "NID_NET_SOCK", "Tizen::Net::Sockets", true},
200 {NID_NET_WIFI, "NID_NET_WIFI", "Tizen::Net::Wifi", true},
201 {NET_RESERVED(6) , "RESERVED", "", false},
202 {NET_RESERVED(7) , "RESERVED", "", false},
203 {NET_RESERVED(8) , "RESERVED", "", false},
204 {NET_RESERVED(9) , "RESERVED", "", false},
206 {NID_SEC, "NID_SEC", "Tizen::Security", true},
207 {NID_SEC_CERT, "NID_SEC_CERT", "Tizen::Security::Cert", true},
208 {NID_SEC_CRYPTO, "NID_SEC_CRYPTO", "Tizen::Security::Crypto", true},
209 {SEC_RESERVED(3) , "RESERVED", "", false},
210 {SEC_RESERVED(4) , "RESERVED", "", false},
211 {SEC_RESERVED(5) , "RESERVED", "", false},
212 {SEC_RESERVED(6) , "RESERVED", "", false},
213 {SEC_RESERVED(7) , "RESERVED", "", false},
214 {SEC_RESERVED(8) , "RESERVED", "", false},
215 {SEC_RESERVED(9) , "RESERVED", "", false},
217 {NID_SCL, "NID_SCL", "Tizen::Social", true},
218 {SCL_RESERVED(1) , "RESERVED", "", false},
219 {SCL_RESERVED(2) , "RESERVED", "", false},
220 {SCL_RESERVED(3) , "RESERVED", "", false},
221 {SCL_RESERVED(4) , "RESERVED", "", false},
222 {SCL_RESERVED(5) , "RESERVED", "", false},
223 {SCL_RESERVED(6) , "RESERVED", "", false},
224 {SCL_RESERVED(7) , "RESERVED", "", false},
225 {SCL_RESERVED(8) , "RESERVED", "", false},
226 {SCL_RESERVED(9) , "RESERVED", "", false},
228 {NID_SYS, "NID_SYS", "Tizen::System", true},
229 {SYS_RESERVED(1) , "RESERVED", "", false},
230 {SYS_RESERVED(2) , "RESERVED", "", false},
231 {SYS_RESERVED(3) , "RESERVED", "", false},
232 {SYS_RESERVED(4) , "RESERVED", "", false},
233 {SYS_RESERVED(5) , "RESERVED", "", false},
234 {SYS_RESERVED(6) , "RESERVED", "", false},
235 {SYS_RESERVED(7) , "RESERVED", "", false},
236 {SYS_RESERVED(8) , "RESERVED", "", false},
237 {SYS_RESERVED(9) , "RESERVED", "", false},
239 {NID_TEL, "NID_TEL", "Tizen::Telephony", true},
240 {TEL_RESERVED(1) , "RESERVED", "", false},
241 {TEL_RESERVED(2) , "RESERVED", "", false},
242 {TEL_RESERVED(3) , "RESERVED", "", false},
243 {TEL_RESERVED(4) , "RESERVED", "", false},
244 {TEL_RESERVED(5) , "RESERVED", "", false},
245 {TEL_RESERVED(6) , "RESERVED", "", false},
246 {TEL_RESERVED(7) , "RESERVED", "", false},
247 {TEL_RESERVED(8) , "RESERVED", "", false},
248 {TEL_RESERVED(9) , "RESERVED", "", false},
250 {NID_TEXT, "NID_TEXT", "Tizen::Text", true},
251 {TEXT_RESERVED(1) , "RESERVED", "", false},
252 {TEXT_RESERVED(2) , "RESERVED", "", false},
253 {TEXT_RESERVED(3) , "RESERVED", "", false},
254 {TEXT_RESERVED(4) , "RESERVED", "", false},
255 {TEXT_RESERVED(5) , "RESERVED", "", false},
256 {TEXT_RESERVED(6) , "RESERVED", "", false},
257 {TEXT_RESERVED(7) , "RESERVED", "", false},
258 {TEXT_RESERVED(8) , "RESERVED", "", false},
259 {TEXT_RESERVED(9) , "RESERVED", "", false},
261 {NID_UI, "NID_UI", "Tizen::Ui", true},
262 {NID_UI_ANIM, "NID_UI_ANIM", "Tizen::Ui::Animations", true},
263 {NID_UI_CTRL, "NID_UI_CTRL", "Tizen::Ui::Controls", true},
264 {NID_UI_EFFECT, "NID_UI_EFFECT", "Tizen::Ui::Effects", true},
265 {NID_UI_IME, "NID_UI_IME", "Tizen::Ui::Ime", true},
266 {NID_UI_SCENES, "NID_UI_SCENES", "Tizen::Ui::Scenes", true},
267 {UI_RESERVED(6) , "RESERVED", "", false},
268 {UI_RESERVED(7) , "RESERVED", "", false},
269 {UI_RESERVED(8) , "RESERVED", "", false},
270 {UI_RESERVED(9) , "RESERVED", "", false},
272 {NID_UIX, "NID_UIX", "Tizen::Uix", true},
273 {NID_UIX_SPEECH, "NID_UIX_SPEECH", "Tizen::Uix::Speech", true},
274 {UIX_RESERVED(2) , "RESERVED", "", false},
275 {UIX_RESERVED(3) , "RESERVED", "", false},
276 {UIX_RESERVED(4) , "RESERVED", "", false},
277 {UIX_RESERVED(5) , "RESERVED", "", false},
278 {UIX_RESERVED(6) , "RESERVED", "", false},
279 {UIX_RESERVED(7) , "RESERVED", "", false},
280 {UIX_RESERVED(8) , "RESERVED", "", false},
281 {UIX_RESERVED(9) , "RESERVED", "", false},
283 {NID_WEB, "NID_WEB", "Tizen::Web", true},
284 {NID_WEB_CTRL, "NID_WEB_CTRL", "Tizen::Web::Controls", true},
285 {NID_WEB_JSON, "NID_WEB_JSON", "Tizen::Web::Json", true},
286 {WEB_RESERVED(3) , "RESERVED", "", false},
287 {WEB_RESERVED(4) , "RESERVED", "", false},
288 {WEB_RESERVED(5) , "RESERVED", "", false},
289 {WEB_RESERVED(6) , "RESERVED", "", false},
290 {WEB_RESERVED(7) , "RESERVED", "", false},
291 {WEB_RESERVED(8) , "RESERVED", "", false},
292 {WEB_RESERVED(9) , "RESERVED", "", false}
296 // Other properties ===========================================================
300 true, //platformInfoEnabled;
301 true, //platformExceptionEnabled;
303 true, // applicationInfoEnabled
304 true, // applicationDebugEnabled
305 true, // applicationExceptionEnabled
310 AppLogInternal(const char* pFunction, int lineNumber, const char* pFormat, ...)
314 if (!logInfo.applicationInfoEnabled)
319 va_start(args, pFormat);
321 __PrintLog(static_cast<_LogType>(LOG_INFO), pFunction, lineNumber, pFormat, args);
327 AppLogTagInternal(const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...)
331 if (!logInfo.applicationInfoEnabled)
336 va_start(args, pFormat);
338 __PrintLogTag(pTag, static_cast<_LogType>(LOG_INFO), pFunction, lineNumber, pFormat, args);
344 AppLogDebugInternal(const char* pFunction, int lineNumber, const char* pFormat, ...)
348 if (!logInfo.applicationDebugEnabled)
353 va_start(args, pFormat);
355 __PrintLog(static_cast<_LogType>(LOG_DEBUG), pFunction, lineNumber, pFormat, args);
361 AppLogDebugTagInternal(const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...)
365 if (!logInfo.applicationDebugEnabled)
370 va_start(args, pFormat);
372 __PrintLogTag(pTag, static_cast<_LogType>(LOG_DEBUG), pFunction, lineNumber, pFormat, args);
378 AppLogExceptionInternal(const char* pFunction, int lineNumber, const char* pFormat, ...)
382 if (!logInfo.applicationExceptionEnabled)
387 va_start(args, pFormat);
389 __PrintLog(static_cast<_LogType>(LOG_EXCEPTION), pFunction, lineNumber, pFormat, args);
395 AppLogExceptionTagInternal(const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...)
399 if (!logInfo.applicationExceptionEnabled)
404 va_start(args, pFormat);
406 __PrintLogTag(pTag, static_cast<_LogType>(LOG_EXCEPTION), pFunction, lineNumber, pFormat, args);
412 AppassertInternal(const char* pFunction, int lineNumber)
414 char logBody[LOG_LEN_MAX];
417 char logTag[LOG_MODULE_NAME_LEN_MAX];
419 vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, &appDebug);
420 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
422 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", appName);
423 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
425 if( (platformDebug == false) && (appDebug == 0) )
427 snprintf(logBody, LOG_LEN_MAX, "%s (%d). > App assertion passed due to debug mode off!", pFunction, lineNumber);
428 ALOG(LOG_ERROR, logTag, logBody);
432 snprintf(logBody, LOG_LEN_MAX, "%s (%d). > AppAssert!", pFunction, lineNumber);
433 ALOG(LOG_ERROR, logTag, logBody);
439 AppassertfInternal(const char* expr, const char* pFunction, int lineNumber, const char* pFormat, ...)
441 char logBody[LOG_LEN_MAX];
445 va_start(args, pFormat);
447 vconf_get_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, &appDebug);
448 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
450 if( (platformDebug == false) && (appDebug == 0) )
452 snprintf(logBody, LOG_LEN_MAX, "App assertion passed due to debug mode off! : %s", pFormat);
453 __PrintLog(static_cast<_LogType>(LOG_USER), pFunction, lineNumber, logBody, args);
458 __PrintLog(static_cast<_LogType>(LOG_USER), pFunction, lineNumber, pFormat, args);
467 SysLogInternal(unsigned long nid, const char* pFunction, int lineNumber, const char* pFormat, ...)
471 if (!logInfo.platformInfoEnabled)
476 va_start(args, pFormat);
478 __PrintSysLog(static_cast<_LogType>(LOG_INFO), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
484 SysLogExceptionInternal(unsigned long nid, result r, const char* pFunction, int lineNumber, const char* pFormat, ...)
490 if (!logInfo.platformExceptionEnabled)
495 va_start(args, pFormat);
497 __PrintSysLog(static_cast<_LogType>(LOG_EXCEPTION), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
503 SysLogTagInternal(unsigned long nid, const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...)
507 if (!logInfo.platformInfoEnabled)
512 va_start(args, pFormat);
514 __PrintSysLogTag(pTag, static_cast<_LogType>(LOG_INFO), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
520 SysLogExceptionTagInternal(unsigned long nid, const char* pTag, result r, const char* pFunction, int lineNumber,
528 if (!logInfo.platformExceptionEnabled)
533 va_start(args, pFormat);
535 __PrintSysLogTag(pTag, static_cast<_LogType>(LOG_EXCEPTION), static_cast<LogID>(nid), pFunction, lineNumber, pFormat, args);
542 SysAssertInternal(const char* pFileName, int lineNumber, const char* pFunction)
546 char logBody[LOG_LEN_MAX];
548 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
555 snprintf(logBody, LOG_LEN_MAX, "%s (%d). > SysAssert!", pFunction, lineNumber);
557 ALOG(LOG_ERROR, LOG_TAG_ASSERT, logBody);
563 SysAssertfInternal(const char* expr, const char* pFunction, int lineNumber, const char* pFormat, ...)
565 char logBody[LOG_LEN_MAX];
569 platformDebug = File::IsFileExist( "/opt/etc/.debugmode");
576 va_start(args, pFormat);
578 snprintf(logBody, LOG_LEN_MAX, "%s (%d). > %s", pFunction, lineNumber, pFormat);
579 logBody[LOG_LEN_MAX - 1] = '\0';
581 ALOG_VA(LOG_ERROR, LOG_TAG_ASSERT, logBody, args);
589 SysPropagateInternal(const char* pFunction, int lineNumber, unsigned long nid, result r)
591 char logBody[PROPAGATION_LEN_MAX];
592 snprintf(logBody, PROPAGATION_LEN_MAX, "%s (%d). > [%s] Propagating to caller...", pFunction, lineNumber, GetErrorMessage(r));
594 char logTag[LOG_MODULE_NAME_LEN_MAX];
595 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", __GetModuleName(static_cast<LogID>(nid)));
597 ALOG(LOG_ERROR, logTag, logBody);
601 SysTryReturnResultInternal(unsigned long id, result r, const char* pFunction, int lineNumber, const char* pFormat, ...)
608 if (!logInfo.platformExceptionEnabled)
615 __InitializeLogInfo();
618 if (!__GetEnableInfo(static_cast<LogID>(id)))
623 va_start(args, pFormat);
625 char logBody[LOG_LEN_MAX];
626 snprintf(logBody, LOG_LEN_MAX, "%s (%d). > [%s] %s", pFunction, lineNumber, GetErrorMessage(r), pFormat);
627 logBody[LOG_LEN_MAX -1] = '\0';
629 char logTag[LOG_MODULE_NAME_LEN_MAX];
631 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", __GetModuleName(static_cast<LogID>(id)));
632 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
634 ALOG_VA(LOG_ERROR, logTag, logBody, args);
642 __PrintLog(_LogType type, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
646 __InitializeLogInfo();
649 char logBody[LOG_LEN_MAX];
650 snprintf(logBody, LOG_LEN_MAX, "%s (%d). > %s", pFunction, lineNumber, pFormat);
651 logBody[LOG_LEN_MAX - 1] = '\0';
653 char logTag[LOG_MODULE_NAME_LEN_MAX];
657 appNameLoaded = true;
658 char* pAppName = _StringConverter::CopyToCharArrayN(_AppInfo::GetAppExecutableName());
659 strncpy(appName, pAppName, LOG_MODULE_NAME_LEN_MAX);
662 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", appName);
664 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
668 case static_cast<_LogType>(LOG_INFO):
669 ALOG_VA(LOG_INFO, logTag, logBody, args);
672 case static_cast<_LogType>(LOG_DEBUG):
673 ALOG_VA(LOG_DEBUG, logTag, logBody, args);
676 case static_cast<_LogType>(LOG_EXCEPTION):
677 ALOG_VA(LOG_ERROR, logTag, logBody, args);
680 case static_cast<_LogType>(LOG_USER):
681 ALOG_VA(LOG_ERROR, logTag, logBody, args);
685 ALOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
691 __PrintLogTag(const char* pTag, _LogType type, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
695 __InitializeLogInfo();
698 char logBody[LOG_LEN_MAX];
699 snprintf(logBody, LOG_LEN_MAX, "%s (%d). > %s", pFunction, lineNumber, pFormat);
700 logBody[LOG_LEN_MAX -1] = '\0';
702 char logTag[LOG_TAG_LEN_MAX];
704 snprintf(logTag, LOG_TAG_LEN_MAX, "%s", pTag);
705 logTag[LOG_TAG_LEN_MAX - 1] = '\0';
709 case static_cast<_LogType>(LOG_INFO):
710 ALOG_VA(LOG_INFO, logTag, logBody, args);
713 case static_cast<_LogType>(LOG_DEBUG):
714 ALOG_VA(LOG_DEBUG, logTag, logBody, args);
717 case static_cast<_LogType>(LOG_EXCEPTION):
718 ALOG_VA(LOG_ERROR, logTag, logBody, args);
721 case static_cast<_LogType>(LOG_USER):
722 ALOG_VA(LOG_ERROR, logTag, logBody, args);
726 ALOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
733 __PrintSysLog(_LogType type, LogID id, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
737 __InitializeLogInfo();
740 if (!__GetEnableInfo(static_cast<LogID>(id)))
745 char logBody[LOG_LEN_MAX];
746 snprintf(logBody, LOG_LEN_MAX, "%s (%d). > %s", pFunction, lineNumber, pFormat);
747 logBody[LOG_LEN_MAX -1] = '\0';
749 char logTag[LOG_MODULE_NAME_LEN_MAX];
751 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX, "%s", __GetModuleName(static_cast<LogID>(id)));
752 logTag[LOG_MODULE_NAME_LEN_MAX - 1] = '\0';
756 case static_cast<_LogType>(LOG_INFO):
757 LOG_VA(LOG_INFO, logTag, logBody, args);
760 case static_cast<_LogType>(LOG_DEBUG):
761 LOG_VA(LOG_DEBUG, logTag, logBody, args);
764 case static_cast<_LogType>(LOG_EXCEPTION):
765 ALOG_VA(LOG_ERROR, logTag, logBody, args);
768 case static_cast<_LogType>(LOG_USER):
769 ALOG_VA(LOG_ERROR, logTag, logBody, args);
773 LOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
779 __PrintSysLogTag(const char* pTag, _LogType type, LogID id, const char* pFunction, int lineNumber, const char* pFormat, va_list args)
783 __InitializeLogInfo();
786 if (!__GetEnableInfo(static_cast<LogID>(id)))
791 char logBody[LOG_LEN_MAX];
792 snprintf(logBody, LOG_LEN_MAX, "%s (%d). > %s", pFunction, lineNumber, pFormat);
793 logBody[LOG_LEN_MAX -1] = '\0';
795 char logTag[LOG_MODULE_NAME_LEN_MAX + LOG_TAG_LEN_MAX];
797 snprintf(logTag, LOG_MODULE_NAME_LEN_MAX + LOG_TAG_LEN_MAX, "%s | %s", __GetModuleName(static_cast<LogID>(id)), pTag);
798 logTag[LOG_MODULE_NAME_LEN_MAX + LOG_TAG_LEN_MAX - 1] = '\0';
802 case static_cast<_LogType>(LOG_INFO):
803 LOG_VA(LOG_INFO, logTag, logBody, args);
806 case static_cast<_LogType>(LOG_DEBUG):
807 LOG_VA(LOG_DEBUG, logTag, logBody, args);
810 case static_cast<_LogType>(LOG_EXCEPTION):
811 ALOG_VA(LOG_ERROR, logTag, logBody, args);
814 case static_cast<_LogType>(LOG_USER):
815 ALOG_VA(LOG_ERROR, logTag, logBody, args);
819 LOG_VA(LOG_DEBUG, LOG_TAG_NULL, logBody, args);
825 __GetModuleName(LogID id)
827 return logInfo.logTable[id].logModuleName;
831 __GetEnableInfo(LogID id)
833 return logInfo.logTable[id].loggingEnabled;
837 __InitializeLogInfo()
843 const String regPath(L"/opt/usr/etc/system-log.ini");
847 r = reg.Construct(regPath, REG_OPEN_READ_ONLY, 0);
851 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] opening ini file failed.\n");
855 __InitializeLogLevel(reg);
856 __InitializePlatformModule(reg);
860 __InitializeLogLevel(const Registry& reg)
862 String sectApp(L"Application");
863 String sectPlatform(L"Platform");
865 String entryInfo(L"INFO");
866 String entryDebug(L"DEBUG");
867 String entryException(L"EXCEPTION");
869 String strYes(L"YES");
874 r = reg.GetValue(sectApp, entryInfo, retString);
877 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Application/INFO failed.\n");
880 logInfo.applicationInfoEnabled = retString.Equals(strYes);
883 r = reg.GetValue(sectApp, entryDebug, retString);
886 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Application/DEBUG failed.\n");
889 logInfo.applicationDebugEnabled = retString.Equals(strYes);
892 r = reg.GetValue(sectApp, entryException, retString);
895 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Application/EXCEPTION failed.\n");
898 logInfo.applicationExceptionEnabled = retString.Equals(strYes);
901 r = reg.GetValue(sectPlatform, entryInfo, retString);
904 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Platform/INFO failed.\n");
907 logInfo.platformInfoEnabled = retString.Equals(strYes);
910 r = reg.GetValue(sectPlatform, entryException, retString);
913 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding Platform/EXCEPTION failed.\n");
916 logInfo.platformExceptionEnabled = retString.Equals(strYes);
921 __InitializePlatformModule(const Registry& reg)
923 String strYes(L"YES");
926 String sectModule(L"PlatformModules");
930 for (int i = 0; i < NID_MAX; i++)
932 String strEntry(logInfo.logTable[i].logIDName);
933 r = reg.GetValue(sectModule, strEntry, retString);
936 ALOG(LOG_ERROR, LOG_TAG, "[EXCEPTION] finding PlatformModules/%ls failed.\n", strEntry.GetPointer());
940 logInfo.logTable[i].loggingEnabled = retString.Equals(strYes);