哪个网站做视频有钱挣免费网站推广的方法

张小明 2026/1/10 17:30:06
哪个网站做视频有钱挣,免费网站推广的方法,优秀网站ui设计,网页小游戏斗地主HiLog_Lite 模块 目录 模块概述模块结构模块间交互状态机转换图接口设计 1. 模块概述 源码#xff1a;https://gitee.com/openharmony/hiviewdfx_hilog_lite 1.1 功能与目标 HiLog_Lite 是 OpenHarmony 操作系统 DFX#xff08;Design For X#xff09;子系统中的轻量级…HiLog_Lite 模块目录模块概述模块结构模块间交互状态机转换图接口设计1. 模块概述源码https://gitee.com/openharmony/hiviewdfx_hilog_lite1.1 功能与目标HiLog_Lite 是 OpenHarmony 操作系统 DFXDesign For X子系统中的轻量级流水日志组件主要功能包括核心功能提供轻量系统LiteOS-M和小型系统LiteOS-A的流水日志功能支持多级别日志输出DEBUG、INFO、WARN、ERROR、FATAL支持模块化日志管理最多支持64个模块支持日志隐私保护{public}/{private}标识符支持日志流量控制和限流机制支持多种输出方式UART实时输出、文件存储文本/二进制设计目标低资源占用ROM约500KBRAM约500KB高性能支持异步日志处理减少对主业务的影响可配置性支持编译时和运行时配置日志级别、输出模块等隐私保护支持日志参数隐私标记商业版本自动脱敏1.2 系统位置┌─────────────────────────────────────────────────────────────────┐ │ OpenHarmony 系统 │ ├─────────────────────────────────────────────────────────────────┤ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 应用层 │ │ 框架层 │ │ 服务层 │ │ │ │ (APP) │ │ (ACE) │ │ (SAMGR) │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ │ │ │ │ └────────────────┼────────────────┘ │ │ ▼ │ │ ┌───────────────────────────────────────────────────────────┐ │ │ │ DFX 子系统 (hiviewdfx) │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ │ │ hilog_lite (本模块) │ │ │ │ │ │ ┌───────────┐ ┌───────────┐ ┌───────────────────┐ │ │ │ │ │ │ │frameworks │ │ services │ │ command │ │ │ │ │ │ │ │ mini/ │ │hilogcat │ │ │ │ │ │ │ │ │ │ featured │ │apphilogcat│ │ │ │ │ │ │ │ │ └───────────┘ └───────────┘ └───────────────────┘ │ │ │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ │ │ │ │ │ ┌───────────────────────┼───────────────────────────┐ │ │ │ │ │ hiview_lite │ hievent_lite │ │ │ │ │ └───────────────────────┴───────────────────────────┘ │ │ │ └───────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────────────────────────────────────┐ │ │ │ 内核层 (Kernel) │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │ │ │ │ │ hilogtask │ │ /dev/hilog │ │ Ring Buffer │ │ │ │ │ │ (内核任务) │ │ (驱动节点) │ │ (环形缓冲区) │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────────┘ │ │ │ └───────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘模块定位核心模块作为DFX子系统的核心组件为整个系统提供日志服务基础服务被系统中几乎所有模块依赖是系统调试和问题定位的基础设施与其他模块的关系依赖模块关系说明hiview_lite提供基础配置和缓存管理samgr_lite服务管理和消息通信utils_lite基础工具函数bounds_checking_function安全函数库1.3 设计思路与模式设计思路分层架构接口层提供统一的日志APIC/C/JS框架层实现日志格式化、缓存、输出逻辑服务层提供日志查看和落盘服务驱动层内核态日志处理双系统支持mini系统针对资源受限的LiteOS-M使用纯C实现featured系统针对LiteOS-A支持C接口和更多特性异步处理日志先写入缓存异步刷新到文件/UART减少日志操作对主业务的阻塞设计模式单例模式Singleton全局配置对象g_hiviewConfig日志缓存对象g_logCache观察者模式Observer日志文件监控HiLogFileAddWatcher/HiLogFileRemoveWatcher支持注册回调函数处理日志事件策略模式Strategy多种输出策略DEBUG输出、FLOW输出、TEXT_FILE、BIN_FILE通过配置选择不同的输出策略生产者-消费者模式日志产生方各模块作为生产者hilogcat/apphilogcat作为消费者通过Ring Buffer解耦1.4 系统框图┌─────────────────────────────────────────────────────────────────────────┐ │ 应用/服务层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ SAMGR │ │ ACE │ │ AAFWK │ │ MEDIA │ │ APP │ ... │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ │ │ └────────────┴────────────┼────────────┴────────────┘ │ │ ▼ │ ├─────────────────────────────────────────────────────────────────────────┤ │ HiLog_Lite 接口层 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ HILOG_DEBUG/INFO/WARN/ERROR/FATAL (C Macro) │ │ │ │ HiLog::Debug/Info/Warn/Error/Fatal (C Class) │ │ │ │ console.debug/info/warn/error (JS API) │ │ │ └────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ ├─────────────────────────────────────────────────────────────────────────┤ │ HiLog_Lite 框架层 │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │ │ │ hiview_log.c │ │ hiview_output │ │ hiview_log_limit │ │ │ │ (日志核心) │ │ _log.c │ │ .c (限流控制) │ │ │ │ - 模块注册 │ │ - 格式化输出 │ │ - 频率限制 │ │ │ │ - 参数解析 │ │ - 缓存管理 │ │ - 阈值配置 │ │ │ │ - 日志打印 │ │ - 文件写入 │ │ │ │ │ └────────┬────────┘ └────────┬────────┘ └──────────┬──────────┘ │ │ │ │ │ │ │ └────────────────────┼──────────────────────┘ │ │ ▼ │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ HiviewCache (环形缓冲区) │ │ │ └────────────────────────────────────────────────────────────────┘ │ │ │ │ ├────────────────────────────────┼────────────────────────────────────────┤ │ 服务层│ │ │ ┌────────────────────┼────────────────────┐ │ │ ▼ ▼ ▼ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ hilogcat │ │ apphilogcat │ │ hilog_command │ │ │ │ (日志查看) │ │ (日志落盘) │ │ (命令行工具) │ │ │ └────────┬────────┘ └────────┬────────┘ └─────────────────┘ │ │ │ │ │ │ └────────────────────┼────────────────────────────────────────┤ │ ▼ │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ /dev/hilog (设备驱动) │ │ │ └────────────────────────────────────────────────────────────────┘ │ │ │ │ ├────────────────────────────────┼────────────────────────────────────────┤ │ 内核层│ │ │ ▼ │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ hilogtask (内核日志任务) │ │ │ │ Ring Buffer (内核环形缓冲区) │ │ │ └────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────┐ ┌─────────────────┐ │ │ │ UART │ │ Log Files │ │ │ │ (串口输出) │ │ (日志文件) │ │ │ └─────────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘2. 模块结构2.1 源文件与头文件2.1.1 目录结构hiviewdfx_hilog_lite/ ├── interfaces/ # 接口定义 │ └── native/ │ ├── innerkits/hilog/ # 内部接口小型系统 │ │ ├── log.h # 日志API入口 │ │ ├── hilog_cp.h # C接口定义 │ │ ├── hiview_log.h # 核心日志接口 │ │ └── hilog_trace.h # 追踪接口 │ └── kits/ │ ├── hilog/log.h # 小型系统外部接口 │ └── hilog_lite/ # 轻量系统外部接口 │ ├── log.h │ └── hiview_log.h ├── frameworks/ # 框架实现 │ ├── mini/ # 轻量系统实现 │ │ ├── hiview_log.c # 日志核心实现 │ │ ├── hiview_output_log.c # 日志输出实现 │ │ ├── hiview_output_log.h │ │ ├── hiview_log_limit.c # 日志限流实现 │ │ └── hiview_log_limit.h │ ├── featured/ # 小型系统实现 │ │ ├── hilog.cpp # C接口实现 │ │ └── hiview_log.c # 日志核心实现 │ └── js/ # JS接口实现 │ └── builtin/ │ ├── include/ │ │ ├── hilog_module.h │ │ ├── hilog_string.h │ │ ├── hilog_vector.h │ │ └── hilog_wrapper.h │ └── src/ │ ├── hilog_module.cpp │ ├── hilog_string.cpp │ └── hilog_vector.cpp ├── services/ # 服务实现 │ ├── hilogcat/ # 日志查看服务 │ │ └── hiview_logcat.c │ └── apphilogcat/ # 日志落盘服务 │ └── hiview_applogcat.c ├── command/ # 命令行工具 │ ├── hilog_command.c │ └── hilog_command.h └── test/ # 测试代码 └── unittest/ ├── hilog_lite_test.cpp └── hilog_lite_test.h2.1.2 文件功能说明文件路径功能描述interfaces/native/innerkits/hilog/hiview_log.h定义日志级别、类型、核心API宏interfaces/native/innerkits/hilog/hilog_cp.hC类接口定义HiLog类interfaces/native/kits/hilog_lite/hiview_log.h轻量系统日志接口模块类型定义frameworks/mini/hiview_log.c轻量系统日志核心实现frameworks/mini/hiview_output_log.c日志格式化和输出实现frameworks/mini/hiview_log_limit.c日志限流控制实现frameworks/featured/hilog.cpp小型系统C接口实现frameworks/featured/hiview_log.c小型系统日志核心实现services/hilogcat/hiview_logcat.c实时日志查看工具services/apphilogcat/hiview_applogcat.c日志落盘服务command/hilog_command.c命令行参数解析2.2 类、结构体、函数与方法2.2.1 核心枚举类型// 日志模块类型轻量系统typedefenum{HILOG_MODULE_HIVIEW0,// DFX模块HILOG_MODULE_SAMGR,// 系统服务管理HILOG_MODULE_UPDATE,// 升级模块HILOG_MODULE_ACE,// 应用框架HILOG_MODULE_APP,// 第三方应用HILOG_MODULE_AAFWK,// 原子化服务框架HILOG_MODULE_GRAPHIC,// 图形模块HILOG_MODULE_MEDIA,// 多媒体模块HILOG_MODULE_DMS,// 分布式调度HILOG_MODULE_SEN,// 传感器HILOG_MODULE_SCY,// 安全模块HILOG_MODULE_SOFTBUS,// 软总线HILOG_MODULE_POWERMGR,// 电源管理HILOG_MODULE_UIKIT,// UI框架HILOG_MODULE_GLOBAL,// 全局子系统HILOG_MODULE_DATAMGR,// 数据管理HILOG_MODULE_INIT,// 初始化HILOG_MODULE_MAX64// 最大模块数}HiLogModuleType;// 日志级别小型系统typedefenum{LOG_DEBUG3,// 调试级别LOG_INFO4,// 信息级别LOG_WARN5,// 警告级别LOG_ERROR6,// 错误级别LOG_FATAL7,// 致命级别}LogLevel;// 日志类型typedefenum{LOG_TYPE_MIN0,LOG_INIT1,// 初始化阶段日志LOG_CORE3,// 核心服务日志LOG_TYPE_MAX}LogType;2.2.2 核心结构体// 日志通用头信息轻量系统#pragmapack(1)typedefstruct{uint8 head;// 日志头标识uint8 module;// 模块IDuint8 level:4;// 日志级别uint8 valueNumber:4;// 参数个数uint8 task;// 任务IDuint32 time;// 时间戳秒uint16 milli;// 毫秒constchar*fmt;// 格式化字符串}HiLogCommon;// 日志内容typedefstruct{HiLogCommon commonContent;uint32 values[LOG_MULTI_PARA_MAX];// 参数值最多6个}HiLogContent;#pragmapack()// 日志条目小型系统structHiLogEntry{unsignedintlen;// 日志长度unsignedinthdrSize;// 头部大小unsignedintpid:16;// 进程IDunsignedinttaskId:16;// 任务IDunsignedintsec;// 时间戳秒unsignedintnsec;// 纳秒unsignedintreserved;// 保留字段charmsg[0];// 日志消息柔性数组};// 日志限流规则typedefstruct{uint8 maxNum;// 最大日志行数限制uint8 logNum;// 当前日志计数uint16 baseTime;// 基准时间uint32 totalLogNum;// 总日志数uint32 totalDropLogNum;// 丢弃日志数}HiLogLimitRule;// 配置结构体typedefstruct{constunsignedcharoutputOption:4;// 输出选项unsignedcharhiviewInited:1;// 初始化标志unsignedcharlevel:3;// 日志级别unsignedcharlogSwitch:1;// 日志开关unsignedchareventSwitch:1;// 事件开关unsignedchardumpSwitch:1;// dump开关unsignedcharsilenceMod:1;// 静默模式charlogOutputModule[6];// 输出模块过滤unsignedshortwriteFailureCount;// 写入失败计数}HiviewConfig;2.2.3 C 类定义namespaceOHOS{namespaceHiviewDFX{// 日志标签结构structHiLogLabel{LogType type;// 日志类型unsignedintdomain;// 领域IDconstchar*tag;// 日志标签};// HiLog 类静态方法类classHiLogfinal{public:// 输出调试日志staticintDebug(constHiLogLabellabel,constchar*fmt,...)__attribute__((__format__(printf,2,3)));// 输出信息日志staticintInfo(constHiLogLabellabel,constchar*fmt,...)__attribute__((__format__(printf,2,3)));// 输出警告日志staticintWarn(constHiLogLabellabel,constchar*fmt,...)__attribute__((__format__(printf,2,3)));// 输出错误日志staticintError(constHiLogLabellabel,constchar*fmt,...)__attribute__((__format__(printf,2,3)));// 输出致命日志staticintFatal(constHiLogLabellabel,constchar*fmt,...)__attribute__((__format__(printf,2,3)));};}// namespace HiviewDFX}// namespace OHOS2.2.4 核心函数模块注册与管理// 注册模块信息booleanHiLogRegisterModule(uint16 id,constchar*name);// 获取模块名称constchar*HiLogGetModuleName(uint8 id);// 获取/设置日志级别uint32HiLogGetLogLevel(void);booleanHiLogSetLogLevel(uint8 level);日志输出// 轻量系统日志打印voidHiLogPrintf(uint8 module,uint8 level,constchar*nums,constchar*fmt,...);// 小型系统日志打印intHiLogPrint(LogType type,LogLevel level,unsignedintdomain,constchar*tag,constchar*fmt,...);// 带参数列表的日志打印intHiLogPrintArgs(LogType bufID,LogLevel prio,unsignedintdomain,constchar*tag,constchar*fmt,va_list ap);日志管理// 刷新日志缓冲区voidHiLogFlush(boolean syncFlag);intFlushHilog(void);// 日志输出到文件voidOutputLog(constuint8*data,uint32 len);// 日志格式化int32LogContentFmt(char*outStr,int32 outStrLen,constuint8*pLogContent);回调注册// 日志处理回调类型typedefboolean(*HilogProc)(constHiLogContent*hilogContent,uint32 len);// 注册/注销日志处理器voidHiLogRegisterProc(HilogProc func);voidHiLogUnRegisterProc(HilogProc func);// 文件监控回调类型typedefvoid(*FileProc)(constchar*path,uint8 type,uint8 event);// 注册/注销文件监控voidHiLogFileAddWatcher(FileProc func,constchar*dest);voidHiLogFileRemoveWatcher(FileProc func);2.3 类图implementsimplementsusesregistered incontainscontainsextends«interface»IHiLogDebug(fmt, ...) : intInfo(fmt, ...) : intWarn(fmt, ...) : intError(fmt, ...) : intFatal(fmt, ...) : intHiLogDebug(label, fmt, ...) : intInfo(label, fmt, ...) : intWarn(label, fmt, ...) : intError(label, fmt, ...) : intFatal(label, fmt, ...) : intHiLogPrintf-module: uint8-level: uint8HiLogPrintf(module, level, nums, fmt, ...) : voidHILOG_HashPrintf(...) : voidHiLogLabeltype: LogTypedomain: unsigned inttag: const char*HiLogModuleInfoid: uint16name: const char*HiLogManager-g_logModuleInfo[64]: HiLogModuleInfo-g_hiviewConfig: HiviewConfig-g_logCache: HiviewCache-g_logFile: HiviewFileHiLogInit() : voidHiLogRegisterModule(id, name) : booleanHiLogGetModuleName(id)OutputLog(data, len) : voidFlushLog(syncFlag) : voidHiLogCommonhead: uint8module: uint8level: uint8valueNumber: uint8task: uint8time: uint32milli: uint16fmt: const char*HiLogContentcommonContent: HiLogCommonvalues[6]: uint32HiLogLimitRulemaxNum: uint8logNum: uint8baseTime: uint16totalLogNum: uint32totalDropLogNum: uint32HiviewConfigoutputOption: uint8hiviewInited: uint8level: uint8logSwitch: uint8eventSwitch: uint8dumpSwitch: uint8silenceMod: uint8logOutputModule[6]: charwriteFailureCount: uint16HiLogEntrylen: unsigned inthdrSize: unsigned intpid: unsigned inttaskId: unsigned intsec: unsigned intnsec: unsigned intreserved: unsigned intmsg[0]: char2.4 模块内部依赖框图服务层_services框架层_frameworksmini子系统featured子系统JS子系统接口层_interfaces应用服务调用hiview_logcat.c日志实时查看读取/dev/hilog格式化输出到终端支持级别/模块过滤hiview_applogcat.c日志落盘服务读取/dev/hilog写入日志文件支持文件轮转hilog_command.c命令行参数处理HilogCmdProcFilterLevelLogFilterModuleLoghilog_module.cpphilog_string.cpphilog_vector.cpphilog.cppHiLog::Debug/Info/Warn/Errorhiview_log.cHiLogPrint/HiLogPrintArgs/FlushHiloghiview_log.cHiLogInit/HiLogPrintf/Registerhiview_output_log.cOutputLog/LogContentFmt/FlushLoghiview_log_limit.cLogIsLimited/SetLimitThresholdlog.h入口hilog_cp.hC接口hiview_log.h核心定义hilog_trace.h追踪接口应用/服务调用3. 模块间交互3.1 交互描述3.1.1 与外部模块的交互外部模块交互方式说明hiview_lite函数调用获取配置、缓存管理、服务注册samgr_lite消息机制通过SAMGR发送异步消息触发日志刷新内核驱动设备文件通过/dev/hilog进行读写操作bounds_checking_function函数调用使用安全字符串函数3.1.2 异步处理机制应用线程Hiview服务输出目标HILOG_INFO(...)写入缓存 (非阻塞)继续执行业务...缓存达到阈值异步刷新到UART/文件刷新完成应用线程Hiview服务输出目标3.1.3 多线程处理互斥锁保护使用g_logFlushInfo.mutex和g_outputLogInfo.mutex保护关键资源原子操作使用atomic_int保护回调函数引用计数消息队列通过 SAMGR 消息机制实现线程间通信3.2 外部依赖框图内核系统层基础层依赖模块hilog_lite上层调用者内核/系统层/dev/hilogUART文件系统utils_liteohos_types.hohos_init.hhiview_liteHiviewCacheHiviewFileHiviewConfigHiviewMutexsamgr_liteHiviewService消息队列服务注册bounds_checking_functionsnprintf_smemcpy_sstrncpy_smemset_s核心功能日志格式化日志缓存日志输出限流控制SAMGRACEAAFWKMEDIAAPP4. 状态机转换图4.1 状态机模型HiLog_Lite 模块包含两个主要的状态机日志系统状态机管理整个日志系统的生命周期日志输出状态机管理单条日志的处理流程4.2 状态机树图日志系统状态机层次树输出模式子状态系统状态未初始化UNINITED已初始化INITED已关闭CLOSED空闲IDLE缓存中CACHING刷新中FLUSHINGDEBUG调试输出FLOW流式输出TEXT_FILE文本文件BIN_FILE二进制文件4.3 状态切换规则4.3.1 系统状态转换当前状态触发事件目标状态转移条件UNINITEDHiLogInit()INITED初始化成功UNINITEDHiLogInit()UNINITED初始化失败INITEDClearLogOutput()CLOSED正常关闭INITED系统异常CLOSED异常退出4.3.2 日志处理状态转换当前状态触发事件目标状态转移条件IDLEHiLogPrintf()CACHING有日志写入CACHING缓存满FLUSHINGusedSize 阈值CACHINGFlushLog()FLUSHING手动刷新FLUSHING刷新完成IDLE缓存清空FLUSHING刷新失败CACHING重试4.4 状态机转换图系统启动初始化失败HiLogInit()CORE_INIT_PRI()ClearLogOutput()系统异常UNINITEDINITEDHiLogPrintf()缓存满/FlushLog()完成刷新失败(重试)缓存未满IDLECACHINGFLUSHINGCLOSED4.5 日志处理流程图否是否是否是是否DEBUG其他失败成功否是开始检查日志开关logSwitchON?丢弃日志检查日志级别levelconfig?丢弃日志检查模块注册module valid?丢弃日志检查限流状态LogIsLimited?丢弃日志记录统计格式化日志填充HiLogContent检查输出模式outputOption?直接UART输出写入缓存WriteToCacheUART输出警告缓存达到阈值?usedSizeBUF?结束发送刷新消息HiviewSendMsg结束结束结束结束结束结束结束5. 接口设计5.1 公共接口5.1.1 C语言宏接口轻量系统/** * brief 输出调试级别日志 * param mod 模块ID类型为HiLogModuleType * param fmt 格式化字符串不支持%s最多6个参数 * return 无返回值 * note 格式化后单条日志最大128字节 */#defineHILOG_DEBUG(mod,fmt,...)/** * brief 输出信息级别日志 * param mod 模块ID * param fmt 格式化字符串 */#defineHILOG_INFO(mod,fmt,...)/** * brief 输出警告级别日志 * param mod 模块ID * param fmt 格式化字符串 */#defineHILOG_WARN(mod,fmt,...)/** * brief 输出错误级别日志 * param mod 模块ID * param fmt 格式化字符串 */#defineHILOG_ERROR(mod,fmt,...)/** * brief 输出致命级别日志 * param mod 模块ID * param fmt 格式化字符串 */#defineHILOG_FATAL(mod,fmt,...)5.1.2 C语言宏接口小型系统/** * brief 输出调试级别日志 * param type 日志类型LOG_CORE等 * param fmt 格式化字符串支持{public}/{private}隐私标记 * return 成功返回0失败返回0 * example HILOG_DEBUG(LOG_CORE, value%{public}d, value); */#defineHILOG_DEBUG(type,...)#defineHILOG_INFO(type,...)#defineHILOG_WARN(type,...)#defineHILOG_ERROR(type,...)#defineHILOG_FATAL(type,...)5.1.3 C类接口namespaceOHOS{namespaceHiviewDFX{classHiLog{public:/** * brief 输出调试日志 * param label 日志标签包含type、domain、tag * param fmt 格式化字符串 * return 成功返回写入字节数失败返回0 */staticintDebug(constHiLogLabellabel,constchar*fmt,...);staticintInfo(constHiLogLabellabel,constchar*fmt,...);staticintWarn(constHiLogLabellabel,constchar*fmt,...);staticintError(constHiLogLabellabel,constchar*fmt,...);staticintFatal(constHiLogLabellabel,constchar*fmt,...);};}// namespace HiviewDFX}// namespace OHOS5.1.4 模块管理接口/** * brief 注册日志模块 * param id 模块ID范围0-63 * param name 模块名称最长15个字母 * return TRUE成功FALSE失败 * note 未注册的模块无法输出日志 */booleanHiLogRegisterModule(uint16 id,constchar*name);/** * brief 获取模块名称 * param id 模块ID * return 模块名称字符串无效ID返回空字符串 */constchar*HiLogGetModuleName(uint8 id);/** * brief 获取当前日志级别 * return 当前配置的日志级别 */uint32HiLogGetLogLevel(void);/** * brief 设置日志级别 * param level 日志级别HILOG_LV_DEBUG到HILOG_LV_FATAL * return TRUE成功FALSE失败 */booleanHiLogSetLogLevel(uint8 level);5.1.5 日志控制接口/** * brief 刷新日志缓冲区 * param syncFlag TRUE同步刷新FALSE异步刷新 */voidHiLogFlush(boolean syncFlag);/** * brief 刷新日志到驱动小型系统 * return 写入字节数 */intFlushHilog(void);/** * brief 获取日志配置选项 * return 输出选项值 */uint32HiLogGetConfigOption(void);5.1.6 回调注册接口/** * brief 日志处理回调函数类型 * param hilogContent 日志内容指针 * param len 日志长度 * return TRUE表示已处理平台不再处理FALSE继续处理 */typedefboolean(*HilogProc)(constHiLogContent*hilogContent,uint32 len);/** * brief 注册日志处理器 * param func 回调函数指针 */voidHiLogRegisterProc(HilogProc func);/** * brief 注销日志处理器 * param func 回调函数指针 */voidHiLogUnRegisterProc(HilogProc func);/** * brief 文件处理回调函数类型 * param path 文件路径 * param type 文件类型 * param event 事件类型0表示文件满 */typedefvoid(*FileProc)(constchar*path,uint8 type,uint8 event);/** * brief 添加日志文件监控 * param func 回调函数 * param dest 目标文件路径 */voidHiLogFileAddWatcher(FileProc func,constchar*dest);/** * brief 移除日志文件监控 * param func 回调函数 */voidHiLogFileRemoveWatcher(FileProc func);5.2 数据交换接口5.2.1 设备驱动接口// 设备节点路径#defineHILOG_DRIVER/dev/hilog// 日志条目结构与驱动交互structHiLogEntry{unsignedintlen;// 总长度unsignedinthdrSize;// 头部大小unsignedintpid:16;// 进程IDunsignedinttaskId:16;// 任务IDunsignedintsec;// 时间戳秒unsignedintnsec;// 纳秒unsignedintreserved;// 保留charmsg[0];// 日志消息};// 读取日志intfdopen(HILOG_DRIVER,O_RDONLY);read(fd,buf,HILOG_LOGBUFFER);// 写入日志intfdopen(HILOG_DRIVER,O_WRONLY);write(fd,buf,strlen(buf)1);5.2.2 追踪ID接口/** * brief 追踪ID获取函数类型 * param chainId 链路ID输出 * param flag 标志位输出 * param spanId SpanID输出 * param parentSpanId 父SpanID输出 * return 0成功-1无效 */typedefint(*RegisterFunc)(uint64_t*,uint32_t*,uint64_t*,uint64_t*);/** * brief 注册追踪ID获取函数 * param registerFunc 回调函数 * return 0成功-1失败 */intHiLogRegisterGetIdFun(RegisterFunc registerFunc);/** * brief 注销追踪ID获取函数 * param registerFunc 回调函数 */voidHiLogUnregisterGetIdFun(RegisterFunc registerFunc);5.3 接口调用时序图5.3.1 日志输出时序图应用模块HiLog接口日志核心缓存管理输出服务HILOG_INFO()HiLogPrintf()CheckParameters()返回检查结果LogIsLimited()返回限流状态OutputLog()WriteToCache()写入完成检查缓存阈值HiviewSendMsg()(异步刷新)alt[缓存达到阈-值]返回应用模块HiLog接口日志核心缓存管理输出服务5.3.2 日志查看时序图用户hilogcat驱动节点内核hilogtaskhilogcat -L IHilogCmdProc()open(/dev/hilog)返回fdread(fd, buf)读取RingBuffer返回日志数据HiLogEntryFilterLevelLog()FilterModuleLog()printf(...)日志输出loop[循环读取]用户hilogcat驱动节点内核hilogtask5.4 异常处理异常场景处理方式返回值模块未注册丢弃日志无日志级别不足丢弃日志无缓存写入失败输出警告到UART无文件写入失败增加失败计数重试无参数个数超限使用默认提示信息无格式化失败返回错误码-1设备打开失败返回00附录A. 编译配置选项配置项说明默认值HILOG_COMPILE_LEVEL编译时日志级别HILOG_LV_DEBUGDISABLE_HILOG_CACHE禁用日志缓存未定义DISABLE_HILOG_LITE_PRINT_LIMIT禁用打印限流未定义DISABLE_HILOG_LITE_CORE_INIT禁用自动初始化未定义OHOS_RELEASE发布版本标记未定义DISABLE_HILOG_PRIVACY禁用隐私保护未定义B. 使用示例B.1 轻量系统使用示例#includelog.h// 1. 注册模块如果是新模块HiLogRegisterModule(HILOG_MODULE_APP,MYAPP);// 2. 输出日志HILOG_DEBUG(HILOG_MODULE_APP,Debug message: %d,100);HILOG_INFO(HILOG_MODULE_APP,Info message);HILOG_ERROR(HILOG_MODULE_APP,Error code: %d,errno);B.2 小型系统使用示例#includehilog/log.h// 1. 定义日志标签#defineLOG_DOMAIN0x0001#defineLOG_TAGMyModule// 2. 输出日志支持隐私标记HILOG_INFO(LOG_CORE,User name: %{private}s, age: %{public}d,name,age);B.3 C使用示例#includehilog/log.husingnamespaceOHOS::HiviewDFX;// 定义日志标签staticconstexprHiLogLabel LABEL{LOG_CORE,0x0001,MyModule};// 输出日志HiLog::Info(LABEL,Info message: %{public}d,value);HiLog::Error(LABEL,Error occurred: %{public}s,errorMsg);
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

