UNPKG

@grafana/runtime

Version:
1 lines 7.11 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":";;;;;AAUO,SAAS,OAAA,CAAQ,SAAiB,QAAA,EAAuB;AAC9D,EAAA,IAAI,MAAA,CAAO,uBAAuB,OAAA,EAAS;AACzC,IAAA,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,CAAC,OAAO,CAAA,EAAG;AAAA,MAC1B,OAAO,QAAA,CAAS,IAAA;AAAA,MAChB,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AACF;AAOO,SAAS,UAAA,CAAW,SAAiB,QAAA,EAAuB;AACjE,EAAA,IAAI,MAAA,CAAO,uBAAuB,OAAA,EAAS;AACzC,IAAA,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,CAAC,OAAO,CAAA,EAAG;AAAA,MAC1B,OAAO,QAAA,CAAS,IAAA;AAAA,MAChB,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AACF;AAOO,SAAS,QAAA,CAAS,SAAiB,QAAA,EAAuB;AAC/D,EAAA,IAAI,MAAA,CAAO,uBAAuB,OAAA,EAAS;AACzC,IAAA,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,CAAC,OAAO,CAAA,EAAG;AAAA,MAC1B,OAAO,QAAA,CAAS,KAAA;AAAA,MAChB,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AACF;AAOO,SAAS,QAAA,CAAS,KAAY,QAAA,EAAuB;AAC1D,EAAA,IAAI,MAAA,CAAO,uBAAuB,OAAA,EAAS;AACzC,IAAA,IAAA,CAAK,GAAA,CAAI,UAAU,GAAA,EAAK;AAAA,MACtB,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AACF;AAQO,SAAS,cAAA,CAAe,IAAA,EAAc,MAAA,EAA2B,OAAA,EAAsB;AAC5F,EAAA,IAAI,MAAA,CAAO,uBAAuB,OAAA,EAAS;AACzC,IAAA,IAAA,CAAK,GAAA,CAAI,eAAA;AAAA,MACP;AAAA,QACE,IAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,EAAE,OAAA;AAAiB,KACrB;AAAA,EACF;AACF;AAwBO,SAAS,sBAAA,CAAuB,QAAgB,cAAA,EAA+C;AACpG,EAAA,MAAM,iBAAA,GAAoB,CAAC,QAAA,MAA2B;AAAA,IACpD,MAAA;AAAA,IACA,GAAG,cAAA;AAAA,IACH,GAAG;AAAA,GACL,CAAA;AAEA,EAAA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,QAAA,EAAU,CAAC,OAAA,EAAiB,QAAA,KAA0B,SAAS,OAAA,EAAS,iBAAA,CAAkB,QAAQ,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOnG,OAAA,EAAS,CAAC,OAAA,EAAiB,QAAA,KAA0B,QAAQ,OAAA,EAAS,iBAAA,CAAkB,QAAQ,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOjG,UAAA,EAAY,CAAC,OAAA,EAAiB,QAAA,KAA0B,WAAW,OAAA,EAAS,iBAAA,CAAkB,QAAQ,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOvG,QAAA,EAAU,CAAC,KAAA,EAAc,QAAA,KAA0B,SAAS,KAAA,EAAO,iBAAA,CAAkB,QAAQ,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO9F,cAAA,EAAgB,CAAC,IAAA,EAAc,WAAA,EAAgC,QAAA,KAC7D,eAAe,IAAA,EAAM,WAAA,EAAa,iBAAA,CAAkB,QAAQ,CAAC;AAAA,GACjE;AACF;;;;"}