首页 > 数据库 > 数据库开发技术 > HarmonyOS NEXT实战:日志工具
##HarmonyOS Next实战##HarmonyOS SDK应用服务##教育##
目标:封装日志工具,实现日志工具简单可用。
在应用开发过程中,可在关键代码处输出日志信息。在运行应用后,通过查看日志信息来分析应用执行情况(如应用是否正常运行、代码运行时序、运行逻辑分支是否正常等)。
系统提供不同的API供开发者调用并输出日志信息,即HiLog与console。两个API在使用时略有差异,本文重点介绍HiLog的用法,console的具体用法可查看API参考console。
HiLog中定义了DEBUG、INFO、WARN、ERROR、FATAL五种日志级别,并提供了对应的方法输出不同级别的日志。
参数解析
说明
约束与限制:日志最多打印4096字节,超出限制文本将被截断。
实战:
import { hilog } from '@kit.PerformanceAnalysisKit';
/**
* 日志级别
*/
export enum LogLevel {
debug = "debug",
info = "info",
warn = 'warn',
error = "error"
}
/**
* 日志工具
* ###待考虑:设置打印日志级别
*/
export class LoggerKit {
private domain: number;
private prefix: string;
private enableLogLevels: LogLevel[];
/**
* 日志记录器工具
* @param domain 域,默认:0xABCD
* @param prefix 前缀,默认:LoggerKit
* @param enableLogLevels 启用日志级别,默认:全部启用
*/
constructor(domain: number = 0xABCD, prefix: string = 'LoggerKit',
enableLogLevels = [LogLevel.debug, LogLevel.info, LogLevel.warn, LogLevel.error]) {
this.domain = domain;
this.prefix = prefix;
this.enableLogLevels = enableLogLevels;
}
debug(...args: string[]) {
if (this.enableLogLevels.includes(LogLevel.debug)) {
hilog.debug(this.domain, this.prefix, getFormat(args), args);
}
}
info(...args: string[]) {
if (this.enableLogLevels.includes(LogLevel.info)) {
hilog.info(this.domain, this.prefix, getFormat(args), args);
}
}
warn(...args: string[]) {
if (this.enableLogLevels.includes(LogLevel.warn)) {
hilog.warn(this.domain, this.prefix, getFormat(args), args);
}
}
error(...args: string[]) {
if (this.enableLogLevels.includes(LogLevel.error)) {
hilog.error(this.domain, this.prefix, getFormat(args), args);
}
}
static LK_domain: number = 0xABCD;
static LK_prefix: string = 'LoggerKit';
static LK_enableLogLevels: LogLevel[] = [LogLevel.debug, LogLevel.info, LogLevel.warn, LogLevel.error];
static debug(...args: string[]) {
if (LoggerKit.LK_enableLogLevels.includes(LogLevel.debug)) {
hilog.debug(LoggerKit.LK_domain, LoggerKit.LK_prefix, getFormat(args), args);
}
}
static info(...args: string[]) {
if (LoggerKit.LK_enableLogLevels.includes(LogLevel.info)) {
hilog.info(LoggerKit.LK_domain, LoggerKit.LK_prefix, getFormat(args), args);
}
}
static warn(...args: string[]) {
if (LoggerKit.LK_enableLogLevels.includes(LogLevel.warn)) {
hilog.warn(LoggerKit.LK_domain, LoggerKit.LK_prefix, getFormat(args), args);
}
}
static error(...args: string[]) {
if (LoggerKit.LK_enableLogLevels.includes(LogLevel.error)) {
hilog.error(LoggerKit.LK_domain, LoggerKit.LK_prefix, getFormat(args), args);
}
}
}
function getFormat(args: string[]) {
let format = ''
for (let i = 0; i < args.length; i++) {
if (i == 0) {
format = '%{public}s'
} else {
format += ', %{public}s'
}
}
return format
}
原文作者:;如有侵权,请联系管理员删除。