@sdc-monitor/demo
Version:
<div align="center"> <a href="#" target="_blank"> <img src="https://i.loli.net/2021/07/28/EvPwd4NjVH3tBfO.jpg" alt="mito-logo" height="90"> </a> <p>A Lightweight SDK For Monitor Web</p>
36 lines (34 loc) • 1.36 kB
text/typescript
import { BrowserBreadcrumbTypes, BrowserEventTypes, globalVar } from '@sdc-monitor/shared'
import { replaceOld, Severity, _global } from '@sdc-monitor/utils'
import { BasePluginType, ConsoleCollectType } from '@sdc-monitor/types'
import { BrowserClient } from '../browserClient'
import { addBreadcrumbInBrowser } from '../utils'
const consolePlugin: BasePluginType<BrowserEventTypes, BrowserClient> = {
name: BrowserEventTypes.CONSOLE,
monitor(notify) {
if (!('console' in _global)) {
return
}
const logType = ['log', 'debug', 'info', 'warn', 'error', 'assert']
logType.forEach(function (level: string): void {
if (!(level in _global.console)) return
replaceOld(_global.console, level, function (originalConsole: () => any): Function {
return function (...args: any[]): void {
if (originalConsole) {
notify(BrowserEventTypes.CONSOLE, { args, level })
originalConsole.apply(_global.console, args)
}
}
})
})
},
transform(collectedData: ConsoleCollectType) {
return collectedData
},
consumer(transformedData: ConsoleCollectType) {
if (globalVar.isLogAddBreadcrumb) {
addBreadcrumbInBrowser.call(this, transformedData, BrowserBreadcrumbTypes.CONSOLE, Severity.fromString(transformedData.level))
}
}
}
export default consolePlugin