miniprogram-logger
Version:
It is used to log and gather statistics of users' behavior.
79 lines (78 loc) • 2.7 kB
JavaScript
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));
}
}
}