1c29fa5a6Sopenharmony_ci/* 2c29fa5a6Sopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3c29fa5a6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4c29fa5a6Sopenharmony_ci * you may not use this file except in compliance with the License. 5c29fa5a6Sopenharmony_ci * You may obtain a copy of the License at 6c29fa5a6Sopenharmony_ci * 7c29fa5a6Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8c29fa5a6Sopenharmony_ci * 9c29fa5a6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10c29fa5a6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11c29fa5a6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12c29fa5a6Sopenharmony_ci * See the License for the specific language governing permissions and 13c29fa5a6Sopenharmony_ci * limitations under the License. 14c29fa5a6Sopenharmony_ci */ 15c29fa5a6Sopenharmony_ci 16c29fa5a6Sopenharmony_ci#ifndef MMI_LOG_H 17c29fa5a6Sopenharmony_ci#define MMI_LOG_H 18c29fa5a6Sopenharmony_ci 19c29fa5a6Sopenharmony_ci#include <cinttypes> 20c29fa5a6Sopenharmony_ci#include <functional> 21c29fa5a6Sopenharmony_ci#include <future> 22c29fa5a6Sopenharmony_ci#include <string> 23c29fa5a6Sopenharmony_ci#include <sstream> 24c29fa5a6Sopenharmony_ci 25c29fa5a6Sopenharmony_ci#include "hilog/log.h" 26c29fa5a6Sopenharmony_ci 27c29fa5a6Sopenharmony_ci#include "util.h" 28c29fa5a6Sopenharmony_ci#include "klog.h" 29c29fa5a6Sopenharmony_ci 30c29fa5a6Sopenharmony_ci#ifndef MMI_DISABLE_LOG_TRACE 31c29fa5a6Sopenharmony_ci 32c29fa5a6Sopenharmony_cinamespace OHOS { 33c29fa5a6Sopenharmony_cinamespace MMI { 34c29fa5a6Sopenharmony_ciclass LogTracer { 35c29fa5a6Sopenharmony_cipublic: 36c29fa5a6Sopenharmony_ci LogTracer(); 37c29fa5a6Sopenharmony_ci 38c29fa5a6Sopenharmony_ci LogTracer(int64_t, int32_t, int32_t); 39c29fa5a6Sopenharmony_ci 40c29fa5a6Sopenharmony_ci LogTracer(LogTracer &&other) noexcept; 41c29fa5a6Sopenharmony_ci 42c29fa5a6Sopenharmony_ci LogTracer &operator=(LogTracer &&other) noexcept; 43c29fa5a6Sopenharmony_ci 44c29fa5a6Sopenharmony_ci ~LogTracer(); 45c29fa5a6Sopenharmony_ci 46c29fa5a6Sopenharmony_ciprivate: 47c29fa5a6Sopenharmony_ci int64_t traceId_; 48c29fa5a6Sopenharmony_ci}; 49c29fa5a6Sopenharmony_ci 50c29fa5a6Sopenharmony_civoid StartLogTraceId(int64_t, int32_t, int32_t); 51c29fa5a6Sopenharmony_ci 52c29fa5a6Sopenharmony_civoid EndLogTraceId(int64_t); 53c29fa5a6Sopenharmony_ci 54c29fa5a6Sopenharmony_ciconst char *FormatLogTrace(); 55c29fa5a6Sopenharmony_ci 56c29fa5a6Sopenharmony_civoid ResetLogTrace(); 57c29fa5a6Sopenharmony_ci} 58c29fa5a6Sopenharmony_ci} 59c29fa5a6Sopenharmony_ci 60c29fa5a6Sopenharmony_ci#define MMI_FUNC_FMT "[%{public}s][%{public}s:%{public}d] " 61c29fa5a6Sopenharmony_ci#define MMI_FUNC_NOLINE_FMT "[%{public}s][%{public}s] " 62c29fa5a6Sopenharmony_ci#define INPUT_KEY_FLOW "InputKeyFlow" 63c29fa5a6Sopenharmony_ci#define MMI_TRACE_ID (OHOS::MMI::FormatLogTrace()), 64c29fa5a6Sopenharmony_ci#else 65c29fa5a6Sopenharmony_ci#define MMI_FUNC_FMT "[%{public}s:%{public}d] " 66c29fa5a6Sopenharmony_ci#define MMI_FUNC_NOLINE_FMT "[%{public}s] " 67c29fa5a6Sopenharmony_ci#define MMI_TRACE_ID 68c29fa5a6Sopenharmony_ci#endif //MMI_DISABLE_LOG_TRACE 69c29fa5a6Sopenharmony_ci 70c29fa5a6Sopenharmony_ci#ifdef MMI_LOG_DOMAIN 71c29fa5a6Sopenharmony_ci#undef MMI_LOG_DOMAIN 72c29fa5a6Sopenharmony_ci#endif 73c29fa5a6Sopenharmony_ci#ifdef MMI_LOG_FRAMEWORK 74c29fa5a6Sopenharmony_ci#undef MMI_LOG_FRAMEWORK 75c29fa5a6Sopenharmony_ci#endif 76c29fa5a6Sopenharmony_ci#define MMI_LOG_FRAMEWORK 0XD002800 77c29fa5a6Sopenharmony_ci#ifdef MMI_LOG_SERVER 78c29fa5a6Sopenharmony_ci#undef MMI_LOG_SERVER 79c29fa5a6Sopenharmony_ci#endif 80c29fa5a6Sopenharmony_ci#define MMI_LOG_SERVER 0XD002801 81c29fa5a6Sopenharmony_ci#ifdef MMI_LOG_HANDLER 82c29fa5a6Sopenharmony_ci#undef MMI_LOG_HANDLER 83c29fa5a6Sopenharmony_ci#endif 84c29fa5a6Sopenharmony_ci#define MMI_LOG_HANDLER 0XD002802 85c29fa5a6Sopenharmony_ci#ifdef MMI_LOG_WINDOW 86c29fa5a6Sopenharmony_ci#undef MMI_LOG_WINDOW 87c29fa5a6Sopenharmony_ci#endif 88c29fa5a6Sopenharmony_ci#define MMI_LOG_WINDOW 0XD002803 89c29fa5a6Sopenharmony_ci#ifdef MMI_LOG_CURSOR 90c29fa5a6Sopenharmony_ci#undef MMI_LOG_CURSOR 91c29fa5a6Sopenharmony_ci#endif 92c29fa5a6Sopenharmony_ci#define MMI_LOG_CURSOR 0XD002804 93c29fa5a6Sopenharmony_ci#ifdef MMI_LOG_DISPATCH 94c29fa5a6Sopenharmony_ci#undef MMI_LOG_DISPATCH 95c29fa5a6Sopenharmony_ci#endif 96c29fa5a6Sopenharmony_ci#define MMI_LOG_DISPATCH 0XD002805 97c29fa5a6Sopenharmony_ci#ifdef MMI_LOG_ANRDETECT 98c29fa5a6Sopenharmony_ci#undef MMI_LOG_ANRDETECT 99c29fa5a6Sopenharmony_ci#endif 100c29fa5a6Sopenharmony_ci#define MMI_LOG_ANRDETECT 0XD002806 101c29fa5a6Sopenharmony_ci 102c29fa5a6Sopenharmony_ci#define MMI_LOG_DOMAIN MMI_LOG_FRAMEWORK 103c29fa5a6Sopenharmony_ci 104c29fa5a6Sopenharmony_ci#ifndef MMI_FUNC_INFO 105c29fa5a6Sopenharmony_ci#define MMI_FUNC_INFO __FUNCTION__ 106c29fa5a6Sopenharmony_ci#endif 107c29fa5a6Sopenharmony_ci 108c29fa5a6Sopenharmony_ci#ifndef MMI_FILE_NAME 109c29fa5a6Sopenharmony_ci#define MMI_FILE_NAME (strrchr((__FILE__), '/') ? strrchr((__FILE__), '/') + 1 : (__FILE__)) 110c29fa5a6Sopenharmony_ci#endif 111c29fa5a6Sopenharmony_ci 112c29fa5a6Sopenharmony_ci#ifndef MMI_LINE_INFO 113c29fa5a6Sopenharmony_ci#define MMI_LINE_INFO MMI_FILE_NAME, __LINE__ 114c29fa5a6Sopenharmony_ci#endif 115c29fa5a6Sopenharmony_ci 116c29fa5a6Sopenharmony_ci#define MMI_HILOG_BASE(type, level, domain, tag, fmt, ...) do { \ 117c29fa5a6Sopenharmony_ci HILOG_IMPL(type, level, domain, tag, MMI_FUNC_FMT fmt, MMI_TRACE_ID MMI_FUNC_INFO, __LINE__, ##__VA_ARGS__); \ 118c29fa5a6Sopenharmony_ci} while (0) 119c29fa5a6Sopenharmony_ci#define MMI_HILOG_HEADER(level, lh, fmt, ...) do { \ 120c29fa5a6Sopenharmony_ci HILOG_IMPL(LOG_CORE, level, lh.domain, lh.tag, MMI_FUNC_FMT fmt, MMI_TRACE_ID lh.func, lh.line, \ 121c29fa5a6Sopenharmony_ci ##__VA_ARGS__); \ 122c29fa5a6Sopenharmony_ci} while (0) 123c29fa5a6Sopenharmony_ci#define MMI_HILOG_HEADER_NO_RELEASE(level, lh, fmt, ...) do { \ 124c29fa5a6Sopenharmony_ci HILOG_IMPL(LOG_ONLY_PRERELEASE, level, lh.domain, lh.tag, MMI_FUNC_FMT fmt, MMI_TRACE_ID lh.func, lh.line, \ 125c29fa5a6Sopenharmony_ci ##__VA_ARGS__); \ 126c29fa5a6Sopenharmony_ci} while (0) 127c29fa5a6Sopenharmony_ci 128c29fa5a6Sopenharmony_ci#define MMI_HILOGD(fmt, ...) do { \ 129c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_DOMAIN, MMI_LOG_TAG, LOG_DEBUG)) { \ 130c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_DEBUG, MMI_LOG_DOMAIN, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 131c29fa5a6Sopenharmony_ci } \ 132c29fa5a6Sopenharmony_ci} while (0) 133c29fa5a6Sopenharmony_ci#define MMI_HILOGD_NO_RELEASE(fmt, ...) do { \ 134c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_DOMAIN, MMI_LOG_TAG, LOG_DEBUG)) { \ 135c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_DEBUG, MMI_LOG_DOMAIN, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 136c29fa5a6Sopenharmony_ci } \ 137c29fa5a6Sopenharmony_ci} while (0) 138c29fa5a6Sopenharmony_ci 139c29fa5a6Sopenharmony_ci#define MMI_HILOGI(fmt, ...) do { \ 140c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_INFO, MMI_LOG_DOMAIN, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 141c29fa5a6Sopenharmony_ci} while (0) 142c29fa5a6Sopenharmony_ci#define MMI_HILOGI_NO_RELEASE(fmt, ...) do { \ 143c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_INFO, MMI_LOG_DOMAIN, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 144c29fa5a6Sopenharmony_ci} while (0) 145c29fa5a6Sopenharmony_ci 146c29fa5a6Sopenharmony_ci#define MMI_HILOGW(fmt, ...) do { \ 147c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_WARN, MMI_LOG_DOMAIN, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 148c29fa5a6Sopenharmony_ci} while (0) 149c29fa5a6Sopenharmony_ci#define MMI_HILOGW_NO_RELEASE(fmt, ...) do { \ 150c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_WARN, MMI_LOG_DOMAIN, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 151c29fa5a6Sopenharmony_ci} while (0) 152c29fa5a6Sopenharmony_ci 153c29fa5a6Sopenharmony_ci#define MMI_HILOGE(fmt, ...) do { \ 154c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_ERROR, MMI_LOG_DOMAIN, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 155c29fa5a6Sopenharmony_ci} while (0) 156c29fa5a6Sopenharmony_ci#define MMI_HILOGE_NO_RELEASE(fmt, ...) do { \ 157c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_ERROR, MMI_LOG_DOMAIN, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 158c29fa5a6Sopenharmony_ci} while (0) 159c29fa5a6Sopenharmony_ci 160c29fa5a6Sopenharmony_ci#define MMI_HILOGF(fmt, ...) do { \ 161c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_FATAL, MMI_LOG_DOMAIN, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 162c29fa5a6Sopenharmony_ci} while (0) 163c29fa5a6Sopenharmony_ci#define MMI_HILOGF_NO_RELEASE(fmt, ...) do { \ 164c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_FATAL, MMI_LOG_DOMAIN, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 165c29fa5a6Sopenharmony_ci} while (0) 166c29fa5a6Sopenharmony_ci 167c29fa5a6Sopenharmony_ci#define MMI_HILOG_SERVERD(fmt, ...) do { \ 168c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_SERVER, MMI_LOG_TAG, LOG_DEBUG)) { \ 169c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_DEBUG, MMI_LOG_SERVER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 170c29fa5a6Sopenharmony_ci } \ 171c29fa5a6Sopenharmony_ci} while (0) 172c29fa5a6Sopenharmony_ci#define MMI_HILOG_SERVERD_NO_RELEASE(fmt, ...) do { \ 173c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_SERVER, MMI_LOG_TAG, LOG_DEBUG)) { \ 174c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_DEBUG, MMI_LOG_SERVER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 175c29fa5a6Sopenharmony_ci } \ 176c29fa5a6Sopenharmony_ci} while (0) 177c29fa5a6Sopenharmony_ci 178c29fa5a6Sopenharmony_ci#define MMI_HILOG_SERVERI(fmt, ...) do { \ 179c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_INFO, MMI_LOG_SERVER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 180c29fa5a6Sopenharmony_ci} while (0) 181c29fa5a6Sopenharmony_ci#define MMI_HILOG_SERVERI_NO_RELEASE(fmt, ...) do { \ 182c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_INFO, MMI_LOG_SERVER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 183c29fa5a6Sopenharmony_ci} while (0) 184c29fa5a6Sopenharmony_ci 185c29fa5a6Sopenharmony_ci#define MMI_HILOG_SERVERW(fmt, ...) do { \ 186c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_WARN, MMI_LOG_SERVER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 187c29fa5a6Sopenharmony_ci} while (0) 188c29fa5a6Sopenharmony_ci#define MMI_HILOG_SERVERW_NO_RELEASE(fmt, ...) do { \ 189c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_WARN, MMI_LOG_SERVER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 190c29fa5a6Sopenharmony_ci} while (0) 191c29fa5a6Sopenharmony_ci 192c29fa5a6Sopenharmony_ci#define MMI_HILOG_SERVERE(fmt, ...) do { \ 193c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_ERROR, MMI_LOG_SERVER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 194c29fa5a6Sopenharmony_ci} while (0) 195c29fa5a6Sopenharmony_ci#define MMI_HILOG_SERVERE_NO_RELEASE(fmt, ...) do { \ 196c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_ERROR, MMI_LOG_SERVER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 197c29fa5a6Sopenharmony_ci} while (0) 198c29fa5a6Sopenharmony_ci 199c29fa5a6Sopenharmony_ci#define MMI_HILOG_SERVERF(fmt, ...) do { \ 200c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_FATAL, MMI_LOG_SERVER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 201c29fa5a6Sopenharmony_ci} while (0) 202c29fa5a6Sopenharmony_ci#define MMI_HILOG_SERVERF_NO_RELEASE(fmt, ...) do { \ 203c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_FATAL, MMI_LOG_SERVER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 204c29fa5a6Sopenharmony_ci} while (0) 205c29fa5a6Sopenharmony_ci 206c29fa5a6Sopenharmony_ci#define MMI_HILOG_HANDLERD(fmt, ...) do { \ 207c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_HANDLER, MMI_LOG_TAG, LOG_DEBUG)) { \ 208c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_DEBUG, MMI_LOG_HANDLER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 209c29fa5a6Sopenharmony_ci } \ 210c29fa5a6Sopenharmony_ci} while (0) 211c29fa5a6Sopenharmony_ci#define MMI_HILOG_HANDLERD_NO_RELEASE(fmt, ...) do { \ 212c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_HANDLER, MMI_LOG_TAG, LOG_DEBUG)) { \ 213c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_DEBUG, MMI_LOG_HANDLER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 214c29fa5a6Sopenharmony_ci } \ 215c29fa5a6Sopenharmony_ci} while (0) 216c29fa5a6Sopenharmony_ci 217c29fa5a6Sopenharmony_ci#define MMI_HILOG_HANDLERI(fmt, ...) do { \ 218c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_INFO, MMI_LOG_HANDLER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 219c29fa5a6Sopenharmony_ci} while (0) 220c29fa5a6Sopenharmony_ci#define MMI_HILOG_HANDLERI_NO_RELEASE(fmt, ...) do { \ 221c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_INFO, MMI_LOG_HANDLER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 222c29fa5a6Sopenharmony_ci} while (0) 223c29fa5a6Sopenharmony_ci 224c29fa5a6Sopenharmony_ci#define MMI_HILOG_HANDLERW(fmt, ...) do { \ 225c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_WARN, MMI_LOG_HANDLER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 226c29fa5a6Sopenharmony_ci} while (0) 227c29fa5a6Sopenharmony_ci#define MMI_HILOG_HANDLERW_NO_RELEASE(fmt, ...) do { \ 228c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_WARN, MMI_LOG_HANDLER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 229c29fa5a6Sopenharmony_ci} while (0) 230c29fa5a6Sopenharmony_ci 231c29fa5a6Sopenharmony_ci#define MMI_HILOG_HANDLERE(fmt, ...) do { \ 232c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_ERROR, MMI_LOG_HANDLER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 233c29fa5a6Sopenharmony_ci} while (0) 234c29fa5a6Sopenharmony_ci#define MMI_HILOG_HANDLERE_NO_RELEASE(fmt, ...) do { \ 235c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_ERROR, MMI_LOG_HANDLER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 236c29fa5a6Sopenharmony_ci} while (0) 237c29fa5a6Sopenharmony_ci 238c29fa5a6Sopenharmony_ci#define MMI_HILOG_HANDLERF(fmt, ...) do { \ 239c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_FATAL, MMI_LOG_HANDLER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 240c29fa5a6Sopenharmony_ci} while (0) 241c29fa5a6Sopenharmony_ci#define MMI_HILOG_HANDLERF_NO_RELEASE(fmt, ...) do { \ 242c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_FATAL, MMI_LOG_HANDLER, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 243c29fa5a6Sopenharmony_ci} while (0) 244c29fa5a6Sopenharmony_ci 245c29fa5a6Sopenharmony_ci#define MMI_HILOG_WINDOWD(fmt, ...) do { \ 246c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_WINDOW, MMI_LOG_TAG, LOG_DEBUG)) { \ 247c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_DEBUG, MMI_LOG_WINDOW, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 248c29fa5a6Sopenharmony_ci } \ 249c29fa5a6Sopenharmony_ci} while (0) 250c29fa5a6Sopenharmony_ci#define MMI_HILOG_WINDOWD_NO_RELEASE(fmt, ...) do { \ 251c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_WINDOW, MMI_LOG_TAG, LOG_DEBUG)) { \ 252c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_DEBUG, MMI_LOG_WINDOW, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 253c29fa5a6Sopenharmony_ci } \ 254c29fa5a6Sopenharmony_ci} while (0) 255c29fa5a6Sopenharmony_ci 256c29fa5a6Sopenharmony_ci#define MMI_HILOG_WINDOWI(fmt, ...) do { \ 257c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_INFO, MMI_LOG_WINDOW, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 258c29fa5a6Sopenharmony_ci} while (0) 259c29fa5a6Sopenharmony_ci#define MMI_HILOG_WINDOWI_NO_RELEASE(fmt, ...) do { \ 260c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_INFO, MMI_LOG_WINDOW, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 261c29fa5a6Sopenharmony_ci} while (0) 262c29fa5a6Sopenharmony_ci 263c29fa5a6Sopenharmony_ci#define MMI_HILOG_WINDOWW(fmt, ...) do { \ 264c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_WARN, MMI_LOG_WINDOW, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 265c29fa5a6Sopenharmony_ci} while (0) 266c29fa5a6Sopenharmony_ci#define MMI_HILOG_WINDOWW_NO_RELEASE(fmt, ...) do { \ 267c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_WARN, MMI_LOG_WINDOW, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 268c29fa5a6Sopenharmony_ci} while (0) 269c29fa5a6Sopenharmony_ci 270c29fa5a6Sopenharmony_ci#define MMI_HILOG_WINDOWE(fmt, ...) do { \ 271c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_ERROR, MMI_LOG_WINDOW, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 272c29fa5a6Sopenharmony_ci} while (0) 273c29fa5a6Sopenharmony_ci#define MMI_HILOG_WINDOWE_NO_RELEASE(fmt, ...) do { \ 274c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_ERROR, MMI_LOG_WINDOW, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 275c29fa5a6Sopenharmony_ci} while (0) 276c29fa5a6Sopenharmony_ci 277c29fa5a6Sopenharmony_ci#define MMI_HILOG_WINDOWF(fmt, ...) do { \ 278c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_FATAL, MMI_LOG_WINDOW, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 279c29fa5a6Sopenharmony_ci} while (0) 280c29fa5a6Sopenharmony_ci#define MMI_HILOG_WINDOWF_NO_RELEASE(fmt, ...) do { \ 281c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_FATAL, MMI_LOG_WINDOW, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 282c29fa5a6Sopenharmony_ci} while (0) 283c29fa5a6Sopenharmony_ci 284c29fa5a6Sopenharmony_ci#define MMI_HILOG_CURSORD(fmt, ...) do { \ 285c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_CURSOR, MMI_LOG_TAG, LOG_DEBUG)) { \ 286c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_DEBUG, MMI_LOG_CURSOR, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 287c29fa5a6Sopenharmony_ci } \ 288c29fa5a6Sopenharmony_ci} while (0) 289c29fa5a6Sopenharmony_ci#define MMI_HILOG_CURSORD_NO_RELEASE(fmt, ...) do { \ 290c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_CURSOR, MMI_LOG_TAG, LOG_DEBUG)) { \ 291c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_DEBUG, MMI_LOG_CURSOR, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 292c29fa5a6Sopenharmony_ci } \ 293c29fa5a6Sopenharmony_ci} while (0) 294c29fa5a6Sopenharmony_ci 295c29fa5a6Sopenharmony_ci#define MMI_HILOG_CURSORI(fmt, ...) do { \ 296c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_INFO, MMI_LOG_CURSOR, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 297c29fa5a6Sopenharmony_ci} while (0) 298c29fa5a6Sopenharmony_ci#define MMI_HILOG_CURSORI_NO_RELEASE(fmt, ...) do { \ 299c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_INFO, MMI_LOG_CURSOR, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 300c29fa5a6Sopenharmony_ci} while (0) 301c29fa5a6Sopenharmony_ci 302c29fa5a6Sopenharmony_ci#define MMI_HILOG_CURSORW(fmt, ...) do { \ 303c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_WARN, MMI_LOG_CURSOR, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 304c29fa5a6Sopenharmony_ci} while (0) 305c29fa5a6Sopenharmony_ci#define MMI_HILOG_CURSORW_NO_RELEASE(fmt, ...) do { \ 306c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_WARN, MMI_LOG_CURSOR, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 307c29fa5a6Sopenharmony_ci} while (0) 308c29fa5a6Sopenharmony_ci 309c29fa5a6Sopenharmony_ci#define MMI_HILOG_CURSORE(fmt, ...) do { \ 310c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_ERROR, MMI_LOG_CURSOR, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 311c29fa5a6Sopenharmony_ci} while (0) 312c29fa5a6Sopenharmony_ci#define MMI_HILOG_CURSORE_NO_RELEASE(fmt, ...) do { \ 313c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_ERROR, MMI_LOG_CURSOR, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 314c29fa5a6Sopenharmony_ci} while (0) 315c29fa5a6Sopenharmony_ci 316c29fa5a6Sopenharmony_ci#define MMI_HILOG_CURSORF(fmt, ...) do { \ 317c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_FATAL, MMI_LOG_CURSOR, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 318c29fa5a6Sopenharmony_ci} while (0) 319c29fa5a6Sopenharmony_ci#define MMI_HILOG_CURSORF_NO_RELEASE(fmt, ...) do { \ 320c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_FATAL, MMI_LOG_CURSOR, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 321c29fa5a6Sopenharmony_ci} while (0) 322c29fa5a6Sopenharmony_ci 323c29fa5a6Sopenharmony_ci#define MMI_HILOG_DISPATCHD(fmt, ...) do { \ 324c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_DISPATCH, MMI_LOG_TAG, LOG_DEBUG)) { \ 325c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_DEBUG, MMI_LOG_DISPATCH, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 326c29fa5a6Sopenharmony_ci } \ 327c29fa5a6Sopenharmony_ci} while (0) 328c29fa5a6Sopenharmony_ci#define MMI_HILOG_DISPATCHD_NO_RELEASE(fmt, ...) do { \ 329c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_DISPATCH, MMI_LOG_TAG, LOG_DEBUG)) { \ 330c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_DEBUG, MMI_LOG_DISPATCH, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 331c29fa5a6Sopenharmony_ci } \ 332c29fa5a6Sopenharmony_ci} while (0) 333c29fa5a6Sopenharmony_ci 334c29fa5a6Sopenharmony_ci#define MMI_HILOG_DISPATCHI(fmt, ...) do { \ 335c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_INFO, MMI_LOG_DISPATCH, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 336c29fa5a6Sopenharmony_ci} while (0) 337c29fa5a6Sopenharmony_ci#define MMI_HILOG_DISPATCHI_NO_RELEASE(fmt, ...) do { \ 338c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_INFO, MMI_LOG_DISPATCH, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 339c29fa5a6Sopenharmony_ci} while (0) 340c29fa5a6Sopenharmony_ci 341c29fa5a6Sopenharmony_ci#define MMI_HILOG_DISPATCHW(fmt, ...) do { \ 342c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_WARN, MMI_LOG_DISPATCH, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 343c29fa5a6Sopenharmony_ci} while (0) 344c29fa5a6Sopenharmony_ci#define MMI_HILOG_DISPATCHW_NO_RELEASE(fmt, ...) do { \ 345c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_WARN, MMI_LOG_DISPATCH, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 346c29fa5a6Sopenharmony_ci} while (0) 347c29fa5a6Sopenharmony_ci 348c29fa5a6Sopenharmony_ci#define MMI_HILOG_DISPATCHE(fmt, ...) do { \ 349c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_ERROR, MMI_LOG_DISPATCH, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 350c29fa5a6Sopenharmony_ci} while (0) 351c29fa5a6Sopenharmony_ci#define MMI_HILOG_DISPATCHE_NO_RELEASE(fmt, ...) do { \ 352c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_ERROR, MMI_LOG_DISPATCH, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 353c29fa5a6Sopenharmony_ci} while (0) 354c29fa5a6Sopenharmony_ci 355c29fa5a6Sopenharmony_ci#define MMI_HILOG_DISPATCHF(fmt, ...) do { \ 356c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_FATAL, MMI_LOG_DISPATCH, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 357c29fa5a6Sopenharmony_ci} while (0) 358c29fa5a6Sopenharmony_ci#define MMI_HILOG_DISPATCHF_NO_RELEASE(fmt, ...) do { \ 359c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_FATAL, MMI_LOG_DISPATCH, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 360c29fa5a6Sopenharmony_ci} while (0) 361c29fa5a6Sopenharmony_ci 362c29fa5a6Sopenharmony_ci#define MMI_HILOG_FREEZEI(fmt, ...) do { \ 363c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_INFO, MMI_LOG_DISPATCH, INPUT_KEY_FLOW, fmt, ##__VA_ARGS__); \ 364c29fa5a6Sopenharmony_ci} while (0) 365c29fa5a6Sopenharmony_ci#define MMI_HILOG_FREEZEI_NO_RELEASE(fmt, ...) do { \ 366c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_INFO, MMI_LOG_DISPATCH, INPUT_KEY_FLOW, fmt, ##__VA_ARGS__); \ 367c29fa5a6Sopenharmony_ci} while (0) 368c29fa5a6Sopenharmony_ci 369c29fa5a6Sopenharmony_ci#define MMI_HILOG_FREEZEE(fmt, ...) do { \ 370c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_ERROR, MMI_LOG_DISPATCH, INPUT_KEY_FLOW, fmt, ##__VA_ARGS__); \ 371c29fa5a6Sopenharmony_ci} while (0) 372c29fa5a6Sopenharmony_ci#define MMI_HILOG_FREEZEE_NO_RELEASE(fmt, ...) do { \ 373c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_ERROR, MMI_LOG_DISPATCH, INPUT_KEY_FLOW, fmt, ##__VA_ARGS__); \ 374c29fa5a6Sopenharmony_ci} while (0) 375c29fa5a6Sopenharmony_ci 376c29fa5a6Sopenharmony_ci#define MMI_HILOG_ANRDETECTD(fmt, ...) do { \ 377c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_DISPATCH, MMI_LOG_TAG, LOG_DEBUG)) { \ 378c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_DEBUG, MMI_LOG_ANRDETECT, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 379c29fa5a6Sopenharmony_ci } \ 380c29fa5a6Sopenharmony_ci} while (0) 381c29fa5a6Sopenharmony_ci#define MMI_HILOG_ANRDETECTD_NO_RELEASE(fmt, ...) do { \ 382c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_DISPATCH, MMI_LOG_TAG, LOG_DEBUG)) { \ 383c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_DEBUG, MMI_LOG_ANRDETECT, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 384c29fa5a6Sopenharmony_ci } \ 385c29fa5a6Sopenharmony_ci} while (0) 386c29fa5a6Sopenharmony_ci 387c29fa5a6Sopenharmony_ci#define MMI_HILOG_ANRDETECTI(fmt, ...) do { \ 388c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_INFO, MMI_LOG_ANRDETECT, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 389c29fa5a6Sopenharmony_ci} while (0) 390c29fa5a6Sopenharmony_ci#define MMI_HILOG_ANRDETECTI_NO_RELEASE(fmt, ...) do { \ 391c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_INFO, MMI_LOG_ANRDETECT, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 392c29fa5a6Sopenharmony_ci} while (0) 393c29fa5a6Sopenharmony_ci 394c29fa5a6Sopenharmony_ci#define MMI_HILOG_ANRDETECTW(fmt, ...) do { \ 395c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_WARN, MMI_LOG_ANRDETECT, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 396c29fa5a6Sopenharmony_ci} while (0) 397c29fa5a6Sopenharmony_ci#define MMI_HILOG_ANRDETECTW_NO_RELEASE(fmt, ...) do { \ 398c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_WARN, MMI_LOG_ANRDETECT, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 399c29fa5a6Sopenharmony_ci} while (0) 400c29fa5a6Sopenharmony_ci 401c29fa5a6Sopenharmony_ci#define MMI_HILOG_ANRDETECTE(fmt, ...) do { \ 402c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_ERROR, MMI_LOG_ANRDETECT, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 403c29fa5a6Sopenharmony_ci} while (0) 404c29fa5a6Sopenharmony_ci#define MMI_HILOG_ANRDETECTE_NO_RELEASE(fmt, ...) do { \ 405c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_ERROR, MMI_LOG_ANRDETECT, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 406c29fa5a6Sopenharmony_ci} while (0) 407c29fa5a6Sopenharmony_ci 408c29fa5a6Sopenharmony_ci#define MMI_HILOG_ANRDETECTF(fmt, ...) do { \ 409c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_CORE, LOG_FATAL, MMI_LOG_ANRDETECT, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 410c29fa5a6Sopenharmony_ci} while (0) 411c29fa5a6Sopenharmony_ci#define MMI_HILOG_ANRDETECTF_NO_RELEASE(fmt, ...) do { \ 412c29fa5a6Sopenharmony_ci MMI_HILOG_BASE(LOG_ONLY_PRERELEASE, LOG_FATAL, MMI_LOG_ANRDETECT, MMI_LOG_TAG, fmt, ##__VA_ARGS__); \ 413c29fa5a6Sopenharmony_ci} while (0) 414c29fa5a6Sopenharmony_ci 415c29fa5a6Sopenharmony_ci#define MMI_HILOGDK(fmt, ...) do { \ 416c29fa5a6Sopenharmony_ci KMSG_LOGD(fmt, ##__VA_ARGS__); \ 417c29fa5a6Sopenharmony_ci MMI_HILOGD(fmt, ##__VA_ARGS__); \ 418c29fa5a6Sopenharmony_ci} while (0) 419c29fa5a6Sopenharmony_ci 420c29fa5a6Sopenharmony_ci#define MMI_HILOGIK(fmt, ...) do { \ 421c29fa5a6Sopenharmony_ci KMSG_LOGI(fmt, ##__VA_ARGS__); \ 422c29fa5a6Sopenharmony_ci MMI_HILOGI(fmt, ##__VA_ARGS__); \ 423c29fa5a6Sopenharmony_ci} while (0) 424c29fa5a6Sopenharmony_ci 425c29fa5a6Sopenharmony_ci#define MMI_HILOGWK(fmt, ...) do { \ 426c29fa5a6Sopenharmony_ci KMSG_LOGW(fmt, ##__VA_ARGS__); \ 427c29fa5a6Sopenharmony_ci MMI_HILOGW(fmt, ##__VA_ARGS__); \ 428c29fa5a6Sopenharmony_ci} while (0) 429c29fa5a6Sopenharmony_ci 430c29fa5a6Sopenharmony_ci#define MMI_HILOGEK(fmt, ...) do { \ 431c29fa5a6Sopenharmony_ci KMSG_LOGE(fmt, ##__VA_ARGS__); \ 432c29fa5a6Sopenharmony_ci MMI_HILOGE(fmt, ##__VA_ARGS__); \ 433c29fa5a6Sopenharmony_ci} while (0) 434c29fa5a6Sopenharmony_ci 435c29fa5a6Sopenharmony_ci#define MMI_HILOGFK(fmt, ...) do { \ 436c29fa5a6Sopenharmony_ci KMSG_LOGF(fmt, ##__VA_ARGS__); \ 437c29fa5a6Sopenharmony_ci MMI_HILOGF(fmt, ##__VA_ARGS__); \ 438c29fa5a6Sopenharmony_ci} while (0) 439c29fa5a6Sopenharmony_ci 440c29fa5a6Sopenharmony_cinamespace OHOS { 441c29fa5a6Sopenharmony_cinamespace MMI { 442c29fa5a6Sopenharmony_ciinline constexpr int32_t EVENT_TYPE_POINTER { 0X00020000 }; 443c29fa5a6Sopenharmony_ciinline constexpr int32_t TIMEOUT { 100000 }; 444c29fa5a6Sopenharmony_ciinline constexpr int32_t POINTER_ACTION_UP { 4 }; 445c29fa5a6Sopenharmony_ciinline constexpr int32_t POINTER_ACTION_MOVE { 3 }; 446c29fa5a6Sopenharmony_ciinline constexpr int32_t FINAL_FINGER { 1 }; 447c29fa5a6Sopenharmony_ci 448c29fa5a6Sopenharmony_ciclass InnerFunctionTracer { 449c29fa5a6Sopenharmony_cipublic: 450c29fa5a6Sopenharmony_ci InnerFunctionTracer(LogLevel level, const char* tag, const char* logfn, uint32_t logline) 451c29fa5a6Sopenharmony_ci : level_ { level }, tag_ { tag }, logfn_ { logfn }, logline_ { logline } 452c29fa5a6Sopenharmony_ci { 453c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_DOMAIN, tag_, level_)) { 454c29fa5a6Sopenharmony_ci if (logfn_ != nullptr) { 455c29fa5a6Sopenharmony_ci HILOG_IMPL(LOG_CORE, level_, MMI_LOG_DOMAIN, tag_, MMI_FUNC_FMT "enter", MMI_TRACE_ID logfn_, logline_); 456c29fa5a6Sopenharmony_ci } 457c29fa5a6Sopenharmony_ci } 458c29fa5a6Sopenharmony_ci } 459c29fa5a6Sopenharmony_ci ~InnerFunctionTracer() 460c29fa5a6Sopenharmony_ci { 461c29fa5a6Sopenharmony_ci if (HiLogIsLoggable(MMI_LOG_DOMAIN, tag_, level_)) { 462c29fa5a6Sopenharmony_ci if (logfn_ != nullptr) { 463c29fa5a6Sopenharmony_ci HILOG_IMPL(LOG_CORE, level_, MMI_LOG_DOMAIN, tag_, MMI_FUNC_NOLINE_FMT "leave", MMI_TRACE_ID logfn_); 464c29fa5a6Sopenharmony_ci } 465c29fa5a6Sopenharmony_ci } 466c29fa5a6Sopenharmony_ci } 467c29fa5a6Sopenharmony_ciprivate: 468c29fa5a6Sopenharmony_ci LogLevel level_ { LOG_LEVEL_MIN }; 469c29fa5a6Sopenharmony_ci const char* tag_ { nullptr }; 470c29fa5a6Sopenharmony_ci const char* logfn_ { nullptr }; 471c29fa5a6Sopenharmony_ci const uint32_t logline_ { 0 }; 472c29fa5a6Sopenharmony_ci}; 473c29fa5a6Sopenharmony_ci 474c29fa5a6Sopenharmony_cistruct LogHeader { 475c29fa5a6Sopenharmony_ci const uint32_t domain; 476c29fa5a6Sopenharmony_ci const char* tag; 477c29fa5a6Sopenharmony_ci const char* func; 478c29fa5a6Sopenharmony_ci const uint32_t line; 479c29fa5a6Sopenharmony_ci 480c29fa5a6Sopenharmony_ci LogHeader(uint32_t domain, const char* tag, const char* func, uint32_t line) 481c29fa5a6Sopenharmony_ci : domain(domain), tag(tag), func(func), line(line) {} 482c29fa5a6Sopenharmony_ci}; 483c29fa5a6Sopenharmony_ci} // namespace MMI 484c29fa5a6Sopenharmony_ci} // namespace OHOS 485c29fa5a6Sopenharmony_ci 486c29fa5a6Sopenharmony_ci#define MMI_LOG_HEADER { MMI_LOG_DOMAIN, MMI_LOG_TAG, __FUNCTION__, __LINE__ } 487c29fa5a6Sopenharmony_ci#define MMI_LOG_FREEZE { MMI_LOG_DOMAIN, INPUT_KEY_FLOW, __FUNCTION__, __LINE__ } 488c29fa5a6Sopenharmony_ci 489c29fa5a6Sopenharmony_ci#define CALL_DEBUG_ENTER ::OHOS::MMI::InnerFunctionTracer __innerFuncTracer_Debug___ \ 490c29fa5a6Sopenharmony_ci { LOG_DEBUG, MMI_LOG_TAG, __FUNCTION__, __LINE__ } 491c29fa5a6Sopenharmony_ci#define CALL_INFO_TRACE ::OHOS::MMI::InnerFunctionTracer ___innerFuncTracer_Info___ \ 492c29fa5a6Sopenharmony_ci { LOG_INFO, MMI_LOG_TAG, __FUNCTION__, __LINE__ } 493c29fa5a6Sopenharmony_ci#define CALL_TEST_DEBUG ::OHOS::MMI::InnerFunctionTracer ___innerFuncTracer_Info___ \ 494c29fa5a6Sopenharmony_ci { LOG_DEBUG, MMI_LOG_TAG, test_info_ == nullptr ? "TestBody" : test_info_->name(), __LINE__ } 495c29fa5a6Sopenharmony_ci#endif // MMI_LOG_H 496