HarmonyOS 鸿蒙Next怎么屏蔽无用日志(ArkTS)

发布于 1周前 作者 caililin 来自 鸿蒙OS

HarmonyOS 鸿蒙Next怎么屏蔽无用日志(ArkTS) 新建一个项目,啥也没添加,直接运行,log日志下面就有一大堆各种类型的(Debug/Error/Info/Warning)日志一直在输出,这些无关的日志能不能屏蔽掉?即使输出日志,也不应该一直输出呀? 并且这样输出感觉很耗电脑性能!对于开发者来说,只想开到自己输出的日志以及必要的系统日志。希望华为继续优化吧。


更多关于HarmonyOS 鸿蒙Next怎么屏蔽无用日志(ArkTS)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

个人经验:

1、理解Log的级别,EcoDev Studio的日志是有改进的,Error, Warn, Info, Debug 等不同级别的日志是用不同颜色标注,很容易区分;记一下什么级别什么颜色,总共没几个:)

2、Log窗口上方有几个下拉框可以进行初步日志过滤,过滤条件为:

  • 设备: 针对有多设备连接的情况,如果就一个模拟器或真机,则自动选中;

  • 应用:针对目标设备上有多个开发应用在运行情况,可过滤系统日志和应用相关日志;你上面的贴图中就是没有过滤这一层,将系统日志和应用日志全部显示了,当然混乱了:)

  • 日志级别:可选择查看 1 中所说的不同日志级别的日志,下拉框中越上面的级别日志越多,因为上面的级别包含下面的级别的日志;如果要定位错误,选择Error,如果要看全部,选择 Verbose,其它可自行尝试;

  • 关键字符串过滤,在级别过滤框右侧,可自行设置关键字,配合HiLog中使用某些自定义关键字可只显示你自己的代码中的日志;很多文档中的示例代码用的console.xxx()对于日志查看不是很方便;华为官方的应用示例中有个封装好的Logger类比较有用,可复制到项目中再自行优化一下,其中为日志准备了日志标签项,个人常用如下,其中的tag中含有方法名及==字符串,在Log窗口中的关键字过滤框中输入==就基本过滤掉无关的多数日志。

function test(n: number): string {
  let tag: string = 'test()==';
  Logger.info(tag, `-------------------- enter`);
}

3、另外Log窗口还有搜索功能,Ctrl+F,可在显示大量日志时快速定位感兴趣的内容;

这些足够用了。

更多关于HarmonyOS 鸿蒙Next怎么屏蔽无用日志(ArkTS)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


使用我知道,我想表达的是:

  1. 没必要一直重复输出日志;

  2. 我只是新建一个项目,啥也没添加,模拟器是新建的,无关的系统日志没必要输出;

  3. 开发者更多关注的是自己输出的日志和必要的系统日志。

开发不同应用的人对系统日志的需求不同的,工具不能替你进行筛选;而运行中的模拟器或真机本身就是大循环套小循环保持活跃,自然就会有新日志不断产生;

无论模拟器新建与否,只要是个系统在跑,日志就不断;有关无关你自己决定,工具只是全部提供;不想要点几下过滤就眼不见心不烦了:)

过滤、过滤、过滤 + 个性标识日志过滤;还要啥?要不你举个合你意的IDE的日志样板给大家看看:)

我之前是做iOS开发的,用的是Xcode,日志就很干净,只输出自己的和必要的(错误或警告)信息,并且启动就可以直接看到对应的输出信息(如果有log)。DevEco还需要点击切换到日志上去查看(默认的是Run的命令信息)。也可能我对这个不是太习惯,总感觉没必要一直输出信息debug/info这种级别的系统log日志,这种开发者真的关注多吗?即使需要,也应该是单独的一个模块中输出,不应和用户日志在一块显示。

日志显示的设置那里,有一个精简模式,开启后不显示底层日志,只显示主动打印的。

Log窗口上面有个Setting,你可以设置默认过滤,也可设置显示的日志级别,不用每次打开点击过滤,应该可满足你的要求:)

在HarmonyOS鸿蒙Next中,屏蔽无用日志可以通过配置日志级别来实现。ArkTS提供了Log模块,支持不同级别的日志输出,包括DEBUGINFOWARNERRORFATAL。通过设置日志级别,可以过滤掉低于该级别的日志信息。

  1. 设置全局日志级别:在应用的入口文件(如entry/src/main/ets/entryability/EntryAbility.ts)中,使用Log.setLogLevel()方法设置全局日志级别。例如,设置为Log.INFO级别,则DEBUG级别的日志将不会输出。

    import Log from '[@ohos](/user/ohos).log';
    
    Log.setLogLevel(Log.INFO);
  2. 局部日志级别设置:在特定模块或代码段中,可以通过Log.isLoggable()方法判断当前日志级别是否满足输出条件,从而控制日志输出。

    if (Log.isLoggable(Log.DEBUG)) {
        Log.debug('This is a debug message');
    }
  3. 使用日志标签:通过为日志添加标签,可以在日志输出时进行更细粒度的控制。例如,使用Log.tag()方法为日志添加标签,然后在日志配置中根据标签过滤日志。

    Log.tag('MyTag').debug('This is a debug message with tag');
  4. 配置文件控制:在config.json中,可以通过logLevel字段配置应用的日志级别。例如,设置为info级别,则debug级别的日志将不会输出。

    {
      "app": {
        "logLevel": "info"
      }
    }

通过以上方法,可以有效屏蔽HarmonyOS鸿蒙Next中的无用日志,减少日志输出的冗余信息。

在HarmonyOS鸿蒙Next中,屏蔽无用日志可以通过以下步骤实现:

  1. 使用日志级别控制:在ArkTS中,使用console对象的不同方法(如console.debugconsole.infoconsole.warnconsole.error)来控制日志输出。通过设置日志级别,可以屏蔽低级别的日志。

  2. 配置日志过滤器:在开发环境中,可以通过配置文件或代码设置日志过滤器,只输出特定级别或模块的日志。

  3. 使用条件编译:在发布版本中,通过条件编译移除调试日志,确保生产环境中不输出无用日志。

通过这些方法,可以有效屏蔽无用日志,提升应用性能。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!