DevEco Studio中使用console.log输出的log,每次重启App都会清空,如何设置不清空

DevEco Studio中使用console.log输出的log,每次重启App都会清空,如何设置不清空 DevEco Studio中使用console.log输出的log,每次重启App都会清空,如何设置不清空

7 回复

没法设置,如果需要日志持久化 建议使用HiLog


一、使用hilog替代console.log

console.log默认输出到临时缓存区,而hilog支持持久化日志存储:

import { hilog } from '@kit.PerformanceAnalysisKit';

// 输出INFO级别日志到持久化文件
hilog.info(0x0001, 'MyTag', 'This is a persistent log message');

二、配置日志文件存储路径

将日志写入应用持久化目录以避免自动清理:

import { fileIo as fs } from '@kit.CoreFileKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 获取应用持久化目录路径
const logDir = getContext().filesDir + '/logs';
// 创建日志目录(若不存在)
fs.mkdirSync(logDir);

// 自定义日志写入方法
function writePersistentLog(message: string) {
  const logFile = logDir + '/app.log';
  const timestamp = new Date().toISOString();
  fs.appendFileSync(logFile, `${timestamp}: ${message}\n`);
}

// 使用示例
writePersistentLog('Application started');

三、设置日志保留策略

通过文件生命周期管理控制日志保留:

// 检查日志文件大小并轮转
function rotateLogs() {
  const maxSize = 1024 * 1024; // 1MB
  const logFile = logDir + '/app.log';
  
  const stats = fs.statSync(logFile);
  if (stats.size > maxSize) {
    const backupFile = logDir + `/app_${Date.now()}.log`;
    fs.renameSync(logFile, backupFile);
  }
}

// 应用启动时执行检查
onPageShow(() => {
  rotateLogs();
});

四、查看持久化日志

通过以下方式访问存储的日志文件:

  • 通过设备文件管理器:

    在/data/app/el2/100/log/[应用包名]/目录下查找自定义日志文件

  • 通过hdc命令导出:

hdc file recv /data/app/el2/100/log/[应用包名]/logs/app.log ./local_logs/

找HarmonyOS工作还需要会Flutter技术的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

目前基本所有IDE重启项目的时候都会清空log

额。。。。目前市面上说有的IDE都会在重启项目的时候清空log吧。。。。

在DevEco Studio中,console.log输出的日志默认在应用重启时会被清空。要设置日志持久化,可以在工程的entry/src/main/resources/base/profile/目录下,修改main_pages.json配置文件。在"module"字段内添加"persistentLog": true属性。保存后重新编译运行应用,日志将在重启后保留。

在HarmonyOS Next应用开发中,DevEco Studio的Log窗口默认会在每次应用启动时清空历史日志。这是设计行为,目前没有直接的IDE设置选项可以完全禁止此清空操作。

不过,你可以通过以下两种核心方法来持久化查看日志:

  1. 输出日志到文件 这是最可靠的方法。你可以在应用中编写代码,将console.log的内容同时写入到设备的特定文件(例如应用沙箱目录)中。之后,你可以通过DevEco Studio的 Device Managerhdc 命令行工具将文件导出到本地查看。这实现了日志的完全持久化,不受应用重启或IDE连接的影响。

    // 示例代码片段 (ArkTS)
    import fs from '@ohos.file.fs';
    import hilog from '@ohos.hilog';
    
    // 日志文件路径(应用沙箱目录)
    let logFilePath: string = 'YOUR_APP_SANDBOX_PATH/log.txt';
    
    function writeLogToFile(message: string) {
      // 将message字符串追加写入到logFilePath文件中
      // 注意:实际代码中需要处理路径、异步操作和错误
    }
    
    // 包装console.log
    let originalLog = console.log;
    console.log = (...args) => {
      // 1. 调用原始方法输出到IDE Log窗口
      originalLog.apply(console, args);
      // 2. 将格式化的日志信息写入文件
      let logMessage = args.join(' ') + '\n';
      writeLogToFile(logMessage);
    };
    
  2. 使用 hilog 系统日志 HarmonyOS Next提供了功能更强的 @ohos.hilog 系统日志模块。虽然其输出在DevEco Studio的 HiLog 窗口中也默认会在应用重启时被刷新,但系统层会保留一定量的历史日志。你可以通过 hdc shell hilog 命令在设备上直接查看更完整的日志历史,这对于调试和分析周期性问题更有帮助。

    import hilog from '@ohos.hilog';
    
    // 定义日志标签
    const TAG: string = 'MyAppTag';
    
    // 输出日志
    hilog.info(0x0000, TAG, 'This is an info log.');
    hilog.debug(0x0000, TAG, 'This is a debug log.');
    

总结: 若需完全持久化的日志,请采用 “输出到文件” 方案。若主要关注调试阶段且需利用系统日志能力,可优先使用 hilog 模块并结合 hdc shell hilog 命令查看历史。DevEco Studio的Log窗口设计为实时捕获当前运行会话的日志,适用于大多数即时调试场景。

回到顶部