UNPKG

@grafana/runtime

Version:
1 lines 7.09 kB
{"version":3,"file":"logging.mjs","sources":["../../../src/utils/logging.ts"],"sourcesContent":["import { faro, LogContext, LogLevel } from '@grafana/faro-web-sdk';\n\nimport { config } from '../config';\n\nexport { LogLevel };\n\n/**\n * Log a message at INFO level\n * @public\n */\nexport function logInfo(message: string, contexts?: LogContext) {\n if (config.grafanaJavascriptAgent.enabled) {\n faro.api.pushLog([message], {\n level: LogLevel.INFO,\n context: contexts,\n });\n }\n}\n\n/**\n * Log a message at WARNING level\n *\n * @public\n */\nexport function logWarning(message: string, contexts?: LogContext) {\n if (config.grafanaJavascriptAgent.enabled) {\n faro.api.pushLog([message], {\n level: LogLevel.WARN,\n context: contexts,\n });\n }\n}\n\n/**\n * Log a message at DEBUG level\n *\n * @public\n */\nexport function logDebug(message: string, contexts?: LogContext) {\n if (config.grafanaJavascriptAgent.enabled) {\n faro.api.pushLog([message], {\n level: LogLevel.DEBUG,\n context: contexts,\n });\n }\n}\n\n/**\n * Log an error\n *\n * @public\n */\nexport function logError(err: Error, contexts?: LogContext) {\n if (config.grafanaJavascriptAgent.enabled) {\n faro.api.pushError(err, {\n context: contexts,\n });\n }\n}\n\n/**\n * Log a measurement\n *\n * @public\n */\nexport type MeasurementValues = Record<string, number>;\nexport function logMeasurement(type: string, values: MeasurementValues, context?: LogContext) {\n if (config.grafanaJavascriptAgent.enabled) {\n faro.api.pushMeasurement(\n {\n type,\n values,\n },\n { context: context }\n );\n }\n}\n\nexport interface MonitoringLogger {\n logDebug: (message: string, contexts?: LogContext) => void;\n logInfo: (message: string, contexts?: LogContext) => void;\n logWarning: (message: string, contexts?: LogContext) => void;\n logError: (error: Error, contexts?: LogContext) => void;\n logMeasurement: (type: string, measurement: MeasurementValues, contexts?: LogContext) => void;\n}\n/**\n * Creates a monitoring logger with five levels of logging methods: `logDebug`, `logInfo`, `logWarning`, `logError`, and `logMeasurement`.\n * These methods use `faro.api.pushX` web SDK methods to report these logs or errors to the Faro collector.\n *\n * @param {string} source - Identifier for the source of the log messages.\n * @param {LogContext} [defaultContext] - Context to be included in every log message.\n *\n * @returns {MonitoringLogger} Logger object with five methods:\n * - `logDebug(message: string, contexts?: LogContext)`: Logs a debug message.\n * - `logInfo(message: string, contexts?: LogContext)`: Logs an informational message.\n * - `logWarning(message: string, contexts?: LogContext)`: Logs a warning message.\n * - `logError(error: Error, contexts?: LogContext)`: Logs an error message.\n * - `logMeasurement(measurement: Omit<MeasurementEvent, 'timestamp'>, contexts?: LogContext)`: Logs a measurement.\n * Each method combines the `defaultContext` (if provided), the `source`, and an optional `LogContext` parameter into a full context that is included with the log message.\n */\nexport function createMonitoringLogger(source: string, defaultContext?: LogContext): MonitoringLogger {\n const createFullContext = (contexts?: LogContext) => ({\n source: source,\n ...defaultContext,\n ...contexts,\n });\n\n return {\n /**\n * Logs a debug message with optional additional context.\n * @param {string} message - The debug message to be logged.\n * @param {LogContext} [contexts] - Optional additional context to be included.\n */\n logDebug: (message: string, contexts?: LogContext) => logDebug(message, createFullContext(contexts)),\n\n /**\n * Logs an informational message with optional additional context.\n * @param {string} message - The informational message to be logged.\n * @param {LogContext} [contexts] - Optional additional context to be included.\n */\n logInfo: (message: string, contexts?: LogContext) => logInfo(message, createFullContext(contexts)),\n\n /**\n * Logs a warning message with optional additional context.\n * @param {string} message - The warning message to be logged.\n * @param {LogContext} [contexts] - Optional additional context to be included.\n */\n logWarning: (message: string, contexts?: LogContext) => logWarning(message, createFullContext(contexts)),\n\n /**\n * Logs an error with optional additional context.\n * @param {Error} error - The error object to be logged.\n * @param {LogContext} [contexts] - Optional additional context to be included.\n */\n logError: (error: Error, contexts?: LogContext) => logError(error, createFullContext(contexts)),\n\n /**\n * Logs an measurement with optional additional context.\n * @param {MeasurementEvent} measurement - The measurement object to be recorded.\n * @param {LogContext} [contexts] - Optional additional context to be included.\n */\n logMeasurement: (type: string, measurement: MeasurementValues, contexts?: LogContext) =>\n logMeasurement(type, measurement, createFullContext(contexts)),\n };\n}\n"],"names":[],"mappings":";;;;AAUgB,SAAA,OAAA,CAAQ,SAAiB,QAAuB,EAAA;AAC9D,EAAI,IAAA,MAAA,CAAO,uBAAuB,OAAS,EAAA;AACzC,IAAA,IAAA,CAAK,GAAI,CAAA,OAAA,CAAQ,CAAC,OAAO,CAAG,EAAA;AAAA,MAC1B,OAAO,QAAS,CAAA,IAAA;AAAA,MAChB,OAAS,EAAA;AAAA,KACV,CAAA;AAAA;AAEL;AAOgB,SAAA,UAAA,CAAW,SAAiB,QAAuB,EAAA;AACjE,EAAI,IAAA,MAAA,CAAO,uBAAuB,OAAS,EAAA;AACzC,IAAA,IAAA,CAAK,GAAI,CAAA,OAAA,CAAQ,CAAC,OAAO,CAAG,EAAA;AAAA,MAC1B,OAAO,QAAS,CAAA,IAAA;AAAA,MAChB,OAAS,EAAA;AAAA,KACV,CAAA;AAAA;AAEL;AAOgB,SAAA,QAAA,CAAS,SAAiB,QAAuB,EAAA;AAC/D,EAAI,IAAA,MAAA,CAAO,uBAAuB,OAAS,EAAA;AACzC,IAAA,IAAA,CAAK,GAAI,CAAA,OAAA,CAAQ,CAAC,OAAO,CAAG,EAAA;AAAA,MAC1B,OAAO,QAAS,CAAA,KAAA;AAAA,MAChB,OAAS,EAAA;AAAA,KACV,CAAA;AAAA;AAEL;AAOgB,SAAA,QAAA,CAAS,KAAY,QAAuB,EAAA;AAC1D,EAAI,IAAA,MAAA,CAAO,uBAAuB,OAAS,EAAA;AACzC,IAAK,IAAA,CAAA,GAAA,CAAI,UAAU,GAAK,EAAA;AAAA,MACtB,OAAS,EAAA;AAAA,KACV,CAAA;AAAA;AAEL;AAQgB,SAAA,cAAA,CAAe,IAAc,EAAA,MAAA,EAA2B,OAAsB,EAAA;AAC5F,EAAI,IAAA,MAAA,CAAO,uBAAuB,OAAS,EAAA;AACzC,IAAA,IAAA,CAAK,GAAI,CAAA,eAAA;AAAA,MACP;AAAA,QACE,IAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,EAAE,OAAiB;AAAA,KACrB;AAAA;AAEJ;AAwBgB,SAAA,sBAAA,CAAuB,QAAgB,cAA+C,EAAA;AACpG,EAAM,MAAA,iBAAA,GAAoB,CAAC,QAA2B,MAAA;AAAA,IACpD,MAAA;AAAA,IACA,GAAG,cAAA;AAAA,IACH,GAAG;AAAA,GACL,CAAA;AAEA,EAAO,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,QAAA,EAAU,CAAC,OAAiB,EAAA,QAAA,KAA0B,SAAS,OAAS,EAAA,iBAAA,CAAkB,QAAQ,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOnG,OAAA,EAAS,CAAC,OAAiB,EAAA,QAAA,KAA0B,QAAQ,OAAS,EAAA,iBAAA,CAAkB,QAAQ,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOjG,UAAA,EAAY,CAAC,OAAiB,EAAA,QAAA,KAA0B,WAAW,OAAS,EAAA,iBAAA,CAAkB,QAAQ,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOvG,QAAA,EAAU,CAAC,KAAc,EAAA,QAAA,KAA0B,SAAS,KAAO,EAAA,iBAAA,CAAkB,QAAQ,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO9F,cAAA,EAAgB,CAAC,IAAA,EAAc,WAAgC,EAAA,QAAA,KAC7D,eAAe,IAAM,EAAA,WAAA,EAAa,iBAAkB,CAAA,QAAQ,CAAC;AAAA,GACjE;AACF;;;;"}