/* * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors * * SPDX-License-Identifier: EPL-2.0 */ import styles, { type CSPair } from 'ansi-styles'; import log from 'loglevel'; import prefix from 'loglevel-plugin-prefix'; const colors: Partial> = { TRACE: styles.magenta, DEBUG: styles.cyan, INFO: styles.blue, WARN: styles.yellow, ERROR: styles.red, }; prefix.reg(log); if (import.meta.env.DEV) { log.setLevel(log.levels.DEBUG); } else { log.setLevel(log.levels.WARN); } if ('chrome' in window) { // Only Chromium supports console ANSI escape sequences. prefix.apply(log, { format(level, name, timestamp) { const formattedTimestamp = `${styles.gray.open}[${timestamp.toString()}]${ styles.gray.close }`; const levelColor = colors[level.toUpperCase()] || styles.red; const formattedLevel = `${levelColor.open}${level}${levelColor.close}`; const formattedName = `${styles.green.open}(${name || 'root'})${ styles.green.close }`; return `${formattedTimestamp} ${formattedLevel} ${formattedName}`; }, }); } else { prefix.apply(log, { template: '[%t] %l (%n)', }); } const appLogger = log.getLogger(import.meta.env.VITE_PACKAGE_NAME); appLogger.info( 'Version:', import.meta.env.VITE_PACKAGE_NAME, import.meta.env.VITE_PACKAGE_VERSION, ); appLogger.info('Debug mode:', import.meta.env.DEV); export default function getLogger(name: string | symbol): log.Logger { return log.getLogger( `${import.meta.env.VITE_PACKAGE_NAME}.${name.toString()}`, ); }