1 /*
2 * Copyright (C) 2023 Huawei Technologies Co., Ltd.
3 * Licensed under the Mulan PSL v2.
4 * You can use this software according to the terms and conditions of the Mulan PSL v2.
5 * You may obtain a copy of Mulan PSL v2 at:
6 * http://license.coscl.org.cn/MulanPSL2
7 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
8 * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
9 * PURPOSE.
10 * See the Mulan PSL v2 for more details.
11 */
12 #include <syslog.h>
13 #include <stdbool.h>
14 #include <securec.h>
15 #include "tlogcat.h"
16 #include "sys_log_api.h"
17
18 static char g_logItemBuffer[LOG_ITEM_MAX_LEN];
19
OpenTeeLog(void)20 void OpenTeeLog(void)
21 {
22 openlog(LOG_TEEOS_TAG, LOG_CONS | LOG_NDELAY, LOG_USER);
23 }
24
CloseTeeLog(void)25 void CloseTeeLog(void)
26 {
27 closelog();
28 }
29
TeeSyslogPrint(const struct LogItem * logItem,const char * logItemBuffer)30 static void TeeSyslogPrint(const struct LogItem *logItem, const char *logItemBuffer)
31 {
32 uint8_t logLevel = logItem->logLevel;
33 uint8_t syslogLevel[TOTAL_LEVEL_NUMS] = {LOG_ERR, LOG_WARNING, LOG_INFO, LOG_DEBUG, LOG_DEBUG};
34
35 if (logLevel < TOTAL_LEVEL_NUMS) {
36 logLevel = syslogLevel[logLevel];
37 } else {
38 logLevel = LOG_INFO;
39 }
40
41 (void)syslog(LOG_USER | logLevel, "index: %u: %s", logItem->serialNo, logItemBuffer);
42 }
43
LogWriteSysLog(const struct LogItem * logItem,bool isTa)44 void LogWriteSysLog(const struct LogItem *logItem, bool isTa)
45 {
46 (void)isTa;
47 if (logItem == NULL || logItem->logRealLen == 0) {
48 return;
49 }
50 if (memcpy_s(g_logItemBuffer, LOG_ITEM_MAX_LEN, logItem->logBuffer, logItem->logRealLen) == EOK) {
51 g_logItemBuffer[logItem->logRealLen - 1] = '\0';
52 TeeSyslogPrint(logItem, (const char*)g_logItemBuffer);
53 }
54 }
55