UNPKG

2.54 kBJavaScriptView Raw
1Object.defineProperty(exports, "__esModule", { value: true });
2exports.logger = exports.init = exports.setLogLevel = exports.LOG_LEVEL = exports.formatTable = void 0;
3const node_1 = require("@sentry/node");
4const Table = require("cli-table");
5const consola = require("consola");
6exports.logger = consola;
7/**
8 * Format a list as a table
9 *
10 * @param options Options that are passed to cli-table constructor
11 * @param values A list (of lists) of values
12 */
13function formatTable(options, values) {
14 const table = new Table(options);
15 table.push(...values);
16 return table.toString();
17}
18exports.formatTable = formatTable;
19/***************************************************************/
20/**
21 * Below: we module-export "consola" instance by default.
22 */
23var LOG_LEVEL;
24(function (LOG_LEVEL) {
25 LOG_LEVEL[LOG_LEVEL["ERROR"] = 0] = "ERROR";
26 LOG_LEVEL[LOG_LEVEL["WARN"] = 1] = "WARN";
27 LOG_LEVEL[LOG_LEVEL["INFO"] = 2] = "INFO";
28 LOG_LEVEL[LOG_LEVEL["SUCCESS"] = 3] = "SUCCESS";
29 LOG_LEVEL[LOG_LEVEL["DEBUG"] = 4] = "DEBUG";
30 LOG_LEVEL[LOG_LEVEL["TRACE"] = 4] = "TRACE";
31})(LOG_LEVEL = exports.LOG_LEVEL || (exports.LOG_LEVEL = {}));
32/** Reporter that sends logs to Sentry */
33class SentryBreadcrumbReporter {
34 /** Hook point for handling log entries */
35 log(logEntry) {
36 const breadcrumb = {
37 message: `${logEntry.message}\n${logEntry.additional}`,
38 level: logEntry.type,
39 };
40 node_1.addBreadcrumb(breadcrumb);
41 }
42}
43/**
44 * Read logging level from the environment and return the appropriate enum value
45 */
46function getLogLevelFromEnv() {
47 const logLevelName = (process.env.CRAFT_LOG_LEVEL || '').toUpperCase();
48 const logLevelNumber = LOG_LEVEL[logLevelName];
49 return logLevelNumber !== null && logLevelNumber !== void 0 ? logLevelNumber : consola.level;
50}
51/**
52 * Set log level to the given level
53 * @param logLevel desired log level
54 */
55function setLogLevel(logLevel) {
56 consola.level = logLevel;
57}
58exports.setLogLevel = setLogLevel;
59let initialized = false;
60/**
61 * Initialize and return the logger
62 * @param [logLevel] The desired logging level
63 */
64function init(logLevel) {
65 if (initialized) {
66 consola.warn('Logger already initialized, ignoring duplicate init.');
67 }
68 setLogLevel(logLevel !== undefined ? logLevel : getLogLevelFromEnv());
69 consola.reporters.push(new SentryBreadcrumbReporter());
70 initialized = true;
71 return consola;
72}
73exports.init = init;
74setLogLevel(getLogLevelFromEnv());
75//# sourceMappingURL=logger.js.map
\No newline at end of file