UNPKG

miniprogram-logger

Version:

It is used to log and gather statistics of users' behavior.

79 lines (78 loc) 2.7 kB
import { ConsoleManager } from "./console/console"; import { ReportMonitor as CounterReportMonitor } from "./count/index"; import { LogManager, ReportAnalytics as LogReporter, RelatimeLogger } from "./log/index"; import { ReportAnalytics as TelemetryReporter } from "./telemetry/index"; import { ReportAnalytics as TimeReporter } from "./time/index"; export { guid } from "./common/guid"; export { logTransformFunction } from "./common/reporter"; export { AllLevels, isLogLevel } from "./log/index"; export { TelemetryTransformFunction } from "./telemetry/index"; export { ConsoleManager, CounterReportMonitor, LogReporter, LogManager, TelemetryReporter, TimeReporter, }; /** * 原始console */ export const originConsole = console; /** * 计数器 */ export const defaultCounter = new CounterReportMonitor(); /** * 本地日志Logger */ export const defaultLogManager = wx.getLogManager && new LogManager(); /** * 实时日志 */ export const defaultRealtimeLogger = wx.getRealtimeLogManager && new RelatimeLogger(); /** * 日志上报 */ export const defaultLogReporter = new LogReporter("log", ["level", "action", "content", "correlation_id",]); /** * 计时器上报 */ export const defaultTimer = new TimeReporter("time", ["action", "duration", "param", "request_id", "result", "type"]); /** * Telemetry 统计日志 */ export const defaultTelemetry = new TelemetryReporter("telemetry"); export const logger = new ConsoleManager(originConsole); logger.Counters.push(defaultCounter); if (defaultLogManager) { logger.Loggers.push(defaultLogManager); } if (defaultRealtimeLogger) { logger.Loggers.push(defaultRealtimeLogger); } logger.Loggers.push(defaultLogReporter); logger.Telemetry.push(defaultTelemetry); logger.Timers.push(defaultTimer); let isInjected = false; /** * 监听全局错误 * wx.onPageNotFound * wx.onError * wx.onMemoryWarning * wx.onAudioInterruptionEnd * wx.onAudioInterruptionBegin */ export function inject() { if (!isInjected) { isInjected = true; if (wx.onPageNotFound) { wx.onPageNotFound(res => logger.error("wx.onPageNotFound", res)); } if (wx.onError) { wx.onError(err => logger.error("wx.onError", err)); } //基础库 2.6.2 开始支持 if (wx.onAudioInterruptionBegin) { wx.onAudioInterruptionEnd(err => logger.warn("wx.onAudioInterruptionEnd", err)); wx.onAudioInterruptionBegin(err => logger.warn("wx.onAudioInterruptionBegin", err)); } // 内存不足告警事件的回调函数 if (wx.onMemoryWarning) { wx.onMemoryWarning(err => logger.warn("wx.onMemoryWarning", err)); } } }