{"_id":"@andrewheberle/ts-slog","_rev":"7-2114c96483bc74d836753b2720cc6b56","name":"@andrewheberle/ts-slog","dist-tags":{"latest":"1.5.0"},"versions":{"1.0.0":{"name":"@andrewheberle/ts-slog","version":"1.0.0","keywords":["logger","logging","typescript"],"author":{"url":"https://github.com/andrewheberle","name":"Andrew Heberle"},"license":"MIT","_id":"@andrewheberle/ts-slog@1.0.0","maintainers":[{"name":"andrewheberle","email":"andrew.heberle@shrewhome.net"}],"homepage":"https://github.com/andrewheberle/ts-slog#readme","bugs":{"url":"https://github.com/andrewheberle/ts-slog/issues"},"dist":{"shasum":"8ae41997a25c6d8ceb41876711e7918b3af37b5a","tarball":"https://registry.npmjs.org/@andrewheberle/ts-slog/-/ts-slog-1.0.0.tgz","fileCount":6,"integrity":"sha512-1rWdS3UkUF3iUV4GKTl9SGecQjeVxXbYzd6BEOoHuze6LRln28p2QIItjxAiHDImwh/VO3fRMLAEYj43oXMAZQ==","signatures":[{"sig":"MEUCIQCSI4YMYDu9u1PUdGpB/OZHMqa+B5aZxIGQcsGUHELxKgIgY/343Uvs6v5ukpLGZnt4JPqHlA+rSOjl01zUkJDsCyY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9013},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"4f6ca6207183664b2ba2c8945d7bdd8cb11b3ec0","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"andrewheberle","email":"andrew.heberle@shrewhome.net"},"_npmVersion":"10.9.3","description":"Simple structured logger for TypeScript","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.10.0"},"_npmOperationalInternal":{"tmp":"tmp/ts-slog_1.0.0_1762493780685_0.825911712089646","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@andrewheberle/ts-slog","version":"1.1.0","keywords":["logger","logging","typescript"],"author":{"url":"https://github.com/andrewheberle","name":"Andrew Heberle"},"license":"MIT","_id":"@andrewheberle/ts-slog@1.1.0","maintainers":[{"name":"andrewheberle","email":"andrew.heberle@shrewhome.net"}],"homepage":"https://github.com/andrewheberle/ts-slog#readme","bugs":{"url":"https://github.com/andrewheberle/ts-slog/issues"},"dist":{"shasum":"5580ef0104d96d4f310708456ba4bd33c251ccd8","tarball":"https://registry.npmjs.org/@andrewheberle/ts-slog/-/ts-slog-1.1.0.tgz","fileCount":10,"integrity":"sha512-XUmRpws5r5svkht72yOs0Jrts8aDF2zpOaQrKB4Yf/Oamn4f/kinqLW/0bbp41mdxyXXkmSpYzBrBr0YBWkC4g==","signatures":[{"sig":"MEUCIQCysjwK/N+VDgJna1Q0ucwgm0aanC0K/3n9Hg4jfmgtMgIgd76T0+rlfWj4xzBtU4oNJqhI4lU6teZ23y9oUwYD69k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20279},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"cc6547a84ddaf2466965605229d61aa892d29bd9","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","release:major":"npm version major && git push && git push --tags && npm publish --access public","release:minor":"npm version minor && git push && git push --tags && npm publish --access public","release:patch":"npm version patch && git push && git push --tags && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"andrewheberle","email":"andrew.heberle@shrewhome.net"},"_npmVersion":"10.9.3","description":"Simple structured logger for TypeScript","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.7","typescript":"^5.9.3","@types/node":"^24.10.0"},"_npmOperationalInternal":{"tmp":"tmp/ts-slog_1.1.0_1762495524914_0.06111818500242472","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@andrewheberle/ts-slog","version":"1.2.0","keywords":["logger","logging","typescript"],"author":{"url":"https://github.com/andrewheberle","name":"Andrew Heberle"},"license":"MIT","_id":"@andrewheberle/ts-slog@1.2.0","maintainers":[{"name":"andrewheberle","email":"andrew.heberle@shrewhome.net"}],"homepage":"https://github.com/andrewheberle/ts-slog#readme","bugs":{"url":"https://github.com/andrewheberle/ts-slog/issues"},"dist":{"shasum":"8a25d76513d26356266a39670f4f7f6eb4dfb15d","tarball":"https://registry.npmjs.org/@andrewheberle/ts-slog/-/ts-slog-1.2.0.tgz","fileCount":11,"integrity":"sha512-+5sYR24pEhP2xRme4soWEbjy420dR0h8ubZ0pWCcNdBGXNQpiVAUQIB1R/pftQRF869ZZYHo0KDND7OAUIsRGg==","signatures":[{"sig":"MEYCIQD/L95KbO4+DVdpYvrVxXhi8JsWSLyNI75mGEWwrxbzKwIhAO7KxsV7MBc1tJZBjETCzfNBUI7Qhb8Wzqut+RLCO8Ew","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31902},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"aeee0901d7c416d28c6b4406eaf434dc2d0d969b","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","release:major":"npm version major && git push && git push --tags && npm publish --access public","release:minor":"npm version minor && git push && git push --tags && npm publish --access public","release:patch":"npm version patch && git push && git push --tags && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"andrewheberle","email":"andrew.heberle@shrewhome.net"},"_npmVersion":"10.9.3","description":"Simple structured logger for TypeScript","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.12","typescript":"^5.9.3","@types/node":"^24.10.0"},"_npmOperationalInternal":{"tmp":"tmp/ts-slog_1.2.0_1763702969413_0.7815365295103778","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@andrewheberle/ts-slog","version":"1.3.0","keywords":["logger","logging","typescript"],"author":{"url":"https://github.com/andrewheberle","name":"Andrew Heberle"},"license":"MIT","_id":"@andrewheberle/ts-slog@1.3.0","maintainers":[{"name":"andrewheberle","email":"andrew.heberle@shrewhome.net"}],"homepage":"https://github.com/andrewheberle/ts-slog#readme","bugs":{"url":"https://github.com/andrewheberle/ts-slog/issues"},"dist":{"shasum":"ceb30ea7ca9539835d848fbd9cb8203272453db8","tarball":"https://registry.npmjs.org/@andrewheberle/ts-slog/-/ts-slog-1.3.0.tgz","fileCount":11,"integrity":"sha512-/Uj3tHhft58zjjyyNwJjRAOGXIDHI1CWkkvd1ReJwzp12D5LB/lMD4Nm7tfqz9fBpyW9mE1+gMlYDd+Q20C0Jg==","signatures":[{"sig":"MEUCIGvJdDe1WfOLDDFTwRmFs0zd153lE5Y4XdPnUJOjfOb1AiEA8huEbK7ilpwtJ8VfhhLd30TsrX6ean2BITVQXU0Dzy4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44497},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"a2f2b50c0a01e6286a65ef0b0ad85e9772e3cbb5","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","release:major":"npm version major && git push && git push --tags && npm publish --access public","release:minor":"npm version minor && git push && git push --tags && npm publish --access public","release:patch":"npm version patch && git push && git push --tags && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"andrewheberle","email":"andrew.heberle@shrewhome.net"},"_npmVersion":"11.11.0","description":"Simple structured logger for TypeScript","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.12","typescript":"^5.9.3","@types/node":"^24.10.0"},"_npmOperationalInternal":{"tmp":"tmp/ts-slog_1.3.0_1775110302186_0.373055746066421","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@andrewheberle/ts-slog","version":"1.4.0","keywords":["logger","logging","typescript"],"author":{"url":"https://github.com/andrewheberle","name":"Andrew Heberle"},"license":"MIT","_id":"@andrewheberle/ts-slog@1.4.0","maintainers":[{"name":"andrewheberle","email":"andrew.heberle@shrewhome.net"}],"homepage":"https://github.com/andrewheberle/ts-slog#readme","bugs":{"url":"https://github.com/andrewheberle/ts-slog/issues"},"dist":{"shasum":"9ba43fee2484a875392ca030ce5d92da21357552","tarball":"https://registry.npmjs.org/@andrewheberle/ts-slog/-/ts-slog-1.4.0.tgz","fileCount":7,"integrity":"sha512-V6PZ3GUhMXIjK9cTbv4Cv1Pt9gNUlGMGPS3mtFS3s8ohjlwwUpVvE9mB8f9mCS/cVgy1UGR0B/Xx9/NpMqmN2A==","signatures":[{"sig":"MEUCIQCnvq0HzRJ2fIzfOGyHgB7npX5iR3haL05SRZuRZ4462QIgJjwJs+Q2gIiFDj96Phnac7WEJh8PTW/RMiCqe6wdyrg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andrewheberle%2fts-slog@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18905},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"f7121b4e4124c986f61d564530299d98f008c8c3","scripts":{"lint":"eslint","test":"vitest run","build":"tsc","release":"release-it","release:ci":"npm run release:ci:patch","test:watch":"vitest","prepublishOnly":"npm run build","release:dryrun":"release-it --dry-run","release:ci:major":"release-it major --ci","release:ci:minor":"release-it minor --ci","release:ci:patch":"release-it patch --ci"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:47ebdc60-b2a6-41d9-9c2d-d5281e016035"}},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore(release): v${version}","requiredBranch":"main","requireCleanWorkingDir":false},"npm":{"publish":true,"skipChecks":true},"hooks":{"after:bump":"npx auto-changelog -p"},"github":{"assets":["sbom.spdx.json"],"release":true,"releaseName":"v${version}","autoGenerate":true}},"repository":{"url":"git+https://github.com/andrewheberle/ts-slog.git","type":"git"},"_npmVersion":"11.16.0","description":"Simple structured logger for TypeScript","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.6.0","vitest":"^4.0.12","globals":"^17.7.0","@eslint/js":"^10.0.1","release-it":"^20.0.1","typescript":"^6.0.3","@types/node":"^24.13.2","auto-changelog":"^2.5.1","typescript-eslint":"^8.62.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-slog_1.4.0_1782972742287_0.730712442057313","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@andrewheberle/ts-slog","version":"1.4.1","keywords":["logger","logging","typescript"],"author":{"url":"https://github.com/andrewheberle","name":"Andrew Heberle"},"license":"MIT","_id":"@andrewheberle/ts-slog@1.4.1","maintainers":[{"name":"andrewheberle","email":"andrew.heberle@shrewhome.net"}],"homepage":"https://github.com/andrewheberle/ts-slog#readme","bugs":{"url":"https://github.com/andrewheberle/ts-slog/issues"},"dist":{"shasum":"ac139eea52ae5fde0b7a56f6069bc5d0288e49e5","tarball":"https://registry.npmjs.org/@andrewheberle/ts-slog/-/ts-slog-1.4.1.tgz","fileCount":7,"integrity":"sha512-0ZfLmNB7ggoEzrTzbhsLozXJJjNVjQDoYzpa+qUQBzGk1bIWVo0U/FuwUK5Uet0Vzd+1sjtseolxZEpUgFP7MQ==","signatures":[{"sig":"MEYCIQDGwPsC8GWqLa+PTtCuCRkEq0ubGQeKGXKpRBIdeGIwyAIhANOeJm4LXs+0t6shoVgb8ddQ0CkT9ti5yPVzbUgj2Tm0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andrewheberle%2fts-slog@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19125},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"31ce48d92d6735332813d5059e8488411fca3865","scripts":{"lint":"eslint","test":"vitest run","build":"tsc","release":"release-it","release:ci":"npm run release:ci:patch","test:watch":"vitest","prepublishOnly":"npm run build","release:dryrun":"release-it --dry-run","release:ci:major":"release-it major --ci","release:ci:minor":"release-it minor --ci","release:ci:patch":"release-it patch --ci"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:47ebdc60-b2a6-41d9-9c2d-d5281e016035"}},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore(release): v${version}","requiredBranch":"main","requireCleanWorkingDir":false},"npm":{"publish":true,"skipChecks":true},"hooks":{"after:bump":"npx auto-changelog -p"},"github":{"assets":["sbom.spdx.json"],"release":true,"releaseName":"v${version}","autoGenerate":true}},"repository":{"url":"git+https://github.com/andrewheberle/ts-slog.git","type":"git"},"_npmVersion":"11.13.0","description":"Simple structured logger for TypeScript","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.6.0","vitest":"^4.0.12","globals":"^17.7.0","@eslint/js":"^10.0.1","release-it":"^20.0.1","typescript":"^6.0.3","@types/node":"^24.13.2","auto-changelog":"^2.5.1","typescript-eslint":"^8.62.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-slog_1.4.1_1782974338477_0.3876013574542667","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@andrewheberle/ts-slog","version":"1.5.0","description":"Simple structured logger for TypeScript","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsc","lint":"eslint","prepublishOnly":"npm run build","release":"release-it","release:ci":"npm run release:ci:patch","release:ci:major":"release-it major --ci","release:ci:minor":"release-it minor --ci","release:ci:patch":"release-it patch --ci","release:dryrun":"release-it --dry-run","test":"vitest run","test:watch":"vitest"},"keywords":["logger","logging","typescript"],"author":{"name":"Andrew Heberle","url":"https://github.com/andrewheberle"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/andrewheberle/ts-slog.git"},"bugs":{"url":"https://github.com/andrewheberle/ts-slog/issues"},"homepage":"https://github.com/andrewheberle/ts-slog#readme","devDependencies":{"@eslint/js":"^10.0.1","@types/node":"^24.13.2","auto-changelog":"^2.5.1","eslint":"^10.6.0","globals":"^17.7.0","release-it":"^20.0.1","typescript":"^6.0.3","typescript-eslint":"^8.62.1","vitest":"^4.0.12"},"publishConfig":{"access":"public"},"release-it":{"git":{"requiredBranch":"main","commitMessage":"chore(release): v${version}","tagName":"v${version}","requireCleanWorkingDir":false},"github":{"assets":["sbom.spdx.json"],"autoGenerate":true,"release":true,"releaseName":"v${version}"},"hooks":{"after:bump":"npx auto-changelog -p"},"npm":{"publish":true,"skipChecks":true}},"gitHead":"df5307a9298bffc8bf9dc105aa96a7a1035db5d5","_id":"@andrewheberle/ts-slog@1.5.0","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-xLMZlazCNsEWiMidt0rW/CphapvVLIE3HijYwPJ5ZAoyAUAyWueo6+n2C75OoIZNVtiC8TbwF52OFkDNIFNJDA==","shasum":"26d51d39e2e140a5f0ec313131923b68dbb93cc8","tarball":"https://registry.npmjs.org/@andrewheberle/ts-slog/-/ts-slog-1.5.0.tgz","fileCount":7,"unpackedSize":19859,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andrewheberle%2fts-slog@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIH8U/pkLB9adgvMh0KbZYUjB+29Pt4MpOuBP9AdYoYscAiEAuCYx8O8P+UwvuqlTHZvazWTc24i9dk18VgsvWWYLA5k="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:47ebdc60-b2a6-41d9-9c2d-d5281e016035"}},"directories":{},"maintainers":[{"name":"andrewheberle","email":"andrew.heberle@shrewhome.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ts-slog_1.5.0_1789529017925_0.8481318209815076"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-07T05:36:20.527Z","modified":"2026-09-16T03:23:38.341Z","1.0.0":"2025-11-07T05:36:20.938Z","1.1.0":"2025-11-07T06:05:25.122Z","1.2.0":"2025-11-21T05:29:29.597Z","1.3.0":"2026-04-02T06:11:42.319Z","1.4.0":"2026-07-02T06:12:22.434Z","1.4.1":"2026-07-02T06:38:58.595Z","1.5.0":"2026-09-16T03:23:38.061Z"},"bugs":{"url":"https://github.com/andrewheberle/ts-slog/issues"},"author":{"name":"Andrew Heberle","url":"https://github.com/andrewheberle"},"license":"MIT","homepage":"https://github.com/andrewheberle/ts-slog#readme","keywords":["logger","logging","typescript"],"repository":{"type":"git","url":"git+https://github.com/andrewheberle/ts-slog.git"},"description":"Simple structured logger for TypeScript","maintainers":[{"name":"andrewheberle","email":"andrew.heberle@shrewhome.net"}],"readme":"# @andrewheberle/ts-slog\n\nA simple structured logger for TypeScript applications.\n\n## Installation\n```bash\nnpm install @andrewheberle/ts-slog\n```\n\n## Usage\n\n### Basic Example\n```typescript\nimport { Logger } from '@andrewheberle/ts-slog'\n\nconst logger = new Logger()\n\nlogger.info(\"Application started\")\nlogger.debug(\"Debug information\", \"userId\", 123, \"action\", \"login\")\nlogger.warn(\"Warning message\", \"retries\", 3)\nlogger.error(\"An error occurred\", \"errorCode\", 500)\n```\n\n### Log Levels\n\nThe logger supports four log levels:\n\n- `Debug` (0) - Detailed debugging information\n- `Info` (1) - General informational messages (default)\n- `Warning` (2) - Warning messages\n- `Error` (3) - Error messages\n\n### Configuration\n\nConfigure the minimum log level when creating a logger instance:\n```ts\nimport { Logger, LogLevel } from \"@andrewheberle/ts-slog\"\n\n// Only log warnings and errors\nconst logger = new Logger({ minLevel: LogLevel.Warning })\n\nlogger.debug(\"This won't be logged\")\nlogger.info(\"This won't be logged either\")\nlogger.warn(\"This will be logged\")\nlogger.error(\"This will be logged too\")\n```\n\n### Adding Context\n\nAdd key-value pairs to log entries by passing additional arguments:\n\n```ts\nimport { Logger } from \"@andrewheberle/ts-slog\"\n\nconst logger = new Logger()\n\nlogger.info(\n    \"User logged in\",\n    \"userId\", 123,\n    \"username\", \"john.doe\",\n    \"ip\", \"192.168.1.1\"\n)\n\n// Output:\n// {\n//   level: 'info',\n//   message: 'User logged in',\n//   userId: 123,\n//   username: 'john.doe',\n//   ip: '192.168.1.1'\n// }\n```\n\n### Groups\n\nA group of K/V pairs may be grouped as follows:\n\n```ts\nimport { group, Logger } from \"@andrewheberle/ts-slog\"\n\nconst logger = new Logger()\n\nlogger.info(\n    \"User logged in\",\n    ...group(\"user\", \"id\", 123, \"username\", \"john.doe\"),\n    \"ip\", \"192.168.1.1\"\n)\n\n// Output:\n// {\n//   level: 'info',\n//   message: 'User logged in',\n//   user.id: 123,\n//   user.username: 'john.doe',\n//   ip: '192.168.1.1'\n// }\n```\n\n### Text Output\n\nBy default, the default `logHandler` passes the log object straight to\n`console.log`. Use the built-in `TextHandler` instead to format entries\nas a single line of text:\n\n```ts\nimport { Logger, TextHandler } from \"@andrewheberle/ts-slog\"\n\nconst logger = new Logger({ logHandler: TextHandler })\n\nlogger.info(\"User logged in\", \"userId\", 123, \"action\", \"login\")\n\n// Output:\n// INFO User logged in userId=123 action=login\n```\n\nString values containing whitespace are quoted:\n\n```ts\nlogger.info(\"User logged in\", \"name\", \"John Doe\", \"userId\", 123)\n\n// Output:\n// INFO: User logged in name=\"John Doe\" userId=123\n```\n\n## API\n\n### `new Logger(settings?)`\n\nCreates a new logger instance.\n\n**Parameters:**\n- `settings` (optional): Configuration object\n  - `logHandler`: Handler to output logs (default: `console.log`)\n  - `minLevel`: Minimum log level (default: `LogLevel.Info`)\n\n### Methods\n\n- `debug(message: string, ...args: unknown[]): void` - Log at \"debug\" level\n- `info(message: string, ...args: unknown[]): void` - Log at \"info\" level\n- `warn(message: string, ...args: unknown[]): void` - Log at \"warning\" level\n- `error(message: string, ...args: unknown[]): void` - Log at \"error\" level\n- `with(...args: unknown[]): Logger` - Returns a new `Logger` with additional K/V pairs added\n\nAll methods accept a message string followed by optional key-value pairs.\n\n### Functions\n\n- `group(key: string, ...args: unknown[]): unknown[]` - Create K/V pairs based on key prefix\n- `TextHandler(output: Record<string, unknown>): void` - A `logHandler` that formats log entries as text (`level message key=value ...`) and writes them via `console.log`\n\n## License\n\nMIT\n","readmeFilename":"README.md"}