xref: /MusicFree/src/utils/log.ts (revision 2aa881935ca35b8fb1abc4206e0dc35149231456)
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 function errorLog(desc: string, message: any) {
48    if (Config.get('setting.basic.debug.errorLog')) {
49        log.error({
50            desc,
51            message,
52        });
53        trace(desc, message, 'error');
54    }
55}
56
57export function devLog(
58    method: 'log' | 'error' | 'warn' | 'info',
59    ...args: any[]
60) {
61    if (Config.get('setting.basic.debug.devLog')) {
62        addLog(method, args);
63    }
64}
65
66export {log};
67