最近在做uniapp的项目,由于项目场景比较复杂,在处理售后问题的时候发现仅通过后端请求日志无法满足需求,于是便开始写一个前端保存操作日志的方法。
一、使用方法:
}
3、参数
参数 | 说明 | 数据类型 | 默认值 |
tag | 日志标签,默认会在标签后面追加“:” | string | |
msg | 日志内容 | string、object、array | ” |
methods:{
handleClick() {
let data = {
name:'张三',
age:18
}
this.$LogCat.d('点击了',data) //2023-04-20 14:15:30 点击了:{name:'张三',age:18}
}
}
二、JS代码如下:
export const LogCat = {
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: function() {
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: function(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}`;
}
}
三、说明
默认配置了日志最大存储时间(saveDays)为7天,可自行修改
四、文章参考
https://ext.dcloud.net.cn/plugin?id=1816
原文地址:https://blog.csdn.net/Linxi_001/article/details/130265639
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_29260.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。