17418042dSoh_ci/*
27418042dSoh_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
37418042dSoh_ci * Licensed under the Apache License, Version 2.0 (the "License");
47418042dSoh_ci * you may not use this file except in compliance with the License.
57418042dSoh_ci * You may obtain a copy of the License at
67418042dSoh_ci *
77418042dSoh_ci *     http://www.apache.org/licenses/LICENSE-2.0
87418042dSoh_ci *
97418042dSoh_ci * Unless required by applicable law or agreed to in writing, software
107418042dSoh_ci * distributed under the License is distributed on an "AS IS" BASIS,
117418042dSoh_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
127418042dSoh_ci * See the License for the specific language governing permissions and
137418042dSoh_ci * limitations under the License.
147418042dSoh_ci */
157418042dSoh_ci
167418042dSoh_ci#ifndef OBJECT_STORE_LOGGER_H
177418042dSoh_ci#define OBJECT_STORE_LOGGER_H
187418042dSoh_ci#include <memory>
197418042dSoh_ci#ifdef HILOG_ENABLE
207418042dSoh_ci#include "hilog/log.h"
217418042dSoh_cinamespace OHOS::ObjectStore {
227418042dSoh_cistatic inline OHOS::HiviewDFX::HiLogLabel LogLabel()
237418042dSoh_ci{
247418042dSoh_ci    return { LOG_CORE, 0xD001652, "ObjectStore-x" };
257418042dSoh_ci}
267418042dSoh_ci
277418042dSoh_ci#define LOG_DEBUG(fmt, ...)                                                                 \
287418042dSoh_ci    do {                                                                                    \
297418042dSoh_ci        auto lable = LogLabel();                                                            \
307418042dSoh_ci        if (HiLogIsLoggable(lable.domain, lable.tag, LogLevel::LOG_DEBUG)) {                \
317418042dSoh_ci            ((void)HILOG_IMPL(lable.type, LogLevel::LOG_DEBUG, lable.domain, lable.tag,     \
327418042dSoh_ci                "%{public}d: %{public}s " fmt " ", __LINE__, __FUNCTION__, ##__VA_ARGS__)); \
337418042dSoh_ci        }                                                                                   \
347418042dSoh_ci    } while (0)
357418042dSoh_ci
367418042dSoh_ci#define LOG_INFO(fmt, ...)                                                                  \
377418042dSoh_ci    do {                                                                                    \
387418042dSoh_ci        auto lable = LogLabel();                                                            \
397418042dSoh_ci        if (HiLogIsLoggable(lable.domain, lable.tag, LogLevel::LOG_INFO)) {                 \
407418042dSoh_ci            ((void)HILOG_IMPL(lable.type, LogLevel::LOG_INFO, lable.domain, lable.tag,      \
417418042dSoh_ci                "%{public}d: %{public}s " fmt " ", __LINE__, __FUNCTION__, ##__VA_ARGS__)); \
427418042dSoh_ci        }                                                                                   \
437418042dSoh_ci    } while (0)
447418042dSoh_ci
457418042dSoh_ci#define LOG_WARN(fmt, ...)                                                                  \
467418042dSoh_ci    do {                                                                                    \
477418042dSoh_ci        auto lable = LogLabel();                                                            \
487418042dSoh_ci        if (HiLogIsLoggable(lable.domain, lable.tag, LogLevel::LOG_WARN)) {                 \
497418042dSoh_ci            ((void)HILOG_IMPL(lable.type, LogLevel::LOG_WARN, lable.domain, lable.tag,      \
507418042dSoh_ci                "%{public}d: %{public}s " fmt " ", __LINE__, __FUNCTION__, ##__VA_ARGS__)); \
517418042dSoh_ci        }                                                                                   \
527418042dSoh_ci    } while (0)
537418042dSoh_ci
547418042dSoh_ci#define LOG_ERROR(fmt, ...)                                                                 \
557418042dSoh_ci    do {                                                                                    \
567418042dSoh_ci        auto lable = LogLabel();                                                            \
577418042dSoh_ci        if (HiLogIsLoggable(lable.domain, lable.tag, LogLevel::LOG_ERROR)) {                \
587418042dSoh_ci            ((void)HILOG_IMPL(lable.type, LogLevel::LOG_ERROR, lable.domain, lable.tag,     \
597418042dSoh_ci                "%{public}d: %{public}s " fmt " ", __LINE__, __FUNCTION__, ##__VA_ARGS__)); \
607418042dSoh_ci        }                                                                                   \
617418042dSoh_ci    } while (0)
627418042dSoh_ci
637418042dSoh_ci#define LOG_FATAL(fmt, ...)                                                                 \
647418042dSoh_ci    do {                                                                                    \
657418042dSoh_ci        auto lable = LogLabel();                                                            \
667418042dSoh_ci        if (HiLogIsLoggable(lable.domain, lable.tag, LogLevel::LOG_FATAL)) {                \
677418042dSoh_ci            ((void)HILOG_IMPL(lable.type, LogLevel::LOG_FATAL, lable.domain, lable.tag,     \
687418042dSoh_ci                "%{public}d: %{public}s " fmt " ", __LINE__, __FUNCTION__, ##__VA_ARGS__)); \
697418042dSoh_ci        }                                                                                   \
707418042dSoh_ci    } while (0)
717418042dSoh_ci
727418042dSoh_ci} // namespace OHOS::ObjectStore
737418042dSoh_ci#else
747418042dSoh_ci#include <stdio.h>
757418042dSoh_ci#include <stdlib.h>
767418042dSoh_ci
777418042dSoh_ci#define LOG_DEBUG(fmt, ...) \
787418042dSoh_ci    printf("[D][ObjectStore]%s:%d %s: " fmt "\n", __FILE_NAME__, __LINE__, __FUNCTION__, ##__VA_ARGS__)
797418042dSoh_ci#define LOG_ERROR(fmt, ...) \
807418042dSoh_ci    printf("[E][ObjectStore]%s:%d %s: " fmt "\n", __FILE_NAME__, __LINE__, __FUNCTION__, ##__VA_ARGS__)
817418042dSoh_ci#define LOG_INFO(fmt, ...) \
827418042dSoh_ci    printf("[I][ObjectStore]%s:%d %s: " fmt "\n", __FILE_NAME__, __LINE__, __FUNCTION__, ##__VA_ARGS__)
837418042dSoh_ci#define LOG_WARN(fmt, ...) \
847418042dSoh_ci    printf("[W][ObjectStore]%s:%d %s: " fmt "\n", __FILE_NAME__, __LINE__, __FUNCTION__, ##__VA_ARGS__)
857418042dSoh_ci#endif // #ifdef HILOG_ENABLE
867418042dSoh_ci#endif // OBJECT_STORE_LOGGER_H
87