11c1b0f19Sopenharmony_ci/*
21c1b0f19Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
31c1b0f19Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
41c1b0f19Sopenharmony_ci * you may not use this file except in compliance with the License.
51c1b0f19Sopenharmony_ci * You may obtain a copy of the License at
61c1b0f19Sopenharmony_ci *
71c1b0f19Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
81c1b0f19Sopenharmony_ci *
91c1b0f19Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
101c1b0f19Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
111c1b0f19Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121c1b0f19Sopenharmony_ci * See the License for the specific language governing permissions and
131c1b0f19Sopenharmony_ci * limitations under the License.
141c1b0f19Sopenharmony_ci */
151c1b0f19Sopenharmony_ci
161c1b0f19Sopenharmony_ci#include "dh_log.h"
171c1b0f19Sopenharmony_ci
181c1b0f19Sopenharmony_ci#include "cstdlib"
191c1b0f19Sopenharmony_ci#include "string"
201c1b0f19Sopenharmony_ci
211c1b0f19Sopenharmony_ci#include "securec.h"
221c1b0f19Sopenharmony_ci
231c1b0f19Sopenharmony_ci#ifdef HI_LOG_ENABLE
241c1b0f19Sopenharmony_ci#include "hilog/log.h"
251c1b0f19Sopenharmony_ci#else
261c1b0f19Sopenharmony_ci#include <cstdio>
271c1b0f19Sopenharmony_ci#endif
281c1b0f19Sopenharmony_ci
291c1b0f19Sopenharmony_cinamespace OHOS {
301c1b0f19Sopenharmony_cinamespace DistributedHardware {
311c1b0f19Sopenharmony_ciconst std::string DC_LOG_TITLE_TAG = "DCAMERA";
321c1b0f19Sopenharmony_ciconstexpr int32_t LOG_MAX_LEN = 4096;
331c1b0f19Sopenharmony_ci
341c1b0f19Sopenharmony_cistatic void DHLogOut(DHLogLevel logLevel, const char *logBuf)
351c1b0f19Sopenharmony_ci{
361c1b0f19Sopenharmony_ci#ifdef HI_LOG_ENABLE
371c1b0f19Sopenharmony_ci    LogLevel hiLogLevel = LOG_INFO;
381c1b0f19Sopenharmony_ci    switch (logLevel) {
391c1b0f19Sopenharmony_ci        case DH_LOG_DEBUG:
401c1b0f19Sopenharmony_ci            hiLogLevel = LOG_DEBUG;
411c1b0f19Sopenharmony_ci            break;
421c1b0f19Sopenharmony_ci        case DH_LOG_INFO:
431c1b0f19Sopenharmony_ci            hiLogLevel = LOG_INFO;
441c1b0f19Sopenharmony_ci            break;
451c1b0f19Sopenharmony_ci        case DH_LOG_WARN:
461c1b0f19Sopenharmony_ci            hiLogLevel = LOG_WARN;
471c1b0f19Sopenharmony_ci            break;
481c1b0f19Sopenharmony_ci        case DH_LOG_ERROR:
491c1b0f19Sopenharmony_ci            hiLogLevel = LOG_ERROR;
501c1b0f19Sopenharmony_ci            break;
511c1b0f19Sopenharmony_ci        default:
521c1b0f19Sopenharmony_ci            break;
531c1b0f19Sopenharmony_ci    }
541c1b0f19Sopenharmony_ci    (void)HiLogPrint(LOG_CORE, hiLogLevel, LOG_DOMAIN, DC_LOG_TITLE_TAG.c_str(), "%{public}s", logBuf);
551c1b0f19Sopenharmony_ci#else
561c1b0f19Sopenharmony_ci    switch (logLevel) {
571c1b0f19Sopenharmony_ci        case DH_LOG_DEBUG:
581c1b0f19Sopenharmony_ci            printf("[D]%s\n", logBuf);
591c1b0f19Sopenharmony_ci            break;
601c1b0f19Sopenharmony_ci        case DH_LOG_INFO:
611c1b0f19Sopenharmony_ci            printf("[I]%s\n", logBuf);
621c1b0f19Sopenharmony_ci            break;
631c1b0f19Sopenharmony_ci        case DH_LOG_WARN:
641c1b0f19Sopenharmony_ci            printf("[W]%s\n", logBuf);
651c1b0f19Sopenharmony_ci            break;
661c1b0f19Sopenharmony_ci        case DH_LOG_ERROR:
671c1b0f19Sopenharmony_ci            printf("[E]%s\n", logBuf);
681c1b0f19Sopenharmony_ci            break;
691c1b0f19Sopenharmony_ci        default:
701c1b0f19Sopenharmony_ci            break;
711c1b0f19Sopenharmony_ci    }
721c1b0f19Sopenharmony_ci#endif
731c1b0f19Sopenharmony_ci}
741c1b0f19Sopenharmony_ci
751c1b0f19Sopenharmony_civoid DHLog(DHLogLevel logLevel, const char *fmt, ...)
761c1b0f19Sopenharmony_ci{
771c1b0f19Sopenharmony_ci    char logBuf[LOG_MAX_LEN] = {0};
781c1b0f19Sopenharmony_ci    va_list arg;
791c1b0f19Sopenharmony_ci
801c1b0f19Sopenharmony_ci    (void)memset_s(&arg, sizeof(va_list), 0, sizeof(va_list));
811c1b0f19Sopenharmony_ci    va_start(arg, fmt);
821c1b0f19Sopenharmony_ci    int32_t ret = vsprintf_s(logBuf, sizeof(logBuf), fmt, arg);
831c1b0f19Sopenharmony_ci    va_end(arg);
841c1b0f19Sopenharmony_ci    if (ret < 0) {
851c1b0f19Sopenharmony_ci        DHLogOut(logLevel, "DH log length error.");
861c1b0f19Sopenharmony_ci        return;
871c1b0f19Sopenharmony_ci    }
881c1b0f19Sopenharmony_ci    DHLogOut(logLevel, logBuf);
891c1b0f19Sopenharmony_ci}
901c1b0f19Sopenharmony_ci} // namespace DistributedHardware
911c1b0f19Sopenharmony_ci} // namespace OHOS
92