uniapp生成的app添加操作日志

代码和使用方法如下

1.操作日志公共方法:

js 复制代码
// common/logger.js:
export const logger = {
  main: plus.android.runtimeMainActivity(),
  Environment: plus.android.importClass("android.os.Environment"),
  BufferedWriter: plus.android.importClass("java.io.BufferedWriter"),
  File: plus.android.importClass("java.io.File"),
  FileOutputStream: plus.android.importClass("java.io.FileOutputStream"),
  OutputStreamWriter: plus.android.importClass("java.io.OutputStreamWriter"),
  LogPath: "", //日志存储目录
  saveDays: 7, //日志最大存储天数
  init() {
    if (
      this.Environment.MEDIA_MOUNTED ||
      !this.Environment.isExternalStorageRemovable()
    ) {
      this.LogPath = this.main.getExternalFilesDir(null).getPath();
    } else {
      this.LogPath = this.main.getFilesDir().getPath();
    }
    let fileManager = new this.File(this.LogPath);
    let files = fileManager.listFiles();
    let now = new Date();
    let maxSavedDay = utils.getFormatDate(
      now - this.saveDays * 24 * 60 * 60 * 1000
    );
    // 遍历目录下的日志文件,并删除日志最大存储天数前的日志
    for (var i in files) {
      let name = files[i].getName().split(".")[0],
        time = name.split("_")[1];
      if (time <= maxSavedDay && name.search("log_") == 0) {
        files[i].delete();
      }
    }
    console.log("LogPath->", this.LogPath);
  },
  d(tag, msg = "") {
    let now = new Date();
    let date = utils.getFormatDate(now);
    let datetime = utils.getFormatDateTime(now);

    msg = typeof msg !== "string" ? JSON.stringify(msg) : msg;

    //文件名
    let fileName = this.LogPath + "/log_" + date + ".txt";
    //写入的内容
    let content = `\n${datetime} ${tag}${msg ? ":" + msg : msg}\n`;

    let file = new this.File(this.LogPath);
    if (!file.exists()) {
      file.mkdirs(); //创建父路径
    }
    let fos = null;
    let bw = null;
    try {
      fos = new this.FileOutputStream(fileName, true);
      bw = new this.BufferedWriter(new this.OutputStreamWriter(fos));
      //bw.write(log);
      bw.append(content);
    } catch (e) {
      console.log("e->", e);
    } finally {
      try {
        if (bw != null) {
          bw.close(); //关闭缓冲流
          fos.close(); //关闭文件输出流
        }
      } catch (closeEx) {
        console.log("closeEx->", closeEx);
      }
    }
  },
};

export const utils = {
  getFormatDate(dateString) {
    const date = new Date(dateString);
    let year = date.getFullYear();
    let month = date.getMonth() + 1;
    let day = date.getDate();
    month = month > 9 ? month : "0" + month;
    day = day > 9 ? day : "0" + day;
    return `${year}-${month}-${day}`;
  },
  getFormatDateTime(dateString) {
    const date = new Date(dateString);
    let year = date.getFullYear();
    let month = date.getMonth() + 1;
    let day = date.getDate();
    let hour = date.getHours();
    let min = date.getMinutes();
    let second = date.getSeconds();

    month = month > 9 ? month : "0" + month;
    day = day > 9 ? day : "0" + day;
    hour = hour > 9 ? hour : "0" + hour;
    min = min > 9 ? min : "0" + min;
    second = second > 9 ? second : "0" + second;

    return `${year}-${month}-${day} ${hour}:${min}:${second}`;
  },
};

2.main.js中全局引入:

js 复制代码
//main.js:
//#ifdef APP-PLUS
import { logger } from "./common/logger.js";
Vue.prototype.$logger = logger;
//#endif

3.App.vue中初始化操作日志公共方法:

js 复制代码
// App.vue:
onLaunch: function() {
    //#ifdef APP-PLUS
    this.$logger.init();
    //#endif
}

4.使用方法说明:

调用this.$logger.d(tag,msg)方法

参数 说明 数据类型 默认值
tag 日志标签,默认会在标签后面追加":" string
msg 日志内容 string、object、array ''

5.vue项目中使用:

js 复制代码
methods: {
     handleData() {
          let data = {
            name:'张三',
            age:18
          }
          this.$logger.d('返回的数据为',data)  //2025-10-21 15:50:30 返回的数据为:{name:'张三',age:18}
      }
}

6.说明:

默认配置了日志最大存储时间(saveDays)为7天,可配置。

拓展

uniapp添加操作日志(uniapp、日志、文件、html5+)
uni app 的app端 写入运行日志到指定文件夹
uni-app使用本地文件在移动端长久存储数据

相关推荐
donecoding19 分钟前
一个 sudo 引发的血案:npm 全局包权限错乱彻底修复
前端·node.js·前端工程化
风骏时光牛马24 分钟前
Raku正则匹配与数据批量处理实操案例
前端
nbwenren27 分钟前
2026实测:Gemini 3 镜像站视觉能力实践——拍照原型图,一键生成 HTML+CSS 代码
前端·css·html
Lee川29 分钟前
Prisma 实战指南:像搭积木一样设计古诗词数据库
前端·数据库·后端
jinanwuhuaguo1 小时前
(第二十九篇)OpenClaw 实时与具身的跃迁——从异步孤岛到数字世界的“原住民”
前端·网络·人工智能·重构·openclaw
广州华水科技1 小时前
深度测评2026年单北斗GNSS位移监测系统推荐,与高口碑变形监测设备一同引领行业新风尚
前端
Alice-YUE2 小时前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
是上好佳佳佳呀3 小时前
【前端(十一)】JavaScript 语法基础笔记(多语言对比)
前端·javascript·笔记
CDN3603 小时前
排查实录:网站偶发502/504错误?360CDN回源超时配置与日志分析技巧
前端·数据库