# hilog-easy **Repository Path**: xfan1024/hilog-easy ## Basic Information - **Project Name**: hilog-easy - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-11 - **Last Updated**: 2026-02-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # hilog-easy 基于 HarmonyOS HILOG 的轻量级日志增强层。 针对当前 HarmonyOS 日志库的痛点: 带隐私标识的参数(如 `%{private}s`)在调试环境也无法查看内容,开发者只能被动改为 `%{public}`。既增加工作量,又削弱隐私标识的意义。 本库通过条件编译在“调试可读性”和“发布隐私保护”之间无缝切换: - 调试模式:忽略隐私标识,使用标准库格式化输出,便于查看所有字段。 - 发布模式:直接调用原版 HILOG 接口,保持隐私保护能力。 > 备注:部分 OpenHarmony 设备支持 `hilog -p off`,但在 HarmonyOS 上不一定可用。 ## 功能特性 - 兼容原版 HILOG 接口:在业务代码中用 `#include ` 替代 `#include `。 - 完整兼容 `OH_LOG_Print` 以及 `OH_LOG_DEBUG/OH_LOG_INFO/OH_LOG_WARN/OH_LOG_ERROR/OH_LOG_FATAL` 等接口。 - 调试/发布模式一键切换: - 调试模式下自动透出 `%{private}` 字段,便于定位问题。 - 发布模式下保持隐私字段不可见,符合隐私保护要求。 - 便捷日志宏:提供 `LOG_D/LOG_I/LOG_W/LOG_E/LOG_F`,支持编译期日志级别裁剪。 ## 用法示例 ```c #define LOG_LEVEL LOG_INFO // 用于便捷日志宏的日志级别过滤,注意不用于原版API的日志级别过滤 #define LOG_DOMAIN 0x3200 // 全局domain宏,标识业务领域 #define LOG_TAG "MY_TAG" // 全局tag宏,标识模块日志tag // 不要包含 hilog 头文件 // #include #include ``` ### 便捷日志宏 ```c LOG_D("userId=%s, session=%s", user_id, session_id); LOG_I("login succeeded, cost=%{public}dms", cost_ms); LOG_W("retrying request, attempt=%{public}d, url=%{public}s", attempt, url); LOG_E("request failed, code=%{public}d, err=%{public}s", code, err_msg); LOG_F("fatal error, reason=%{public}s", reason); ``` ## 编译开关与日志级别 ### 调试/发布模式 通过宏 `HILOG_EASY_RELEASE_MODE` 控制。建议在 CMakeLists.txt 中设置全局宏,根据编译模式自动切换: ```cmake add_compile_definitions($<$:HILOG_EASY_RELEASE_MODE>) ``` - **Debug 模式**:`HILOG_EASY_RELEASE_MODE` 未定义,使用 `hilog_easy_print`,可查看所有隐私字段。 - **Release 模式**:`HILOG_EASY_RELEASE_MODE` 已定义,直接调用原版 `OH_LOG_Print`,保持隐私保护。 ### 日志级别裁剪 通过宏 `LOG_LEVEL` 控制便捷日志宏的编译期输出(仅影响 `LOG_D/LOG_I/LOG_W/LOG_E/LOG_F`,不影响原版 API 的日志级别过滤): - 调试模式默认:`LOG_DEBUG` - 发布模式默认:`LOG_INFO` 仅当日志级别 `>= LOG_LEVEL` 时才会编译输出。 示例: ```c // 仅输出 INFO 及以上便捷日志 #define LOG_LEVEL LOG_INFO #include // 后续所有 LOG_D 都会在编译期被裁剪 ``` ## 适用场景 - 希望在调试阶段查看完整日志(含隐私字段)。 - 希望在发布阶段保持隐私合规要求。 - 希望保持与原版 HILOG 接口兼容,且无需改动业务日志调用。 - 希望使用可编译期裁剪的便捷日志接口。