src/components/log/log.ts (43 lines of code) (raw):

import {Share} from 'react-native'; import deviceLog, {InMemoryAdapter} from 'react-native-device-log'; deviceLog.init(new InMemoryAdapter(), { logToConsole: true, logRNErrors: true, rowInsertDebounceMs: 0, maxNumberToRender: 2000, maxNumberToPersist: 2000, }); export default { log(...params: unknown[]) { return deviceLog.log(...params); }, info(...params: unknown[]) { return deviceLog.info(...params); }, debug(...params: unknown[]) { return deviceLog.debug(...params); }, warn(...params: unknown[]) { return deviceLog.error(...params); }, enableLog() { deviceLog.options.logToConsole = true; deviceLog.log('Logging has been turned on'); }, disableLog() { deviceLog.options.logToConsole = false; }, }; export async function getLogs(): Promise<string> { const rows = await deviceLog.store.getRows(); return rows .reverse() // They store comments in reverse order .map((row: { timeStamp: Record<any, any>, message: string }) => `${row.timeStamp._i}: ${row.message}`) .join('\n'); } export async function copyRawLogs() { const logs = await getLogs(); Share.share({ message: logs, }); }