{"_id":"@accelint/logger","_rev":"14-c744437cf6452d1699d706296c31a72a","name":"@accelint/logger","dist-tags":{"latest":"1.1.0"},"versions":{"0.1.0":{"name":"@accelint/logger","version":"0.1.0","author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/logger@0.1.0","maintainers":[{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"}],"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"dist":{"shasum":"bf347eb33181daa9d80efaba9a0976c956c0a4e3","tarball":"https://registry.npmjs.org/@accelint/logger/-/logger-0.1.0.tgz","fileCount":16,"integrity":"sha512-ym16LTOnC7Bq/TFm/atk/JOKDDrZ0MEiloN5j4q6uZJSvuDV/LcImpz5uqkLC8tbYI9c4PCH1PtK8QhApGr8yw==","signatures":[{"sig":"MEUCIBKfqYZZnKD0/VoAewBjmBHpo3p0pT7mDd4id1mVq04zAiEArY7YSCPBN7X8sFs4niYqJUGYGQMSwSC85xDnFUULTjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29020},"type":"module","_from":"file:accelint-logger-0.1.0.tgz","types":"./dist/index.d.ts","$schema":"https://json.schemastore.org/package","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"default":"./dist/index.js"},"./*":{"import":{"types":"./dist/*/index.d.ts","default":"./dist/*/index.js"},"default":"./dist/*/index.js"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsup","index":"pnpm zx ../../scripts/indexer.mjs packages/logger","test:watch":"pnpm vitest --dir=src --watch"},"_npmUser":{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},"_resolved":"/tmp/4a99fb6586c12b9341e42ff5ca281e6a/accelint-logger-0.1.0.tgz","_integrity":"sha512-ym16LTOnC7Bq/TFm/atk/JOKDDrZ0MEiloN5j4q6uZJSvuDV/LcImpz5uqkLC8tbYI9c4PCH1PtK8QhApGr8yw==","repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"_npmVersion":"10.9.3","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"callsites":"^4.2.0","typescript":"^5.8.3","serialize-error":"^12.0.0","@loglayer/plugin":"^2.1.1","@loglayer/transport":"^2.2.1","@loglayer/transport-simple-pretty-terminal":"^2.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.0","vitest":"2.1.3","loglayer":"^6.6.0","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.0","@accelint/vitest-config":"0.1.3","@testing-library/jest-dom":"^6.6.4","esbuild-fix-imports-plugin":"1.0.21","@accelint/typescript-config":"0.1.2"},"peerDependencies":{"loglayer":"^6.6.0"},"_npmOperationalInternal":{"tmp":"tmp/logger_0.1.0_1758294622859_0.45978209533397685","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@accelint/logger","version":"0.1.1","keywords":["dev-tk","tooling"],"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/logger@0.1.1","maintainers":[{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"isaac.kehle-hypergiant","email":"isaac.kehle@hypergiant.com"}],"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"dist":{"shasum":"62ab601a12403382da595ce99787c7727668f7f3","tarball":"https://registry.npmjs.org/@accelint/logger/-/logger-0.1.1.tgz","fileCount":18,"integrity":"sha512-vBJW/I7pJ6faSGnnhuympWkJbuyO3qoKHwIH18fc3545SPrPfmKzEISeLtVPrDGQ3an99/MyZRm9mYk72CkBKg==","signatures":[{"sig":"MEQCIBlLVL5Negbt9SZ7/DpqLEeD8cMm6L0MPoDoIdC4dr4GAiAMP0ejBjzws+/wl19Oi0e7slbq5nEnwACwm+9EYLtE8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31050},"type":"module","_from":"file:accelint-logger-0.1.1.tgz","owner":"default/pathfinder","title":"Accelint Logger","types":"./dist/index.d.ts","$schema":"https://json.schemastore.org/package","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"default":"./dist/index.js"},"./*":{"import":{"types":"./dist/*/index.d.ts","default":"./dist/*/index.js"},"default":"./dist/*/index.js"}},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsup","index":"pnpm zx ../../scripts/indexer.mjs packages/logger","test:watch":"pnpm vitest --dir=src --watch","constellation-tracker":"constellation-tracker"},"subPath":"packages/logger","_npmUser":{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},"_resolved":"/tmp/aad7866ec7694df97089b6bac5e5ba1e/accelint-logger-0.1.1.tgz","_integrity":"sha512-vBJW/I7pJ6faSGnnhuympWkJbuyO3qoKHwIH18fc3545SPrPfmKzEISeLtVPrDGQ3an99/MyZRm9mYk72CkBKg==","repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"_npmVersion":"10.9.3","description":"A flexible and extensible logging utility with callsite tracking and environment-aware capabilities.","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"callsites":"^4.2.0","typescript":"^5.8.3","serialize-error":"^12.0.0","@loglayer/plugin":"^2.1.1","@loglayer/transport":"^2.2.1","@loglayer/transport-simple-pretty-terminal":"^2.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.0","vitest":"2.1.3","loglayer":"^6.6.0","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.0","@accelint/vitest-config":"0.1.4","@testing-library/jest-dom":"^6.6.4","esbuild-fix-imports-plugin":"1.0.21","@accelint/typescript-config":"0.1.3","@accelint/constellation-tracker":"1.0.0"},"peerDependencies":{"loglayer":"^6.6.0"},"_npmOperationalInternal":{"tmp":"tmp/logger_0.1.1_1760140535716_0.5634751831055811","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@accelint/logger","version":"0.1.2","keywords":["dev-tk","tooling"],"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/logger@0.1.2","maintainers":[{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"isaac.kehle-hypergiant","email":"isaac.kehle@hypergiant.com"}],"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"dist":{"shasum":"76b94339a807d27432318489f806929b00608010","tarball":"https://registry.npmjs.org/@accelint/logger/-/logger-0.1.2.tgz","fileCount":18,"integrity":"sha512-v6wkI1CduGPEdwTEGpCz8Bg7V+c5J0vjYmwLTPY0IqkIhLhgCxInI9paamSpiHKOh7lMY3QTKHr/GzWS1kOYyw==","signatures":[{"sig":"MEUCIQCHT/brbg9coCusr4yjFX75k0K6sGTkxJnZtDFNedegCQIgLAJywtBkpd8pDWtUsc/ZHecK+2nqWPMR0Qy4lREu2FM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31368},"type":"module","_from":"file:accelint-logger-0.1.2.tgz","owner":"default/pathfinder","title":"Accelint Logger","types":"./dist/index.d.ts","$schema":"https://json.schemastore.org/package","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"default":"./dist/index.js"},"./*":{"import":{"types":"./dist/*/index.d.ts","default":"./dist/*/index.js"},"default":"./dist/*/index.js"}},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsup","index":"pnpm zx ../../scripts/indexer.mjs packages/logger","test:watch":"pnpm vitest --dir=src --watch","constellation-tracker":"constellation-tracker"},"subPath":"packages/logger","_npmUser":{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},"_resolved":"/tmp/8aa8dcce919c82c92477aad8f012f9c5/accelint-logger-0.1.2.tgz","_integrity":"sha512-v6wkI1CduGPEdwTEGpCz8Bg7V+c5J0vjYmwLTPY0IqkIhLhgCxInI9paamSpiHKOh7lMY3QTKHr/GzWS1kOYyw==","repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"_npmVersion":"10.9.3","description":"A flexible and extensible logging utility with callsite tracking and environment-aware capabilities.","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"callsites":"^4.2.0","serialize-error":"^12.0.0","@loglayer/plugin":"^2.1.1","@loglayer/transport":"^2.2.1","@loglayer/transport-simple-pretty-terminal":"^2.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.0","vitest":"^2.1.9","loglayer":"^6.6.0","typescript":"5.8.3","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.0","@accelint/vitest-config":"0.1.5","@testing-library/jest-dom":"^6.6.4","esbuild-fix-imports-plugin":"^1.0.23","@accelint/typescript-config":"0.1.4","@accelint/constellation-tracker":"1.0.1"},"peerDependencies":{"loglayer":"^6.6.0"},"_npmOperationalInternal":{"tmp":"tmp/logger_0.1.2_1761862906714_0.8404801787323681","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@accelint/logger","version":"0.1.3","keywords":["dev-tk","tooling"],"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/logger@0.1.3","maintainers":[{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"isaac.kehle-hypergiant","email":"isaac.kehle@hypergiant.com"}],"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"dist":{"shasum":"410ace427e495612413b5421a699478ea5b82142","tarball":"https://registry.npmjs.org/@accelint/logger/-/logger-0.1.3.tgz","fileCount":16,"integrity":"sha512-F6+VcTqCHKqdocwg3mitJMxGgdTwWp6VHpvzT+bmltUwQ/L1E3Kkp1zTCaGRf0INv8eFkD4C0QdJ/Lo1/YDWEQ==","signatures":[{"sig":"MEQCIFI+dGSsHIlaJ9d0P1uwULguW2MOyqSkTcnOMbl5YnFTAiBQJrBQIibT4HYdEFdmKC5HVuUBwcAgZg/XoiGR1OZinw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33903},"main":"./dist/index.js","type":"module","_from":"file:accelint-logger-0.1.3.tgz","owner":"default/pathfinder","title":"Accelint Logger","types":"./dist/index.d.ts","module":"./dist/index.js","$schema":"https://json.schemastore.org/package","engines":{"node":">=22","pnpm":">=10"},"exports":{".":"./dist/index.js","./default":"./dist/default/index.js","./package.json":"./package.json","./plugins/callsite":"./dist/plugins/callsite.js","./plugins/environment":"./dist/plugins/environment.js"},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsdown","index":"pnpm zx ../../scripts/indexer.mjs packages/logger","test:watch":"pnpm vitest --dir=src --watch","constellation-tracker":"constellation-tracker"},"subPath":"packages/logger","_npmUser":{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},"_resolved":"/tmp/32efed706e6f7ed9adf7e60aa84d69f8/accelint-logger-0.1.3.tgz","_integrity":"sha512-F6+VcTqCHKqdocwg3mitJMxGgdTwWp6VHpvzT+bmltUwQ/L1E3Kkp1zTCaGRf0INv8eFkD4C0QdJ/Lo1/YDWEQ==","repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"_npmVersion":"10.9.4","description":"A flexible and extensible logging utility with callsite tracking and environment-aware capabilities.","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{"callsites":"^4.2.0","serialize-error":"^12.0.0","@loglayer/plugin":"^2.2.1","@loglayer/transport":"^2.2.1","@loglayer/transport-simple-pretty-terminal":"^2.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.17.2","vitest":"^4.0.8","loglayer":"^6.10.0","typescript":"5.8.3","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.0","@accelint/vitest-config":"0.1.5","@testing-library/jest-dom":"^6.6.4","@accelint/typescript-config":"0.1.4","@accelint/constellation-tracker":"1.0.1"},"peerDependencies":{"loglayer":"^6.10.0"},"_npmOperationalInternal":{"tmp":"tmp/logger_0.1.3_1765564495208_0.3853857220699346","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@accelint/logger","version":"0.1.4","keywords":["dev-tk","tooling"],"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/logger@0.1.4","maintainers":[{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"isaac.kehle-hypergiant","email":"isaac.kehle@hypergiant.com"}],"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"dist":{"shasum":"00d200a73c1130a79e99d2eeb0a04797cbc158e9","tarball":"https://registry.npmjs.org/@accelint/logger/-/logger-0.1.4.tgz","fileCount":16,"integrity":"sha512-P84FlCOkzTj1HuM9xNvpzk3C6YIwsl7h1g429G6LW2tjk6fbeK6jxIonQveeuXeVs5OvcVvtufDejdPqQtfFSw==","signatures":[{"sig":"MEYCIQDOdRSbM9EDNn/V4swqoa4v/ZbHIlgULisMHVqmKF34XAIhAJqNGVOU1hoq19yPDay0QEEo1Owkmop/Cn6/LbG1q/xf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34080},"main":"./dist/index.js","type":"module","_from":"file:accelint-logger-0.1.4.tgz","owner":"default/pathfinder","title":"Accelint Logger","types":"./dist/index.d.ts","module":"./dist/index.js","$schema":"https://json.schemastore.org/package","engines":{"node":">=22","pnpm":">=10"},"exports":{".":"./dist/index.js","./default":"./dist/default/index.js","./package.json":"./package.json","./plugins/callsite":"./dist/plugins/callsite.js","./plugins/environment":"./dist/plugins/environment.js"},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint . --verbose","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsdown","index":"pnpm zx ../../scripts/indexer.mjs packages/logger","format":"pnpm biome format . --write --verbose","license":"pnpm zx ../../scripts/license.mjs","test:watch":"pnpm vitest --dir=src --watch","format:check":"pnpm biome format . --verbose","constellation-tracker":"pnpm exec constellation-tracker"},"subPath":"packages/logger","_npmUser":{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},"_resolved":"/tmp/6dd3100a92a68093294208b6bdef33ed/accelint-logger-0.1.4.tgz","_integrity":"sha512-P84FlCOkzTj1HuM9xNvpzk3C6YIwsl7h1g429G6LW2tjk6fbeK6jxIonQveeuXeVs5OvcVvtufDejdPqQtfFSw==","repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"_npmVersion":"11.6.2","description":"A flexible and extensible logging utility with callsite tracking and environment-aware capabilities.","directories":{},"sideEffects":false,"_nodeVersion":"24.12.0","dependencies":{"callsites":"^4.2.0","serialize-error":"^12.0.0","@loglayer/plugin":"^2.1.6","@loglayer/transport":"^2.3.4","@loglayer/transport-simple-pretty-terminal":"^2.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.18.0","vitest":"^4.0.15","loglayer":"^6.10.0","typescript":"^5.9.3","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.0","@accelint/vitest-config":"0.1.6","@testing-library/jest-dom":"^6.9.1","@accelint/typescript-config":"0.1.4"},"peerDependencies":{"loglayer":"^6.10.0"},"_npmOperationalInternal":{"tmp":"tmp/logger_0.1.4_1766092880278_0.49400030368812153","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@accelint/logger","version":"0.1.5","keywords":["dev-tk","tooling"],"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/logger@0.1.5","maintainers":[{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"jacob.foster.hg","email":"jacob.foster@hypergiant.com"},{"name":"isaac.kehle-hypergiant","email":"isaac.kehle@hypergiant.com"}],"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"dist":{"shasum":"ba376814f6b48751d4cfe575a5e7b3187578560d","tarball":"https://registry.npmjs.org/@accelint/logger/-/logger-0.1.5.tgz","fileCount":22,"integrity":"sha512-Ah+qWXiibwVzs7fz5as0KdOA9FRGogKsdNr5LjjOy4vlVdLwuAx5PXRoBmOjZzUyOe4m3ElBsgRiSbYPqwnDNQ==","signatures":[{"sig":"MEUCIQDR5LdksfIz96hAqqN3gQiHBlSFNK+vkIk868eWNa9SXgIgaM7F0ItVpiesQwOlOYZ3eYzbU7x2X4pUKnBN2jYAeao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55312},"main":"./dist/index.js","type":"module","_from":"file:accelint-logger-0.1.5.tgz","owner":"default/pathfinder","title":"Accelint Logger","types":"./dist/index.d.ts","module":"./dist/index.js","$schema":"https://json.schemastore.org/package","engines":{"node":">=22","pnpm":">=10"},"exports":{".":"./dist/index.js","./default":"./dist/default/index.js","./definitions":"./dist/definitions.js","./package.json":"./package.json","./plugins/callsite":"./dist/plugins/callsite.js","./default/bootstrap":"./dist/default/bootstrap.js","./plugins/environment":"./dist/plugins/environment.js"},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint . --verbose","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsdown","index":"pnpm zx ../../scripts/indexer.mjs packages/logger","format":"pnpm biome format . --write --verbose","license":"pnpm zx ../../scripts/license.mjs","test:watch":"pnpm vitest --dir=src --watch","format:check":"pnpm biome format . --verbose","lint:package":"pnpm publint","constellation-tracker":"pnpm exec constellation-tracker"},"subPath":"packages/logger","_npmUser":{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},"_resolved":"/tmp/68edb3a93a3550fd44800a91ace5d1a6/accelint-logger-0.1.5.tgz","_integrity":"sha512-Ah+qWXiibwVzs7fz5as0KdOA9FRGogKsdNr5LjjOy4vlVdLwuAx5PXRoBmOjZzUyOe4m3ElBsgRiSbYPqwnDNQ==","repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"_npmVersion":"11.6.2","description":"A flexible and extensible logging utility with callsite tracking and environment-aware capabilities.","directories":{},"sideEffects":false,"_nodeVersion":"24.12.0","dependencies":{"callsites":"^4.2.0","serialize-error":"^12.0.0","@loglayer/plugin":"^2.2.7","@loglayer/shared":"^3.3.0","@loglayer/transport":"^2.3.13","@loglayer/transport-simple-pretty-terminal":"^2.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.18.0","vitest":"^4.0.15","loglayer":"^6.10.0","typescript":"^5.9.3","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.0","@accelint/vitest-config":"0.1.6","@testing-library/jest-dom":"^6.9.1","@accelint/typescript-config":"0.1.4"},"peerDependencies":{"loglayer":"^6.10.0"},"_npmOperationalInternal":{"tmp":"tmp/logger_0.1.5_1768922151120_0.15948955727968595","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@accelint/logger","version":"1.0.0","keywords":["dev-tk","tooling"],"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/logger@1.0.0","maintainers":[{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"colin.leahy","email":"colin.leahy@hypergiant.com"},{"name":"jacob.foster.hg","email":"jacob.foster@hypergiant.com"},{"name":"isaac.kehle-hypergiant","email":"isaac.kehle@hypergiant.com"}],"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"dist":{"shasum":"b91794bdc5f55d43efa649bb6823e620910f6728","tarball":"https://registry.npmjs.org/@accelint/logger/-/logger-1.0.0.tgz","fileCount":22,"integrity":"sha512-uYndz+a2dCqHe2xl9XKkyzU8DyeRclJ2E9rWii57nv3/tKKk6V0pZRzArDpmpw9w2lEq/2ySNSwW6s2Ylk7JGQ==","signatures":[{"sig":"MEUCIQCtDQ/6PTjvMA9dSZdrmT3Y7l+ui/pLdU3tyCSpQrHaawIgMyvHehqbMTdJoGqmjoOfyh+OoE3Uc7Uc83eyYb3ykDA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75867},"main":"./dist/index.js","type":"module","_from":"file:accelint-logger-1.0.0.tgz","owner":"default/pathfinder","title":"Accelint Logger","types":"./dist/index.d.ts","module":"./dist/index.js","$schema":"https://json.schemastore.org/package","engines":{"node":">=22","pnpm":">=10"},"exports":{".":"./dist/index.js","./default":"./dist/default/index.js","./definitions":"./dist/definitions.js","./package.json":"./package.json","./plugins/callsite":"./dist/plugins/callsite.js","./default/bootstrap":"./dist/default/bootstrap.js","./plugins/environment":"./dist/plugins/environment.js"},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint . --verbose","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsdown","index":"pnpm zx ../../scripts/indexer.mjs packages/logger","format":"pnpm biome format . --write --verbose","license":"pnpm zx ../../scripts/license.mjs","test:watch":"pnpm vitest --dir=src --watch","format:check":"pnpm biome format . --verbose","lint:package":"pnpm publint","constellation-tracker":"pnpm exec constellation-tracker"},"subPath":"packages/logger","_npmUser":{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},"_resolved":"/tmp/2b2911e93722a949677a7d04e0221246/accelint-logger-1.0.0.tgz","_integrity":"sha512-uYndz+a2dCqHe2xl9XKkyzU8DyeRclJ2E9rWii57nv3/tKKk6V0pZRzArDpmpw9w2lEq/2ySNSwW6s2Ylk7JGQ==","repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"_npmVersion":"11.6.2","description":"A flexible and extensible logging utility with callsite tracking and environment-aware capabilities.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"callsites":"^4.2.0","serialize-error":"^13.0.1","@loglayer/plugin":"^3.0.2","@loglayer/shared":"^4.1.0","@loglayer/transport":"^3.0.2","@loglayer/log-level-manager-one-way":"^2.0.2","@loglayer/transport-simple-pretty-terminal":"^3.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.18.0","vitest":"^4.0.15","loglayer":"^9.1.0","typescript":"^5.9.3","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.0","@accelint/vitest-config":"0.1.6","@testing-library/jest-dom":"^6.9.1","@accelint/typescript-config":"0.1.4"},"peerDependencies":{"loglayer":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/logger_1.0.0_1771794330196_0.9264714777080094","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@accelint/logger","version":"1.0.1","keywords":["dev-tk","tooling"],"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/logger@1.0.1","maintainers":[{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"colin.leahy","email":"colin.leahy@hypergiant.com"},{"name":"jacob.foster.hg","email":"jacob.foster@hypergiant.com"},{"name":"isaac.kehle-hypergiant","email":"isaac.kehle@hypergiant.com"}],"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"dist":{"shasum":"c065c4d5f04cf747f7b8b687fbf1a8e7d4ce1eef","tarball":"https://registry.npmjs.org/@accelint/logger/-/logger-1.0.1.tgz","fileCount":22,"integrity":"sha512-v2bNIc3l5hX7+ORy4nVmUzw8qY2tlEAB0UPAPHZUGW/ZJp7gEE09jlpMXBduhCLD3Kc5XvlsS8nJTmHQgaRc7w==","signatures":[{"sig":"MEYCIQDQbOem1nzVeW1lR71/CgSfXszEWP4osNNG40Qrt+8pGgIhAMqLldijTxEIwlqk1F7u91Uak1wVWWwMiJ2WOvp0i7mB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76416},"main":"./dist/index.js","type":"module","_from":"file:accelint-logger-1.0.1.tgz","owner":"default/pathfinder","title":"Accelint Logger","types":"./dist/index.d.ts","module":"./dist/index.js","$schema":"https://json.schemastore.org/package","engines":{"node":">=22","pnpm":">=10"},"exports":{".":"./dist/index.js","./default":"./dist/default/index.js","./definitions":"./dist/definitions.js","./package.json":"./package.json","./plugins/callsite":"./dist/plugins/callsite.js","./default/bootstrap":"./dist/default/bootstrap.js","./plugins/environment":"./dist/plugins/environment.js"},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint . --verbose","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsdown","index":"pnpm zx ../../scripts/indexer.mjs packages/logger","format":"pnpm biome format . --write --verbose","license":"pnpm zx ../../scripts/license.mjs","test:watch":"pnpm vitest --dir=src --watch","format:check":"pnpm biome format . --verbose","lint:package":"pnpm publint","constellation-tracker":"pnpm exec constellation-tracker"},"subPath":"packages/logger","_npmUser":{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},"_resolved":"/tmp/3bcdcb3d5d9c0c790dad478302a1dac1/accelint-logger-1.0.1.tgz","_integrity":"sha512-v2bNIc3l5hX7+ORy4nVmUzw8qY2tlEAB0UPAPHZUGW/ZJp7gEE09jlpMXBduhCLD3Kc5XvlsS8nJTmHQgaRc7w==","repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"_npmVersion":"11.9.0","description":"A flexible and extensible logging utility with callsite tracking and environment-aware capabilities.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"callsites":"^4.2.0","serialize-error":"^13.0.1","@loglayer/plugin":"^3.0.2","@loglayer/shared":"^4.1.0","@loglayer/transport":"^3.0.2","@loglayer/log-level-manager-one-way":"^2.0.2","@loglayer/transport-simple-pretty-terminal":"^3.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.18.0","vitest":"^4.0.15","loglayer":"^9.1.0","typescript":"^5.9.3","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.0","@accelint/vitest-config":"0.1.6","@testing-library/jest-dom":"^6.9.1","@accelint/typescript-config":"0.1.4"},"peerDependencies":{"loglayer":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/logger_1.0.1_1772675404865_0.6505203541576221","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@accelint/logger","version":"1.1.0","keywords":["dev-tk","tooling"],"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","_id":"@accelint/logger@1.1.0","maintainers":[{"name":"ray.knight-hypergiant","email":"ray.knight@hypergiant.com"},{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},{"name":"brandonjpierce","email":"brandonpierce91@gmail.com"},{"name":"bryan_hg","email":"bryan.kizer@hypergiant.com"},{"name":"colin.leahy","email":"colin.leahy@hypergiant.com"},{"name":"jacob.foster.hg","email":"jacob.foster@hypergiant.com"},{"name":"isaac.kehle-hypergiant","email":"isaac.kehle@hypergiant.com"}],"homepage":"https://github.com/gohypergiant/standard-toolkit#readme","bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"dist":{"shasum":"b89be27d9289825ea0ab4c736436bc831776c743","tarball":"https://registry.npmjs.org/@accelint/logger/-/logger-1.1.0.tgz","fileCount":28,"integrity":"sha512-kAg1ZrACfLV/CMSM/c5Q+Hfxo+vaa91D4aEQvCUi6ktMxGcDJrSTlUSxAvyW7N7hhKgz0L316jGpc/Kpr8Il4g==","signatures":[{"sig":"MEUCIQD6WfWVJlXDORUMwCuO2j+5S9PKkz1TsV0aWTGXp/2ueAIgPaxt8BOybljpGlR7AKjKvYfTl1/RCem3b5WFcG7Kj/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94119},"main":"./dist/index.js","type":"module","_from":"file:accelint-logger-1.1.0.tgz","owner":"default/pathfinder","title":"Accelint Logger","types":"./dist/index.d.ts","module":"./dist/index.js","$schema":"https://json.schemastore.org/package","engines":{"node":">=22","pnpm":">=10"},"exports":{".":"./dist/index.js","./default":"./dist/default/index.js","./definitions":"./dist/definitions.js","./package.json":"./package.json","./plugins/callsite":"./dist/plugins/callsite.js","./default/bootstrap":"./dist/default/bootstrap.js","./transports/pretty":"./dist/transports/pretty.js","./plugins/environment":"./dist/plugins/environment.js","./transports/structured":"./dist/transports/structured.js"},"private":false,"scripts":{"dev":"pnpm tsc --watch","lint":"pnpm biome lint . --verbose","test":"pnpm vitest --dir=src","bench":"pnpm vitest bench --run --dir src","build":"pnpm tsdown","index":"pnpm zx ../../scripts/indexer.mjs packages/logger","format":"pnpm biome format . --write --verbose","license":"pnpm zx ../../scripts/license.mjs","test:watch":"pnpm vitest --dir=src --watch","format:check":"pnpm biome format . --verbose","lint:package":"pnpm publint","constellation-tracker":"pnpm exec constellation-tracker"},"subPath":"packages/logger","_npmUser":{"name":"hg-devsecops","email":"hg-devsecops@hypergiant.com"},"_resolved":"/tmp/f19fc2ce53a6c824ffba4fd559d7bd79/accelint-logger-1.1.0.tgz","_integrity":"sha512-kAg1ZrACfLV/CMSM/c5Q+Hfxo+vaa91D4aEQvCUi6ktMxGcDJrSTlUSxAvyW7N7hhKgz0L316jGpc/Kpr8Il4g==","repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"_npmVersion":"11.9.0","description":"A flexible and extensible logging utility with callsite tracking and environment-aware capabilities.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"callsites":"^4.2.0","serialize-error":"^13.0.1","@loglayer/plugin":"^3.0.2","@loglayer/shared":"^4.1.0","@loglayer/transport":"^3.0.2","@loglayer/log-level-manager-one-way":"^2.0.2","@loglayer/transport-simple-pretty-terminal":"^3.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.18.0","vitest":"^4.0.15","loglayer":"^9.1.0","typescript":"^5.9.3","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.0","@accelint/vitest-config":"0.1.6","@testing-library/jest-dom":"^6.9.1","@accelint/typescript-config":"0.1.4"},"peerDependencies":{"loglayer":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/logger_1.1.0_1773384758052_0.5581164136915631","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-09-19T15:10:22.763Z","modified":"2026-04-02T19:29:21.717Z","0.1.0":"2025-09-19T15:10:23.062Z","0.1.1":"2025-10-10T23:55:35.898Z","0.1.2":"2025-10-30T22:21:46.931Z","0.1.3":"2025-12-12T18:34:55.349Z","0.1.4":"2025-12-18T21:21:20.462Z","0.1.5":"2026-01-20T15:15:51.298Z","1.0.0":"2026-02-22T21:05:30.342Z","1.0.1":"2026-03-05T01:50:05.017Z","1.1.0":"2026-03-13T06:52:38.220Z"},"bugs":{"url":"https://github.com/gohypergiant/standard-toolkit/issues"},"author":{"name":"https://hypergiant.com"},"license":"Apache-2.0","homepage":"https://github.com/gohypergiant/standard-toolkit#readme","keywords":["dev-tk","tooling"],"repository":{"url":"git+https://github.com/gohypergiant/standard-toolkit.git","type":"git"},"description":"A flexible and extensible logging utility with callsite tracking and environment-aware capabilities.","maintainers":[{"email":"hg-devsecops@hypergiant.com","name":"hg-devsecops"},{"email":"brandonpierce91@gmail.com","name":"brandonjpierce"},{"email":"bryan.kizer@hypergiant.com","name":"bryan_hg"},{"email":"colin.leahy@hypergiant.com","name":"colin.leahy"},{"email":"jacob.foster@hypergiant.com","name":"jacob.foster.hg"}],"readme":"# @accelint/logger\n\nStructured logging built on [LogLayer](https://loglayer.dev/) with automatic callsite tracking and environment detection.\n\n## What is @accelint/logger?\n\n`@accelint/logger` is a thin wrapper around [LogLayer](https://loglayer.dev/) with sensible defaults baked in:\n\n- **Callsite tracking**: every log entry includes the file and line where it was called\n- **Environment detection**: logs note whether they came from the browser or server\n- **Pretty-printed output**: readable in development, switchable to structured JSON for production pipelines\n- **Error serialization**: errors include full stack traces via `serialize-error`\n- **Singleton pattern**: configure once at startup, import everywhere else\n\nIt doesn't change LogLayer's API. Anything in the [LogLayer docs](https://loglayer.dev/) applies here.\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [Configuration Options](#configuration-options)\n- [Log Levels](#log-levels)\n- [Transports](#transports)\n- [Environment-Based Configuration](#environment-based-configuration)\n  - [Next.js Setup](#nextjs-setup)\n- [API](#api)\n  - [getLogger](#getlogger)\n  - [Log Level Constants](#log-level-constants)\n- [Examples](#examples)\n  - [Adding Context and Metadata](#adding-context-and-metadata)\n  - [Error Handling](#error-handling)\n  - [Domain Loggers](#domain-loggers)\n  - [Child Loggers](#child-loggers)\n  - [React Error Boundaries](#react-error-boundaries)\n  - [Custom Transports](#custom-transports)\n  - [Custom Plugins](#custom-plugins)\n  - [Testing](#testing)\n- [Built-in Features](#built-in-features)\n- [Further Reading](#further-reading)\n\n## Installation\n\n```sh\npnpm add @accelint/logger\n```\n\nTypeScript types are included. No separate `@types` package needed.\n\n## Quick Start\n\nCreate a single logger instance in your app and import it everywhere else:\n\n```ts\n// ~/utils/logger/index.ts\nimport { getLogger } from '@accelint/logger';\n\nexport const logger = getLogger({\n  enabled: true,\n  level: 'info',\n  prefix: '[MyApp]',\n  env: process.env.NODE_ENV as 'production' | 'development',\n});\n```\n\n```ts\n// ~/data-access/auth/server.ts\nimport { logger } from '~/utils/logger';\n\nexport function login(credentials: Credentials) {\n  logger.info('User login attempt');\n  // ...\n}\n```\n\n`getLogger` returns a singleton. Call it once at startup to configure it, then import the result wherever you need it. Don't call it in multiple files with different options; only the first call's options take effect.\n\n## Configuration Options\n\n| Option | Type | Default | Description |\n| --- | --- | --- | --- |\n| `enabled` | `boolean` | required | Enable or disable all logging output |\n| `level` | `LogLevel` | `'debug'` | Minimum log level to output |\n| `prefix` | `string` | `''` | String prepended to all log messages |\n| `pretty` | `boolean` | `true` | Use pretty-printed console output. Set to `false` for structured JSON |\n| `env` | `'production' \\| 'development'` | `'development'` | Environment context; affects whether callsite and environment data is included |\n| `plugins` | `LogLayerPlugin[]` | `[]` | Additional LogLayer plugins applied after the built-in ones |\n| `transports` | `LogLayerTransport[]` | `[]` | Custom transports that replace the default console output. Passing nothing or `[]` keeps the default. Include `prettyTransport` or `structuredTransport` explicitly to retain console output alongside custom transports. |\n| `groups` | `LogGroupsConfig` | `{}` | Group-based routing for sending logs to specific transports |\n\n## Log Levels\n\n| Level | Method | Use case |\n| --- | --- | --- |\n| `trace` | `logger.trace()` | Fine-grained debugging, very verbose |\n| `debug` | `logger.debug()` | Development debugging |\n| `info` | `logger.info()` | General information about what the app is doing |\n| `warn` | `logger.warn()` | Something looks wrong but execution continues |\n| `error` | `logger.error()` | An operation failed |\n| `fatal` | `logger.fatal()` | Critical failure, app likely needs to stop |\n\n## Transports\n\nBy default, the logger writes to a single console transport (pretty-printed in development, structured JSON when `pretty: false`). Passing a `transports` array changes that entirely: whatever you pass **replaces** the default, it doesn't add to it.\n\nTwo patterns to know:\n\n### Replace the default transport\n\nPass only the transports you want. Nothing goes to stdout.\n\n```ts\nimport { getLogger } from '@accelint/logger';\nimport { OpenTelemetryTransport } from '@loglayer/transport-opentelemetry';\n\nconst otelTransport = new OpenTelemetryTransport({ /* ...settings */ });\n\nexport const logger = getLogger({\n  enabled: true,\n  level: LOG_LEVEL,\n  transports: [otelTransport],\n});\n```\n\nAll output goes to OpenTelemetry only.\n\n### Keep the built-in transport and add more\n\nImport one of the built-in transports and include it alongside your custom ones:\n\n```ts\nimport { getLogger, structuredTransport } from '@accelint/logger';\nimport { OpenTelemetryTransport } from '@loglayer/transport-opentelemetry';\n\nconst otelTransport = new OpenTelemetryTransport({ /* ...settings */ });\n\nexport const logger = getLogger({\n  enabled: true,\n  level: LOG_LEVEL,\n  transports: [\n    structuredTransport({ level: LOG_LEVEL }),\n    otelTransport,\n  ],\n});\n```\n\nLogs go to both stdout and OpenTelemetry. Swap in `prettyTransport` if you want human-readable output instead of JSON.\n\nBoth `structuredTransport` and `prettyTransport` are exported from the main `@accelint/logger` package.\n\n---\n\n## Environment-Based Configuration\n\nTie the log level and output format to environment variables so you don't have to touch code between deploys. In development, pretty-printed output is easier to read; in production, structured JSON is what log aggregators expect.\n\n```ts\n// ~/utils/logger/index.ts\nimport { getLogger } from '@accelint/logger';\n\nconst NODE_ENV = process.env.NODE_ENV;\nconst LOG_LEVEL = process.env.LOG_LEVEL;\nconst isProduction = NODE_ENV === 'production';\n\nexport const logger = getLogger({\n  level: LOG_LEVEL,\n  enabled: true,\n  pretty: !isProduction,\n});\n```\n\nWith `LOG_LEVEL` unset, the logger defaults to `'debug'`. Set it to `'info'` or `'warn'` in production to cut down on noise.\n\n### Next.js Setup\n\nNext.js complicates this because the logger may run on the server or in the browser. `NEXT_PUBLIC_` env vars work if they're known at build time. For runtime server variables that need to reach the client, attaching them to `globalThis` is the common workaround:\n\n```ts\n// ~/utils/logger/index.ts\nimport { getLogger } from '@accelint/logger';\nimport { env } from '~/configs/env/server';\n\nconst NODE_ENV = env.NODE_ENV ?? globalThis.NODE_ENV ?? 'development';\nconst LOG_LEVEL = env.LOG_LEVEL ?? globalThis.LOG_LEVEL ?? 'debug';\nconst isProduction = NODE_ENV === 'production';\n\nexport const logger = getLogger({\n  level: LOG_LEVEL,\n  enabled: true,\n  pretty: !isProduction,\n});\n```\n\n---\n\n## API\n\n### `getLogger`\n\n```ts\nfunction getLogger(opts: LoggerOptions): LogLayer\n```\n\nReturns a singleton `LogLayer` instance. The first call initializes the logger with the provided options. Every call after that returns the same instance regardless of what options you pass.\n\n```ts\nimport { getLogger } from '@accelint/logger';\n\nexport const logger = getLogger({\n  enabled: true,\n  level: 'info',\n});\n```\n\n**Returns:** `LogLayer`. See the [LogLayer docs](https://loglayer.dev/) for the full instance API, including `withContext`, `withMetadata`, `withError`, `child`, `withPrefix`, and more.\n\n---\n\n### Log Level Constants\n\nString constants for each log level, exported for use where you need to reference a level programmatically rather than with a string literal:\n\n```ts\nimport { DEBUG, INFO, WARN, ERROR, TRACE, FATAL } from '@accelint/logger';\nimport type { LogLevel } from '@accelint/logger';\n\nconst logger = getLogger({ enabled: true, level: WARN });\n```\n\n| Constant | Value |\n| --- | --- |\n| `TRACE` | `'trace'` |\n| `DEBUG` | `'debug'` |\n| `INFO` | `'info'` |\n| `WARN` | `'warn'` |\n| `ERROR` | `'error'` |\n| `FATAL` | `'fatal'` |\n\nThe `LogLevel` type is also exported and maps to `LogLevelType` from `@loglayer/shared`.\n\n## Examples\n\n### Adding Context and Metadata\n\nContext persists across all logs on a logger instance. Metadata is scoped to a single log entry.\n\n```ts\nimport { logger } from '~/utils/logger';\n\n// Context: carried through all subsequent logs on this instance\nconst requestLogger = logger.withContext({\n  requestId: req.id,\n  path: req.path,\n  method: req.method,\n});\n\nrequestLogger.info('Request received');\nawait processRequest(req);\nrequestLogger.info('Request completed');\n\n// Metadata: attached to this one log entry only\nlogger.withMetadata({ amount: payment.amount, currency: payment.currency }).info('Processing payment');\n```\n\nCombining both:\n\n```ts\nconst orderLogger = logger.withContext({ orderId: '12345', userId: 'user_789' });\n\norderLogger.withMetadata({ step: 'validation' }).info('Validating order');\norderLogger.withMetadata({ step: 'payment' }).info('Processing payment');\norderLogger.withMetadata({ step: 'fulfillment' }).info('Order fulfilled');\n```\n\n---\n\n### Error Handling\n\nPass errors via `withError()` before the log level call. They're serialized with full stack traces automatically.\n\n```ts\nimport { logger } from '~/utils/logger';\n\ntry {\n  await riskyOperation();\n} catch (error) {\n  logger.withError(error).error('Operation failed');\n}\n```\n\nWith context:\n\n```ts\nasync function fetchUserData(userId: string) {\n  try {\n    const response = await fetch(`/api/users/${userId}`);\n    return await response.json();\n  } catch (error) {\n    logger\n      .withContext({ userId, endpoint: '/api/users' })\n      .withError(error)\n      .error('User fetch failed');\n    throw error;\n  }\n}\n```\n\n---\n\n### Domain Loggers\n\nFor larger apps, give each module its own prefixed logger so it's clear where each log came from. `withPrefix()` returns a child logger with the prefix applied.\n\nCreate a small utility for this:\n\n```ts\n// ~/utils/logger/domain.ts\nimport { logger } from '~/utils/logger';\nimport type { LogLevel } from '@accelint/logger';\n\nexport function createLoggerDomain(prefix: string, level?: LogLevel) {\n  const child = logger.withPrefix(prefix);\n\n  if (level) {\n    child.setLevel(level);\n  }\n\n  return child;\n}\n```\n\nThen use it per module:\n\n```ts\n// ~/data-access/payments/server.ts\nimport { createLoggerDomain } from '~/utils/logger/domain';\n\nconst log = createLoggerDomain('[Payments]');\n\nexport async function processPayment(payment: Payment) {\n  log.info('Processing payment', payment.id);\n  // Output: [Payments] Processing payment abc123\n}\n```\n\nYou can suppress noisy log levels in specific modules by passing a level:\n\n```ts\n// ~/data-access/auth/server.ts\nimport { createLoggerDomain } from '~/utils/logger/domain';\n\nconst log = createLoggerDomain('[Auth]', 'warn'); // debug and info are suppressed\n\nexport async function login(credentials: Credentials) {\n  log.debug('Login attempt'); // suppressed\n  log.warn('Rate limit approaching for user', credentials.username);\n}\n```\n\nEach domain logger is a child of the root logger. They inherit the root's context but have independent prefixes and level settings.\n\n---\n\n### Child Loggers\n\nIf you want module-specific context without a prefix, use `logger.child()`. Child loggers inherit the parent's configuration and any context set on the parent at the time `child()` is called, then maintain independent context after that.\n\n```ts\n// ~/data-access/users/server.ts\nimport { logger } from '~/utils/logger';\n\nconst userLogger = logger.child().withContext({\n  module: 'data-access',\n  domain: 'users',\n});\n\nexport async function fetchUser(id: string) {\n  userLogger.info('Fetching user', id);\n\n  try {\n    const user = await db.users.findOne(id);\n    userLogger.info('User fetched successfully');\n    return user;\n  } catch (error) {\n    userLogger.withError(error).error('Failed to fetch user');\n    throw error;\n  }\n}\n```\n\nAdding context to `userLogger` won't affect the parent `logger`, and vice versa.\n\n---\n\n### React Error Boundaries\n\n```tsx\n'use client';\nimport 'client-only';\nimport { logger } from '~/utils/logger';\nimport { ErrorBoundary } from 'react-error-boundary';\nimport type { ErrorInfo, PropsWithChildren } from 'react';\n\nfunction onError(err: Error, info: ErrorInfo) {\n  logger\n    .withContext({ componentStack: info.componentStack })\n    .withError(err)\n    .error('React error boundary caught error');\n}\n\nexport function ErrorComponent({ children }: PropsWithChildren) {\n  return (\n    <ErrorBoundary fallback={<div>Error</div>} onError={onError}>\n      {children}\n    </ErrorBoundary>\n  );\n}\n```\n\n---\n\n### Custom Transports\n\nAdd transports to ship logs to external destinations. See [Transports](#transports) for how transport replacement works.\n\n#### OpenTelemetry\n\n```bash\npnpm add @loglayer/transport-opentelemetry\n```\n\n```ts\nimport { getLogger } from '@accelint/logger';\nimport { OpenTelemetryTransport } from '@loglayer/transport-opentelemetry';\n\nexport const logger = getLogger({\n  enabled: true,\n  level: 'info',\n  transports: [\n    new OpenTelemetryTransport({\n      level: 'info',\n      enabled: process.env.NODE_ENV === 'production',\n      onError: (error) => console.error('OpenTelemetry error:', error),\n    }),\n  ],\n});\n```\n\nWhen used alongside OpenTelemetry instrumentation, the transport automatically includes trace IDs and span IDs on each log entry.\n\n---\n\n### Custom Plugins\n\nPlugins let you intercept and transform log data before it reaches a transport. This example prepends a timestamp to every message:\n\n```ts\n// ~/utils/logger/plugins/timestamp.ts\nimport type { LogLayerPlugin, PluginBeforeMessageOutParams } from 'loglayer';\n\nexport interface TimestampPluginOptions {\n  format?: 'iso' | 'locale';\n}\n\nexport function timestampPlugin(options: TimestampPluginOptions = {}): LogLayerPlugin {\n  return {\n    onBeforeMessageOut({ messages }: PluginBeforeMessageOutParams) {\n      const timestamp =\n        options.format === 'locale' ? new Date().toLocaleString() : new Date().toISOString();\n\n      return messages.map((msg) => `[${timestamp}] ${msg}`);\n    },\n  };\n}\n```\n\n```ts\n// ~/utils/logger/index.ts\nimport { getLogger } from '@accelint/logger';\nimport { timestampPlugin } from './plugins/timestamp';\n\nexport const logger = getLogger({\n  enabled: true,\n  level: 'info',\n  plugins: [timestampPlugin({ format: 'iso' })],\n});\n```\n\nSee the [LogLayer plugin docs](https://loglayer.dev/plugins/) for available hooks and what each can intercept.\n\n---\n\n### Testing\n\nLogLayer ships a `MockLogLayer` that matches the full logger API but does nothing. Use it in unit tests to silence log output and optionally assert log calls.\n\n```ts\nimport { MockLogLayer } from 'loglayer';\n\nvi.mock('~/utils/logger', () => ({\n  logger: new MockLogLayer(),\n}));\n```\n\nSee the [LogLayer testing docs](https://loglayer.dev/test-logging.html) for the full `MockLogLayer` API.\n\n## Built-in Features\n\n### Callsite Tracking\n\nEvery log entry automatically includes the source file and line number:\n\n```ts\nlogger.warn('Something happened');\n// Output includes: callSite: \"src/data-access/users/server.ts:42:5\"\n```\n\n### Environment Detection\n\nLogs include a `server` field showing where they came from:\n\n```ts\nlogger.info('Request received');\n// Output includes: server: true  (or false in the browser)\n```\n\n### Pretty Printing\n\nDevelopment output is formatted for readability. Switch to structured JSON for log aggregation:\n\n```ts\n// Pretty output (default)\nconst logger = getLogger({ enabled: true, pretty: true });\n\n// Structured JSON\nconst logger = getLogger({ enabled: true, pretty: false });\n```\n\n## Further Reading\n\n- [LogLayer Documentation](https://loglayer.dev/)\n- [Available transports](https://loglayer.dev/transports/): Pino, Winston, DataDog, AWS CloudWatch, and more\n- [Plugin API](https://loglayer.dev/plugins/): filter, redact, and enrich log data\n- [Group-based routing](https://loglayer.dev/logging-api/groups.html): route logs to different transports by tag\n- [Child loggers](https://loglayer.dev/logging-api/child-loggers): inherit configuration and context across modules\n","readmeFilename":"README.md"}