1import {logger, fileAsyncTransport} from 'react-native-logs'; 2import RNFS from 'react-native-fs'; 3import pathConst from '@/constants/pathConst'; 4import Config from '../core/config'; 5import {addLog} from '@/lib/react-native-vdebug/src/log'; 6 7const config = { 8 transport: fileAsyncTransport, 9 transportOptions: { 10 FS: RNFS, 11 filePath: pathConst.logPath, 12 fileName: `error-log-{date-today}.log`, 13 }, 14 dateFormat: 'local', 15}; 16 17const traceConfig = { 18 transport: fileAsyncTransport, 19 transportOptions: { 20 FS: RNFS, 21 filePath: pathConst.logPath, 22 fileName: `trace-log.log`, 23 }, 24 dateFormat: 'local', 25}; 26 27const log = logger.createLogger(config); 28const traceLogger = logger.createLogger(traceConfig); 29 30export function trace( 31 desc: string, 32 message?: any, 33 level: 'info' | 'error' = 'info', 34) { 35 if (__DEV__) { 36 console.log(desc, message); 37 } 38 // 特殊情况记录操作路径 39 if (Config.get('setting.basic.debug.traceLog')) { 40 traceLogger[level]({ 41 desc, 42 message, 43 }); 44 } 45} 46 47export async function clearLog() { 48 const files = await RNFS.readDir(pathConst.logPath); 49 await Promise.all( 50 files.map(async file => { 51 if (file.isFile()) { 52 try { 53 await RNFS.unlink(file.path); 54 } catch {} 55 } 56 }), 57 ); 58} 59 60export function errorLog(desc: string, message: any) { 61 if (Config.get('setting.basic.debug.errorLog')) { 62 log.error({ 63 desc, 64 message, 65 }); 66 trace(desc, message, 'error'); 67 } 68} 69 70export function devLog( 71 method: 'log' | 'error' | 'warn' | 'info', 72 ...args: any[] 73) { 74 if (Config.get('setting.basic.debug.devLog')) { 75 addLog(method, args); 76 } 77} 78 79export {log}; 80