xref: /MusicFree/src/utils/log.ts (revision 3d4d06d97c4d26f92447d0589edfb5b2cfaed4d5)
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