UNPKG

1.18 kBPlain TextView Raw
1import {
2 InferFeatures,
3 LoggerPlugin,
4 ReactotronCore,
5 assertHasLoggerPlugin,
6 Plugin,
7} from "reactotron-core-client"
8
9/**
10 * Track calls to console.log, console.warn, and console.debug and send them to Reactotron logger
11 */
12const trackGlobalLogs = () => (reactotron: ReactotronCore) => {
13 assertHasLoggerPlugin(reactotron)
14 const client = reactotron as ReactotronCore & InferFeatures<ReactotronCore, LoggerPlugin>
15
16 return {
17 onConnect: () => {
18 const originalConsoleLog = console.log
19 console.log = (...args: Parameters<typeof console.log>) => {
20 originalConsoleLog(...args)
21 client.log(...args)
22 }
23
24 const originalConsoleWarn = console.warn
25 console.warn = (...args: Parameters<typeof console.warn>) => {
26 originalConsoleWarn(...args)
27 client.warn(args[0])
28 }
29
30 const originalConsoleDebug = console.debug
31 console.debug = (...args: Parameters<typeof console.debug>) => {
32 originalConsoleDebug(...args)
33 client.debug(args[0])
34 }
35
36 // console.error is taken care of by ./trackGlobalErrors.ts
37 },
38 } satisfies Plugin<ReactotronCore>
39}
40
41export default trackGlobalLogs