diff --git a/package-lock.json b/package-lock.json index ecd19c5..9774909 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@rocicorp/logger", - "version": "2.2.0", + "version": "3.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@rocicorp/logger", - "version": "2.2.0", + "version": "3.0.0", "license": "Apache-2.0", "devDependencies": { "@types/chai": "^4.3.0", diff --git a/package.json b/package.json index 48670c6..43fe7e4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@rocicorp/logger", "description": "Logging utilities", - "version": "2.2.0", + "version": "3.0.0", "repository": "github:rocicorp/logger", "license": "Apache-2.0", "engines": { diff --git a/src/logger.test.ts b/src/logger.test.ts index dbffc4d..92dfb24 100644 --- a/src/logger.test.ts +++ b/src/logger.test.ts @@ -4,7 +4,7 @@ import { FormatLogger, LogContext, LogSink, - newNodeLogContext, + NodeConsoleLogger, TeeLogSink, type LogLevel, } from './logger.js'; @@ -100,14 +100,14 @@ test('FormatLogger', () => { } }); -test('nodeLogContext', () => { +test('NodeConsoleLogger', () => { const mockDebug = mockConsoleMethod('debug'); const mockInfo = mockConsoleMethod('info'); const mockError = mockConsoleMethod('error'); { sinon.reset(); - const l = newNodeLogContext('debug'); + const l = new NodeConsoleLogger('debug'); expect(l.debug).to.be.instanceOf(Function); expect(l.info).to.be.instanceOf(Function); expect(l.error).to.be.instanceOf(Function); @@ -188,7 +188,7 @@ class TestLogSinkWithFlush extends TestLogSink { } } -test("TeeLogSink", () => { +test('TeeLogSink', () => { const l1 = new TestLogSink(); const l2 = new TestLogSink(); const tl = new TeeLogSink([l1, l2]); @@ -196,34 +196,34 @@ test("TeeLogSink", () => { expect(l1.messages).to.deep.equal([]); expect(l2.messages).to.deep.equal([]); - tl.log("info", 1, 2); - expect(l1.messages).to.deep.equal([["info", 1, 2]]); - expect(l2.messages).to.deep.equal([["info", 1, 2]]); + tl.log('info', 1, 2); + expect(l1.messages).to.deep.equal([['info', 1, 2]]); + expect(l2.messages).to.deep.equal([['info', 1, 2]]); - tl.log("debug", 3); + tl.log('debug', 3); expect(l1.messages).to.deep.equal([ - ["info", 1, 2], - ["debug", 3], + ['info', 1, 2], + ['debug', 3], ]); expect(l2.messages).to.deep.equal([ - ["info", 1, 2], - ["debug", 3], + ['info', 1, 2], + ['debug', 3], ]); - tl.log("error", 4, 5, 6); + tl.log('error', 4, 5, 6); expect(l1.messages).to.deep.equal([ - ["info", 1, 2], - ["debug", 3], - ["error", 4, 5, 6], + ['info', 1, 2], + ['debug', 3], + ['error', 4, 5, 6], ]); expect(l2.messages).to.deep.equal([ - ["info", 1, 2], - ["debug", 3], - ["error", 4, 5, 6], + ['info', 1, 2], + ['debug', 3], + ['error', 4, 5, 6], ]); }); -test("tee logger flush", async () => { +test('tee logger flush', async () => { const l1 = new TestLogSinkWithFlush(); const l2 = new TestLogSink(); const l3 = new TestLogSinkWithFlush(); diff --git a/src/logger.ts b/src/logger.ts index 4096932..cbea6af 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -40,7 +40,7 @@ export class TeeLogSink implements LogSink { } async flush(): Promise { - await Promise.all(this._sinks.map((logger) => logger.flush?.())); + await Promise.all(this._sinks.map(logger => logger.flush?.())); } } @@ -104,16 +104,18 @@ export class FormatLogger implements LogSink { } /** - * Instantiates a new console LogContext logger appropriate for the node - * environment. + * Create a logger that will log to the console with a prefix, + * appropriate for the node environment or terminal output. */ -export function newNodeLogContext(level: LogLevel): LogContext { - const fl = new FormatLogger( - (lvl: LogLevel, ...args: unknown[]): unknown[] => { - return [logLevelPrefix[lvl], ...args]; - }, - ); - return new LogContext(level, fl); +export class NodeConsoleLogger extends OptionalLoggerImpl { + constructor(level: LogLevel) { + const fl = new FormatLogger( + (lvl: LogLevel, ...args: unknown[]): unknown[] => { + return [logLevelPrefix[lvl], ...args]; + }, + ); + super(fl, level); + } } /**