景德镇网站维护企业邮箱注册申请需要多少钱

AutoHotkey鼠标坐标获取神器:精准定位效率提升10倍的终极解决方案 【免费下载链接】AutoHotkey 项目地址: https://gitcode.com/gh_mirrors/autohotke/AutoHotkey 还在为获取精确鼠标坐标而手忙脚乱吗?手动截图、画图软件反复查看,这…

张小明 2026/1/9 8:07:17 网站建设

可以做ppt的网站wordpress连接微博专业版 下载

如何快速掌握Topit:Mac窗口置顶的终极完整指南 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 在Mac电脑上进行多任务处理时,你是否经常…

张小明 2026/1/10 7:52:50 网站建设

网站备案会过期吗上海手机网站制作公司

目录具体实现截图项目介绍论文大纲核心代码部分展示可定制开发之亮点部门介绍结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持Python(flask,django)、…

张小明 2026/1/10 7:52:48 网站建设

公司网站上传图片潍坊市高新区建设局网站

text2vec-base-chinese:让计算机真正理解中文语义的智能引擎 【免费下载链接】text2vec-base-chinese 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/text2vec-base-chinese 还在为计算机无法理解中文文本的真实含义而烦恼吗?text2ve…

张小明 2026/1/10 7:52:48 网站建设

坪洲网站建设哈尔滨大型网站建设电话

在今年的声学、语音与信号处理国际会议(ICASSP)上,某中心的文本转语音(TTS)团队发表了四篇论文。这些论文均涉及语音转换(在保持韵律特征的同时将一种合成语音转换为另一种)、数据增强&#xff…

张小明 2026/1/10 7:52:52 网站建设