更新记录
1.0.3(2026-02-11)
新增功能
- 日志文件按小时切分:
initLog(LOG_FILE_MODE_HOUR),按小时时文件名为log_yyyy-MM-dd_HH.log(如log_2026-02-11_12.log) - initLog 可选参数:
initLog(logFileMode?),不传或传LOG_FILE_MODE_DAY(0) 按天,传LOG_FILE_MODE_HOUR(1) 按小时;移除独立方法setLogFileMode - 指定文件上传:
uploadFile(filePath, options, uploadFileName?, onCallback?),上传指定本地文件 - 指定文件夹压缩上传:
uploadFolder(folderPath, options, onCallback?),将指定目录打包为 zip 后上传 - iOS 端支持:新增 app-ios(Swift),与 Android/鸿蒙保持同一套 API
- 导出常量 LOG_FILE_MODE_DAY、LOG_FILE_MODE_HOUR,便于传入
initLog
问题修复
- 无
功能优化
- 鸿蒙、iOS 与 Android 对齐:支持按天/按小时日志命名及清理、上传时的日期解析(含
log_yyyy-MM-dd_HH.log格式) - 文档:readme 补充平台说明、方法表、IUpload/IReturn、快速开始与按小时示例
1.0.2(2026-02-06)
新增功能
- 上传日志时可自定义文件后缀,避免服务不支持
- 新增鸿蒙版的支持
问题修复
- 无
功能优化
- 无
1.0.1(2026-01-07)
新增功能
- 无
问题修复
- 无
功能优化
- 优化了系统日志自主收集行为的日志记录
平台兼容性
uni-app(4.76)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | Android插件版本 | iOS | 鸿蒙 | 鸿蒙插件版本 |
|---|---|---|---|---|---|---|---|---|---|---|
| - | - | × | × | - | - | 5.0 | 1.0.0 | - | √ | 1.0.0 |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | - | × | × |
uni-app x(4.76)
| Chrome | Safari | Android | Android插件版本 | iOS | 鸿蒙 | 鸿蒙插件版本 | 微信小程序 |
|---|---|---|---|---|---|---|---|
| × | × | 5.0 | 1.0.0 | - | √ | 1.0.2 | × |
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| × | × | √ |
ima-log 应用日志收集与上报
UTS 插件,支持自动 + 主动收集应用日志,支持按天/按小时切分日志文件,支持上传到自有服务器。
能力概览: 自动收集应用日志(含生命周期、崩溃)、设置用户/标签、记录各级别日志、获取/清理本地日志、上传日志(多文件/压缩包)、指定文件上传、指定文件夹压缩上传。
支持平台: Android、iOS、鸿蒙(HarmonyOS)
日志文件命名
- 按天(默认):
log_yyyy-MM-dd.log,如log_2026-02-11.log - 按小时:
log_yyyy-MM-dd_HH.log,如log_2026-02-11_12.log
初始化时传入initLog(LOG_FILE_MODE_HOUR)即可。
需要权限
- 文件读取、文件写入
"android.permission.READ_EXTERNAL_STORAGE"
"android.permission.WRITE_EXTERNAL_STORAGE"
- 即:在
manifest.json中的distribute.android.permissions加入
// 读取文件时需要
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
// 写入文件时需要(默认保存到沙盒缓存)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
快速开始
import { initLog, LOG_FILE_MODE_DAY, LOG_FILE_MODE_HOUR } from '@/uni_modules/ima-log'
// 按天切分日志(默认)
initLog()
// 按小时切分日志
initLog(LOG_FILE_MODE_HOUR)
// 或 initLog(1)
使用示例(设置日志 + 上传)
<template>
<view class="content">
<view class="content-title">设置日志</view>
<view class="content-button ima-log" @click="logInfoClick">设置一般日志</view>
<view class="content-button ima-log" @click="logWarnClick">设置警告日志</view>
<view class="content-button ima-log" @click="logErrorClick">设置错误日志</view>
<view class="content-button ima-log" @click="logUserClick">设置事件日志</view>
<view class="content-button ima-log" @click="logAppClick">设置系统日志</view>
</view>
</template>
<script lang="ts">
import {
initLog,
LOG_FILE_MODE_HOUR,
setUser,
setTag,
logInfo,
logWarn,
logError,
logUser,
logApp
} from '@/uni_modules/ima-log'
export default {
data() {
return {}
},
onLoad() {
// 按小时切分日志并初始化
initLog(LOG_FILE_MODE_HOUR)
.then((res: any) => console.log(res))
.catch((err: any) => console.log(err))
},
methods: {
// 设置用户
setUserClick() {
setUser('码小趣')
.then((res: any) => {
console.log(res)
})
.catch((err: any) => {
console.log(err)
})
},
// 设置标签
setTagClick() {
setTag('标签')
.then((res: any) => {
console.log(res)
})
.catch((err: any) => {
console.log(err)
})
},
// 设置一般日志
logInfoClick() {
logInfo('一般日志')
.then((res: any) => {
console.log(res)
})
.catch((err: any) => {
console.log(err)
})
},
// 设置警告日志
logWarnClick() {
logWarn('警告日志')
.then((res: any) => {
console.log(res)
})
.catch((err: any) => {
console.log(err)
})
},
// 设置错误日志
logErrorClick() {
logError('错误日志')
.then((res: any) => {
console.log(res)
})
.catch((err: any) => {
console.log(err)
})
},
// 设置事件日志【自定义】
logUserClick() {
logUser('设置事件日志', 'logUser')
.then((res: any) => {
console.log(res)
})
.catch((err: any) => {
console.log(err)
})
},
// 设置系统日志【自定义】
logAppClick() {
logApp('设置系统日志', 'logApp')
.then((res: any) => {
console.log(res)
})
.catch((err: any) => {
console.log(err)
})
}
}
}
</script>
<style lang="scss">
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
&-title {
margin-top: 10rpx;
padding: 10rpx;
font-size: 44rpx;
font-weight: 800;
color: #ff0000;
}
&-message {
font-size: 28rpx;
font-weight: 800;
text-align: center;
color: #ff6700;
}
&-button {
height: 65rpx;
width: 750rpx;
padding: 20rpx;
line-height: 65rpx;
text-align: center;
background: #00e0f1;
margin-bottom: 25rpx;
}
}
</style>
方法一览
| 方法 | 说明 | 参数 | 平台 |
|---|---|---|---|
| initLog(logFileMode?) | 初始化自动收集应用日志 | logFileMode: 可选,LOG_FILE_MODE_DAY(0) 按天 / LOG_FILE_MODE_HOUR(1) 按小时,不传默认按天 |
Android / iOS / 鸿蒙 |
| LOG_FILE_MODE_DAY | 常量 0,按天切分日志文件 | - | 全平台 |
| LOG_FILE_MODE_HOUR | 常量 1,按小时切分日志文件 | - | 全平台 |
| setUser(user, userName?) | 设置用户标识 | user: 用户 id,userName: 可选 | 全平台 |
| setTag(tag) | 设置标签 | tag: 标签名 | 全平台 |
| logInfo(msg) | 记录一般日志 | msg: 内容 | 全平台 |
| logWarn(msg) | 记录警告日志 | msg: 内容 | 全平台 |
| logError(msg) | 记录错误日志 | msg: 内容 | 全平台 |
| logUser(msg, type?) | 记录用户/事件日志 | msg: 内容,type: 可选类型 | 全平台 |
| logApp(msg, type?) | 记录系统/应用日志 | msg: 内容,type: 可选类型 | 全平台 |
| getLogFiles(include?) | 获取本地日志文件列表 | include: 是否包含 log_apps.log,默认 false |
全平台 |
| cleanLogs(keepDay?) | 清理过期日志 | keepDay: 保留最近天数,默认 30;不清理 log_apps.log | 全平台 |
| uploadLog(options, onCallback?) | 上传日志文件(多文件逐个上传) | options: IUpload,onCallback: 可选 |
全平台 |
| uploadZip(options, onCallback?) | 压缩并上传日志文件(zip) | options: IUpload,onCallback: 可选 |
全平台 |
| uploadFile(filePath, options, uploadFileName?, onCallback?) | 上传指定单个文件 | filePath: 本地绝对路径,options: IUpload,uploadFileName: 可选 |
全平台 |
| uploadFolder(folderPath, options, onCallback?) | 压缩指定文件夹并上传 | folderPath: 本地文件夹绝对路径,options: IUpload |
全平台 |
IUpload 上传参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| serverUrl | string | 是 | 上传接口地址 |
| headers | UTSJSONObject | null | 否 | 请求头 |
| parameters | UTSJSONObject | null | 否 | 附加表单参数 |
| timeout | number | 否 | 超时时间(毫秒),默认 30000 |
| include | boolean | 否 | 是否包含系统日志 log_apps.log,默认 false |
| days | number | 否 | 上传最近几天日志,默认 7(仅 uploadLog/uploadZip 使用) |
| suffix | string | 否 | 上传时文件后缀,uploadLog 默认 "log",uploadZip/uploadFolder 默认 "zip" |
type IUpload = {
serverUrl: string
headers?: UTSJSONObject | null
parameters?: UTSJSONObject | null
timeout?: number
include?: boolean
days?: number
suffix?: string
}
IReturn 返回值
type IReturn = {
success: boolean
message: string
data?: IData // 如 uploadedFiles、totalSize、fileCount 等
}
使用说明
- uploadFile / uploadFolder:
filePath、folderPath须为应用可访问的本地绝对路径(如 Android 下plus.io.convertLocalFileSystemURL('_doc')得到路径后使用)。 - 按小时模式:在应用启动时调用
initLog(LOG_FILE_MODE_HOUR)即可,之后写入的日志将按小时落入log_yyyy-MM-dd_HH.log。 - 清理与上传:
cleanLogs、uploadLog、uploadZip已同时支持按天与按小时两种文件名格式,无需额外配置。

收藏人数:
购买源码授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(0)
下载 647
赞赏 1
下载 11668090
赞赏 1895
赞赏
京公网安备:11010802035340号