vue2 txt日志打印以及读取txt文本数据
1.创建log.js在根目录下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | let fs = require( 'fs' ) import { parseTime } from "./src/renderer/utils/index" import { MessageBox } from 'element-ui' function writeLog(value){ let logAddress =localStorage.getItem( 'logAddress' ) logAddress = logAddress?.replace(/\\/g, '/' ) if (logAddress?.charAt(logAddress.length - 1) !== '\/' ){ logAddress += '\/' } fs.mkdirSync(logAddress, { recursive: true }) let date = parseTime( new Date(), '{y}-{m}-{d}' )+ '的日志' let filePath = `${logAddress}${date}.txt` let time = parseTime( new Date(), '{h}:{i}:{s}.{t}' ) try { fs.appendFileSync(filePath, `${time}:${value}\n`, err => { if (err) { console.info(err) throw err } }) } catch (error) { MessageBox.alert( '日志写入出错,请联系管理员解决' , '日志写入异常' ) console.error( 'An error occurred while appending data:' , error) } } export default writeLog |
2. index.js 时间格式的封装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | export function parseTime(time, cFormat) { if (arguments.length === 0) { return null } const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}' let date if ( typeof time === 'object' ) { date = time } else { if (( typeof time === 'string' )) { if ((/^[0-9]+$/.test(time))) { // support "1548221490638" time = parseInt(time) } else { // support safari // https://stackoverflow.com/questions/4310953/invalid-date-in-safari time = time.replace( new RegExp(/-/gm), '/' ) } } if (( typeof time === 'number' ) && (time.toString().length === 10)) { time = time * 1000 } date = new Date(time) } const formatObj = { y: date.getFullYear(), m: date.getMonth() + 1, d: date.getDate(), h: date.getHours(), i: date.getMinutes(), s: date.getSeconds(), a: date.getDay(), t:date.getMilliseconds() } const time_str = format.replace(/{([ymdhisat])+}/g, (result, key) => { const value = formatObj[key] // Note: getDay() returns 0 on Sunday if (key === 'a' ) { return [ '日' , '一' , '二' , '三' , '四' , '五' , '六' ][value ] } if (key === 't' ) { return value.toString().padStart(3, '0' ) } return value.toString().padStart(2, '0' ) }) return time_str } |
3.使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | getLogAddress(){ let _this = this let settingFilePath = process.env.NODE_ENV == 'production' ? process.resourcesPath + '/setting/log.txt' : path.resolve(__dirname, "../../setting/log.txt" ) const r1 = readline.createInterface({ input: fs.createReadStream(settingFilePath) }) let arr = [] var i = 1 //txt中的行数 r1.on( 'line' , function (line){ arr.push(line) i+=1 }) r1.on( 'close' , () => { if (arr.length && arr[1]){ localStorage.setItem( 'logAddress' ,arr[1]) } else { let address = process.env.NODE_ENV == 'production' ? process.resourcesPath + "/logs/" : path.resolve(__dirname, "../../logs/" ) localStorage.setItem( 'logAddress' ,address) } }) }, import writeLog from '../../log' writeLog( '---软件启动---' ) |
4.记得在package.json 添加log的配置,在安装文件里面会看到日志
1 2 3 4 5 6 7 8 9 10 11 12 | "build" : { "extraResources" : [ { "from" : "setting/" , "to" : "setting/" }, { "from" : "logs/" , "to" : "logs/" } ], }, |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!