Skip to content

输出到SQLite数据库 1.5.10 +

log4a实现了DatabaseAppender,开发者可以通过此追加器,将日志记录在HarmonyOS关系型数据库中

基础用法

typescript
const dbAppender = new DatabaseAppender({
  ctx,
  name: 'mainDbAppender',
  level: Level.ALL
})
LogManager.registerLogger('Index').bindAppenderGlobally(dbAppender);

在初始化DatabaseAppender时,需要传入IDatabaseAppenderOption

typescript
interface IDatabaseAppenderOption {
ctx: common.BaseContext; // 应用上下文
name: string; // 追加器名称
level: Level; // 追加器日志等级
storeConfig?: relationalStore.StoreConfig; // 数据库配置
}

若初始化配置中的storeConfig为空,则使用默认的初始化配置,默认配置如下:

typescript
const config = {
  securityLevel: relationalStore.SecurityLevel.S1,
  name: `log4a_${databaseAppenderOptions.name}_output.db`
}

其中,databaseAppenderOptions.name即IDatabaseAppenderOption中的name属性

查询历史日志

从Logger中拿到DatabaseAppender后,可通过getLogs方法获取历史日志。getLogs方法接收0-1个参数, 参数缺省时获取所有历史日志。参数类型为DbLogFilter

DbLogFilter

数据库日志过滤器

create()

新建一个过滤器

maxLevel(level)

  • level Level - 最大日志等级

minLevel(level)

  • level Level - 最小日志等级

tag(tag)

  • tag string - 搜索标签

ILogInfo

typescript
interface ILogInfo {
level: Level;
tag: string;
time: number;
count: number;
message: string;
tempContext?: TemporaryLoggerContext;
}

用例

typescript
const appender = this.logger.getAppender<DatabaseAppender>('mainDbAppender');
if (appender) {
  const logs: Array<ILogInfo> =
    appender.getLogs(DbLogFilter.create().maxLevel(Level.ALL).minLevel(Level.WARN).tag('ExampleTag'));
  for (let log of logs) {
    console.log(log.tag, log.level, log.time, log.count, log.message);
  }
}

以 Apache License 2.0 许可证发布