From 1d7241d5cf847d21d83cd27109e486dda619e34d Mon Sep 17 00:00:00 2001 From: Charlie Butcosk Date: Tue, 4 Feb 2025 16:55:46 -0500 Subject: [PATCH 1/8] Refactor logging concern to use debug instead of loglevel --- packages/11ty/_lib/chalk/index.js | 37 ++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/packages/11ty/_lib/chalk/index.js b/packages/11ty/_lib/chalk/index.js index bba7f3673..8dd40d4cc 100644 --- a/packages/11ty/_lib/chalk/index.js +++ b/packages/11ty/_lib/chalk/index.js @@ -1,8 +1,8 @@ import chalk from 'chalk' -import log from 'loglevel' +import debug from 'debug' /** - * A factory function for custom logging methods using loglevel and chalk + * A factory function for custom logging methods using debug and chalk * * @typedef Loglevel {Number|String} A numeric index or case-insensitive name * [0]: 'trace' @@ -18,13 +18,6 @@ import log from 'loglevel' * @return {Object} Logger with methods `debug`, error`, `info`, `trace` ,`warn` */ export default function (prefix = '', loglevel = 2) { - /** - * Get a new logger object and set logging level (non-persistent) - * @see https://github.com/pimterry/loglevel - */ - const logger = log.getLogger(prefix) - logger.setLevel(loglevel, false) - /** * chalk themes * @see https://www.w3.org/wiki/CSS/Properties/color/keywords @@ -38,11 +31,33 @@ export default function (prefix = '', loglevel = 2) { warn: chalk.inverse.yellow } + /** + * Initialize loggers for each loglevel. + * + * NB: colors are manually disabled to use color-per-loglevel styling + * + * @see https://github.com/debug-js/debug + */ + const loggers = { + debug: debug(styles.debug(`[quire] ${prefix} ${chalk.bold('DEBUG')}\t`)), + error: debug(styles.error(`[quire] ${prefix} ${chalk.bold('ERROR')}\t`)), + info: debug(styles.info(`[quire] ${prefix} ${chalk.bold('INFO')}\t`)), + trace: debug(styles.trace(`[quire] ${prefix} ${chalk.bold('TRACE')}\t`)), + warn: debug(styles.warn(`[quire] ${prefix} ${chalk.bold('WARN')}\t`)), + } + + Object.entries(loggers).forEach(([logLevel,logger]) => { + logger.enabled = true + logger.useColors = false + }) + const logFn = (type) => { - const log = logger[type] + // logger(styles[type]) + + const logger = loggers[type] const style = styles[type] prefix = prefix.padEnd(30, '\u0020') - return (message) => log(style(chalk.bold(`[quire] ${type.toUpperCase()}\t`), `${prefix}`, message)) + return (message) => logger(style(chalk.bold(`${type.toUpperCase()}\t`), message)) } /** From 3d801cb5a5cd284953da9cbeebaefd3592ffc047 Mon Sep 17 00:00:00 2001 From: Charlie Butcosk Date: Tue, 4 Feb 2025 16:57:05 -0500 Subject: [PATCH 2/8] Lint fixes --- packages/11ty/_lib/chalk/index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/11ty/_lib/chalk/index.js b/packages/11ty/_lib/chalk/index.js index 8dd40d4cc..86b066992 100644 --- a/packages/11ty/_lib/chalk/index.js +++ b/packages/11ty/_lib/chalk/index.js @@ -33,9 +33,9 @@ export default function (prefix = '', loglevel = 2) { /** * Initialize loggers for each loglevel. - * + * * NB: colors are manually disabled to use color-per-loglevel styling - * + * * @see https://github.com/debug-js/debug */ const loggers = { @@ -43,12 +43,12 @@ export default function (prefix = '', loglevel = 2) { error: debug(styles.error(`[quire] ${prefix} ${chalk.bold('ERROR')}\t`)), info: debug(styles.info(`[quire] ${prefix} ${chalk.bold('INFO')}\t`)), trace: debug(styles.trace(`[quire] ${prefix} ${chalk.bold('TRACE')}\t`)), - warn: debug(styles.warn(`[quire] ${prefix} ${chalk.bold('WARN')}\t`)), + warn: debug(styles.warn(`[quire] ${prefix} ${chalk.bold('WARN')}\t`)) } - Object.entries(loggers).forEach(([logLevel,logger]) => { + Object.entries(loggers).forEach(([logLevel, logger]) => { logger.enabled = true - logger.useColors = false + logger.useColors = false }) const logFn = (type) => { From 52f49e5f59e2bea9812f9ebbd73aaacc6c1a6c21 Mon Sep 17 00:00:00 2001 From: Charlie Butcosk Date: Tue, 4 Feb 2025 17:02:04 -0500 Subject: [PATCH 3/8] Remove unnecessary `enable`, doubled level message --- packages/11ty/_lib/chalk/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/11ty/_lib/chalk/index.js b/packages/11ty/_lib/chalk/index.js index 86b066992..7558d07c3 100644 --- a/packages/11ty/_lib/chalk/index.js +++ b/packages/11ty/_lib/chalk/index.js @@ -47,7 +47,6 @@ export default function (prefix = '', loglevel = 2) { } Object.entries(loggers).forEach(([logLevel, logger]) => { - logger.enabled = true logger.useColors = false }) @@ -57,7 +56,7 @@ export default function (prefix = '', loglevel = 2) { const logger = loggers[type] const style = styles[type] prefix = prefix.padEnd(30, '\u0020') - return (message) => logger(style(chalk.bold(`${type.toUpperCase()}\t`), message)) + return (message) => logger(style(message)) } /** From c248474e836ba0fbdfc06b5b303658b97da34ef9 Mon Sep 17 00:00:00 2001 From: Charlie Butcosk Date: Tue, 4 Feb 2025 17:20:56 -0500 Subject: [PATCH 4/8] Lil code cleanup and restore prefix pads --- packages/11ty/_lib/chalk/index.js | 5 ++--- packages/11ty/package.json | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/11ty/_lib/chalk/index.js b/packages/11ty/_lib/chalk/index.js index 7558d07c3..aaa89a431 100644 --- a/packages/11ty/_lib/chalk/index.js +++ b/packages/11ty/_lib/chalk/index.js @@ -38,6 +38,8 @@ export default function (prefix = '', loglevel = 2) { * * @see https://github.com/debug-js/debug */ + prefix = prefix.padEnd(30, '\u0020') + const loggers = { debug: debug(styles.debug(`[quire] ${prefix} ${chalk.bold('DEBUG')}\t`)), error: debug(styles.error(`[quire] ${prefix} ${chalk.bold('ERROR')}\t`)), @@ -51,11 +53,8 @@ export default function (prefix = '', loglevel = 2) { }) const logFn = (type) => { - // logger(styles[type]) - const logger = loggers[type] const style = styles[type] - prefix = prefix.padEnd(30, '\u0020') return (message) => logger(style(message)) } diff --git a/packages/11ty/package.json b/packages/11ty/package.json index aab03fac6..1c9923ac7 100644 --- a/packages/11ty/package.json +++ b/packages/11ty/package.json @@ -25,7 +25,7 @@ "main": ".eleventy.js", "scripts": { "benchmark": "cross-env DEBUG=Eleventy:Benchmark* eleventy", - "build": "cross-env ELEVENTY_ENV=production eleventy", + "build": "cross-env ELEVENTY_ENV=production DEBUG=\"\" eleventy", "clean": "del-cli _epub _site public", "debug": "cross-env DEBUG=Eleventy* eleventy --dryrun", "dev": "cross-env ELEVENTY_ENV=development eleventy --serve", From a2924643ef45d73fb3545573260a1b4657d61c8a Mon Sep 17 00:00:00 2001 From: Charlie Butcosk Date: Wed, 5 Feb 2025 14:41:26 -0500 Subject: [PATCH 5/8] Update logger documentation --- packages/11ty/_lib/chalk/README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/11ty/_lib/chalk/README.md b/packages/11ty/_lib/chalk/README.md index 3ee563740..319bff3d9 100644 --- a/packages/11ty/_lib/chalk/README.md +++ b/packages/11ty/_lib/chalk/README.md @@ -1,5 +1,7 @@ ## A façade module for the `chalk` library -A logging concern for Quire/11ty implemented using [loglevel](https://github.com/pimterry/loglevel) and [chalk](https://github.com/chalk/). +A logging concern for Quire/11ty implemented using [debug.js](https://github.com/debug-js/debug) and [chalk](https://github.com/chalk/). -Nota bene: `chalk` v5 is an ESM only library, Eleventy uses v4. For more information see the [chalk v4 documentation](https://github.com/chalk/chalk/tree/v4.1.2). +Log lines are in the format: `[quire] component:subComponent LEVEL ...message...`. + +Log level selection responds to globs on the `DEBUG` environment variable as it does for [11ty]() so `cross-env DEBUG='Eleventy*,*quire*' eleventy` will turn on logging for Eleventy itself and for quire while `cross-env DEBUG='*quire*' eleventy` will emit logs for only quire. \ No newline at end of file From deba3acd180f80318ec45de122ac03e28bba10e6 Mon Sep 17 00:00:00 2001 From: Charlie Butcosk Date: Wed, 5 Feb 2025 14:45:02 -0500 Subject: [PATCH 6/8] Update debug log script to include quire glob --- packages/11ty/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/11ty/package.json b/packages/11ty/package.json index 1c9923ac7..b358843ec 100644 --- a/packages/11ty/package.json +++ b/packages/11ty/package.json @@ -27,7 +27,7 @@ "benchmark": "cross-env DEBUG=Eleventy:Benchmark* eleventy", "build": "cross-env ELEVENTY_ENV=production DEBUG=\"\" eleventy", "clean": "del-cli _epub _site public", - "debug": "cross-env DEBUG=Eleventy* eleventy --dryrun", + "debug": "cross-env DEBUG='Eleventy*,*quire*' eleventy --dryrun", "dev": "cross-env ELEVENTY_ENV=development eleventy --serve", "lint": "eslint .", "lint:debug": "eslint . --debug", From 906f9b590b5791f51512bb3695430a069d0b2924 Mon Sep 17 00:00:00 2001 From: Charlie Butcosk Date: Wed, 5 Feb 2025 16:35:58 -0500 Subject: [PATCH 7/8] Add debug script for quire-only debug --- packages/11ty/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/11ty/package.json b/packages/11ty/package.json index b358843ec..2a67b7348 100644 --- a/packages/11ty/package.json +++ b/packages/11ty/package.json @@ -28,6 +28,7 @@ "build": "cross-env ELEVENTY_ENV=production DEBUG=\"\" eleventy", "clean": "del-cli _epub _site public", "debug": "cross-env DEBUG='Eleventy*,*quire*' eleventy --dryrun", + "debug:quire": "cross-env DEBUG='*quire*' eleventy --dryrun", "dev": "cross-env ELEVENTY_ENV=development eleventy --serve", "lint": "eslint .", "lint:debug": "eslint . --debug", From 9d6d037a8bfc20fb12668b21154faf80e341a726 Mon Sep 17 00:00:00 2001 From: Charlie Butcosk Date: Tue, 11 Feb 2025 17:33:20 -0500 Subject: [PATCH 8/8] Update logline formatting for better globbing --- packages/11ty/_lib/chalk/index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/11ty/_lib/chalk/index.js b/packages/11ty/_lib/chalk/index.js index aaa89a431..f4c127e5d 100644 --- a/packages/11ty/_lib/chalk/index.js +++ b/packages/11ty/_lib/chalk/index.js @@ -41,11 +41,11 @@ export default function (prefix = '', loglevel = 2) { prefix = prefix.padEnd(30, '\u0020') const loggers = { - debug: debug(styles.debug(`[quire] ${prefix} ${chalk.bold('DEBUG')}\t`)), - error: debug(styles.error(`[quire] ${prefix} ${chalk.bold('ERROR')}\t`)), - info: debug(styles.info(`[quire] ${prefix} ${chalk.bold('INFO')}\t`)), - trace: debug(styles.trace(`[quire] ${prefix} ${chalk.bold('TRACE')}\t`)), - warn: debug(styles.warn(`[quire] ${prefix} ${chalk.bold('WARN')}\t`)) + debug: debug(styles.debug(`Quire:${prefix} ${chalk.bold('DEBUG')}\t`)), + error: debug(styles.error(`Quire:${prefix} ${chalk.bold('ERROR')}\t`)), + info: debug(styles.info(`Quire:${prefix} ${chalk.bold('INFO')}\t`)), + trace: debug(styles.trace(`Quire:${prefix} ${chalk.bold('TRACE')}\t`)), + warn: debug(styles.warn(`Quire:${prefix} ${chalk.bold('WARN')}\t`)) } Object.entries(loggers).forEach(([logLevel, logger]) => {