{"_id":"@37bytes/logstory","_rev":"6-9cd199cad8083edc64deac8a079a6ba7","name":"@37bytes/logstory","dist-tags":{"latest":"2.1.0"},"versions":{"1.0.0":{"name":"@37bytes/logstory","version":"1.0.0","keywords":["logger","js-logger","react logger"],"author":{"name":"37bytes"},"license":"MIT","_id":"@37bytes/logstory@1.0.0","maintainers":[{"name":"rispaev","email":"rispaev@37bytes.com"},{"name":"yar_vav","email":"yavavilin@37bytes.com"},{"name":"rteslenko","email":"rteslenko@37bytes.com"},{"name":"tnikolaeva","email":"tnikolaeva@37bytes.com"},{"name":"dc.nikolaev","email":"dnikolaev@37bytes.com"},{"name":"mgarmash","email":"ops@37bytes.com"}],"homepage":"https://github.com/37bytes/public-packages/tree/master#readme","bugs":{"url":"https://github.com/37bytes/public-packages/issues"},"dist":{"shasum":"a9b52f79932612197ebf82c1271f016416dfc028","tarball":"https://registry.npmjs.org/@37bytes/logstory/-/logstory-1.0.0.tgz","fileCount":11,"integrity":"sha512-33PsatimY2hL5tY5bLqHAgnNBkqyTKf9NG0RBZ1p6+w7Qy0F84Zrx3wcJdlvwpeYkCPve7wz57BBxll5O909iQ==","signatures":[{"sig":"MEUCIQD8FkWq2gtNngFbFqx3U6eKHml4rFIt4w45xJbtYkG3MgIgLEUHBDoOy7ME/3x+wkvizUHR7PWxXjhskgp7qB+gsu8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11062},"main":"build/index.js","types":"./build/index.d.ts","gitHead":"98f6ca123538fd476f822b924ca6b128c957344a","scripts":{"build":"rimraf build && tsc --project ./tsconfig.json","build&watch":"rimraf build && tsc --project ./tsconfig.json --watch","npm-packlist":"npm run build && npx -y npm-packlist@6.0.1"},"_npmUser":{"name":"yar_vav","email":"yavavilin@37bytes.com"},"repository":{"url":"git+https://github.com/37bytes/public-packages.git#master","type":"git"},"_npmVersion":"9.7.2","description":"Logstory is a flexible and extensible logger for JavaScript that allows easy integration of additional features and sending events to monitoring systems such as Sentry or Graylog.","directories":{},"_nodeVersion":"20.4.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.1","typescript":"^5.1.6","@types/node":"^20.3.3"},"_npmOperationalInternal":{"tmp":"tmp/logstory_1.0.0_1689058840343_0.11444280284565123","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@37bytes/logstory","version":"1.0.1","keywords":["logger","js-logger","react logger"],"author":{"name":"37bytes"},"license":"MIT","_id":"@37bytes/logstory@1.0.1","maintainers":[{"name":"rispaev","email":"rispaev@37bytes.com"},{"name":"yar_vav","email":"yavavilin@37bytes.com"},{"name":"rteslenko","email":"rteslenko@37bytes.com"},{"name":"tnikolaeva","email":"tnikolaeva@37bytes.com"},{"name":"dc.nikolaev","email":"dnikolaev@37bytes.com"},{"name":"mgarmash","email":"ops@37bytes.com"}],"homepage":"https://github.com/37bytes/public-packages/tree/master#readme","bugs":{"url":"https://github.com/37bytes/public-packages/issues"},"dist":{"shasum":"6a236d8012cc3089f9ca716c2ab26a7f00a68077","tarball":"https://registry.npmjs.org/@37bytes/logstory/-/logstory-1.0.1.tgz","fileCount":11,"integrity":"sha512-ivJGxSe11HkxZA+kyzEAZMK7cBIqSPeqpTQQuAw6nSW8Eb9eQITydjBejqu5U/kkBw5uH1Hm0O7AKXohCoPTlg==","signatures":[{"sig":"MEUCICkdo8mZV8FhxwDNmBAfnCy6PiZTu0iRTtDqN69BTUcRAiEAq4CdGOw+BX7BOL2IHR1injTvh+J1Z5xHQShi64AOLaU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11054},"main":"build/index.js","types":"./build/index.d.ts","gitHead":"b5a662739664bf724c8ffcc4169fee08e887f2ae","scripts":{"build":"rimraf build && tsc --project ./tsconfig.json","build&watch":"rimraf build && tsc --project ./tsconfig.json --watch","npm-packlist":"npm run build && npx -y npm-packlist@6.0.1"},"_npmUser":{"name":"yar_vav","email":"yavavilin@37bytes.com"},"repository":{"url":"git+https://github.com/37bytes/public-packages.git#master","type":"git"},"_npmVersion":"9.7.2","description":"Logstory is a flexible and extensible logger for JavaScript that allows easy integration of additional features and sending events to monitoring systems such as Sentry or Graylog.","directories":{},"_nodeVersion":"20.4.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.1","typescript":"^5.1.6","@types/node":"^20.3.3"},"_npmOperationalInternal":{"tmp":"tmp/logstory_1.0.1_1689060238661_0.8229434326001168","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@37bytes/logstory","version":"1.0.2","keywords":["logger","js-logger","react logger"],"author":{"name":"37bytes"},"license":"MIT","_id":"@37bytes/logstory@1.0.2","maintainers":[{"name":"rispaev","email":"rispaev@37bytes.com"},{"name":"yar_vav","email":"yavavilin@37bytes.com"},{"name":"rteslenko","email":"rteslenko@37bytes.com"},{"name":"tnikolaeva","email":"tnikolaeva@37bytes.com"},{"name":"dc.nikolaev","email":"dnikolaev@37bytes.com"},{"name":"mgarmash","email":"ops@37bytes.com"}],"homepage":"https://github.com/37bytes/public-packages/tree/master#readme","bugs":{"url":"https://github.com/37bytes/public-packages/issues"},"dist":{"shasum":"c4af2fa3601d535a632663b63d689d4be698860e","tarball":"https://registry.npmjs.org/@37bytes/logstory/-/logstory-1.0.2.tgz","fileCount":11,"integrity":"sha512-LMmcjj9baOmw+cYVCHzqq2tW7GPh8YLjdC9xUyAz9fEkiKIVlx9xtG2mJiutlYhvGcnXjAMugwq5/5MKwab7dA==","signatures":[{"sig":"MEYCIQD1u1Es1NzEMB44BCc4L6kFLFFM0fp0lWcCbl8EuO4xlwIhALBEAoJkSK2+rY5fUGfeog5v6BQQqv8I5pg8vjUycN5y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12925},"main":"build/index.js","types":"./build/index.d.ts","gitHead":"0b9379bff7f0d7cae1e1b9207077f776874b5c9a","scripts":{"build":"rimraf build && tsc --project ./tsconfig.json","build&watch":"rimraf build && tsc --project ./tsconfig.json --watch","npm-packlist":"npm run build && npx -y npm-packlist@6.0.1"},"_npmUser":{"name":"yar_vav","email":"yavavilin@37bytes.com"},"repository":{"url":"git+https://github.com/37bytes/public-packages.git#master","type":"git"},"_npmVersion":"9.7.2","description":"Logstory is a flexible and extensible logger for JavaScript that allows easy integration of additional features and sending events to monitoring systems such as Sentry or Graylog.","directories":{},"_nodeVersion":"20.4.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.1","typescript":"^5.1.6","@types/node":"^20.3.3"},"_npmOperationalInternal":{"tmp":"tmp/logstory_1.0.2_1689082282642_0.792111423291119","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@37bytes/logstory","version":"2.0.0","keywords":["logger"],"author":{"name":"37bytes"},"license":"MIT","_id":"@37bytes/logstory@2.0.0","maintainers":[{"name":"rteslenko","email":"rteslenko@37bytes.com"},{"name":"mgarmash","email":"ops@37bytes.com"},{"name":"dc.nikolaev","email":"dnikolaev@37bytes.com"},{"name":"tnikolaeva","email":"tnikolaeva@37bytes.com"},{"name":"arhonist-37b","email":"naushev@37bytes.com"},{"name":"yar_vav","email":"yavavilin@37bytes.com"},{"name":"rispaev","email":"rispaev@37bytes.com"}],"homepage":"https://github.com/37bytes/public-packages/tree/master#readme","bugs":{"url":"https://github.com/37bytes/public-packages/issues"},"dist":{"shasum":"3c9bfda9b4aa18a3598383324645522212044243","tarball":"https://registry.npmjs.org/@37bytes/logstory/-/logstory-2.0.0.tgz","fileCount":7,"integrity":"sha512-GGKYVLnZvz7hIGseg0GI/WdfsrWMXOG20CbyITfkNCld8K+Dv0NPxJgJVzPpyMZnl0sFuyn9wdZ2RP7yRr6zRg==","signatures":[{"sig":"MEYCIQDpgbWXOYPB+7604rCzdmaGr06M7IANO8drJxpSej4RGAIhAMXhYWXPdX3OG+Cidnvr4rEh8WXDubHMPOghKuWkIMr7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18096},"main":"./build/index.js","types":"./build/index.d.ts","module":"./build/index.mjs","exports":{".":{"types":"./build/index.d.ts","import":"./build/index.mjs","require":"./build/index.js"}},"gitHead":"05fd7b06a2b85fb686be6a6a4d836c22a2ccbb1a","scripts":{"test":"vitest run","build":"tsup","npm-packlist":"npm run build && npx -y npm-packlist@6.0.1"},"_npmUser":{"name":"dc.nikolaev","email":"dnikolaev@37bytes.com"},"repository":{"url":"git+https://github.com/37bytes/public-packages.git#master","type":"git"},"_npmVersion":"10.8.2","description":"Logstory is a flexible and extensible logger for JavaScript that allows easy integration of additional features and sending events to monitoring systems such as Sentry or Graylog.","directories":{},"_nodeVersion":"20.19.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","vitest":"4.0.10","@swc/core":"1.15.2","@types/node":"24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/logstory_2.0.0_1763494820694_0.21975199886365226","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@37bytes/logstory","version":"2.1.0","description":"Logstory is a flexible and extensible logger for JavaScript that allows easy integration of additional features and sending events to monitoring systems such as Sentry or Graylog.","license":"MIT","author":{"name":"37bytes"},"type":"module","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/37bytes/public-packages.git","directory":"packages/logstory"},"keywords":["logger"],"exports":{".":{"import":{"types":"./build/index.d.mts","default":"./build/index.mjs"},"require":{"types":"./build/index.d.cts","default":"./build/index.cjs"}}},"main":"./build/index.cjs","module":"./build/index.mjs","types":"./build/index.d.mts","devDependencies":{"eslint":"9.39.2","tsdown":"0.20.3","typescript":"5.8.3","vitest":"3.2.3","@37bytes/bundler":"0.0.0","@37bytes/code-style":"0.0.1"},"scripts":{"build":"tsdown","test":"vitest run","lint:typescript":"tsc --noEmit","lint:eslint":"eslint --fix --max-warnings 0 .","lint":"pnpm lint:typescript && pnpm lint:eslint"},"_id":"@37bytes/logstory@2.1.0","bugs":{"url":"https://github.com/37bytes/public-packages/issues"},"homepage":"https://github.com/37bytes/public-packages#readme","_integrity":"sha512-7Hvg6MI+Qtx4P9z9b/VxP33NJAdH/tvRQ0PteXKWbKt89o2utqbtFWsNvo9nlkL3Hc4s+PCpuX1UBWXPsoZZSw==","_resolved":"/private/var/folders/5t/b72kl4gn5fs7rnfrhvh9l6sc0000gn/T/a72ee3e1dbc329a232390845dfc99dc5/37bytes-logstory-2.1.0.tgz","_from":"file:37bytes-logstory-2.1.0.tgz","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-7Hvg6MI+Qtx4P9z9b/VxP33NJAdH/tvRQ0PteXKWbKt89o2utqbtFWsNvo9nlkL3Hc4s+PCpuX1UBWXPsoZZSw==","shasum":"69ffbd633707fcacded012475110817b61452ffb","tarball":"https://registry.npmjs.org/@37bytes/logstory/-/logstory-2.1.0.tgz","fileCount":10,"unpackedSize":20943,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDXLteB9vyOYAXu3GJPdxspWqag8ZdRzyVoQjprSK3HuAIhAKwbLvYf4zHyQSmxCoF8lkjfPKirnez1FTlx99tKoYam"}]},"_npmUser":{"name":"dc.nikolaev","email":"dnikolaev@37bytes.com"},"directories":{},"maintainers":[{"name":"rteslenko","email":"rteslenko@37bytes.com"},{"name":"mgarmash","email":"ops@37bytes.com"},{"name":"dc.nikolaev","email":"dnikolaev@37bytes.com"},{"name":"tnikolaeva","email":"tnikolaeva@37bytes.com"},{"name":"arhonist-37b","email":"naushev@37bytes.com"},{"name":"yar_vav","email":"yavavilin@37bytes.com"},{"name":"rispaev","email":"rispaev@37bytes.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/logstory_2.1.0_1773171390636_0.300052164731752"},"_hasShrinkwrap":false}},"time":{"created":"2023-07-11T07:00:40.283Z","modified":"2026-03-10T19:36:31.039Z","1.0.0":"2023-07-11T07:00:40.506Z","1.0.1":"2023-07-11T07:23:58.828Z","1.0.2":"2023-07-11T13:31:22.818Z","2.0.0":"2025-11-18T19:40:20.877Z","2.1.0":"2026-03-10T19:36:30.826Z"},"bugs":{"url":"https://github.com/37bytes/public-packages/issues"},"author":{"name":"37bytes"},"license":"MIT","homepage":"https://github.com/37bytes/public-packages#readme","keywords":["logger"],"repository":{"type":"git","url":"git+https://github.com/37bytes/public-packages.git","directory":"packages/logstory"},"description":"Logstory is a flexible and extensible logger for JavaScript that allows easy integration of additional features and sending events to monitoring systems such as Sentry or Graylog.","maintainers":[{"name":"rteslenko","email":"rteslenko@37bytes.com"},{"name":"mgarmash","email":"ops@37bytes.com"},{"name":"dc.nikolaev","email":"dnikolaev@37bytes.com"},{"name":"tnikolaeva","email":"tnikolaeva@37bytes.com"},{"name":"arhonist-37b","email":"naushev@37bytes.com"},{"name":"yar_vav","email":"yavavilin@37bytes.com"},{"name":"rispaev","email":"rispaev@37bytes.com"}],"readme":"[[English](./README.md)] | [Русский](./README_RU.md)\n\n# Logstory\n\nA flexible and extensible logger for JavaScript/TypeScript with middleware support and configurable log levels.\n\n## Installation\n\n```bash\nnpm install @37bytes/logstory\n```\n\n## Features\n\n- Scopes\n- Configurable log levels\n- Middleware support for integration with Sentry, Graylog, etc.\n- Works everywhere (client, server)\n- Lightweight (~5KB)\n\n## Quick Start\n\n```typescript\nimport { createLogstory } from '@37bytes/logstory';\n\nconst logger = createLogstory({\n  name: 'Scope',\n  logLevelConfig: {\n    debug: process.env.NODE_ENV === 'development',\n    log: true,\n    warn: true,\n    error: true\n  }\n});\n\nlogger.debug('Debug message');  // Only in dev mode\nlogger.log('Info message');\nlogger.warn('Warning message');\nlogger.error('Error message');\n```\n\n## API\n\n### createLogstory(options)\n\n#### Parameters\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `name` | `string` | `undefined` | Logger name, displayed in output |\n| `logLevelConfig` | `Partial<LogLevelConfig>` | All `true` | Which log levels are enabled |\n| `consoleProxy` | `Console` | `globalThis.console` | Custom console implementation (for middleware) |\n| `formatLoggerName` | `Function` | Default | Logger name formatting function |\n\n#### LogLevelConfig\n\n```typescript\ntype LogLevelConfig = {\n  debug: boolean;\n  log: boolean;\n  warn: boolean;\n  error: boolean;\n};\n```\n\n**Note:** `logLevelConfig` is `Partial`, meaning you can specify only the levels you want to override. Unspecified levels will use their default values (all `true`).\n\nExample:\n```typescript\n// Only disable debug, keep others enabled\nconst logger = createLogstory({\n  name: 'MyApp',\n  logLevelConfig: { debug: false }  // log, warn, error remain true\n});\n```\n\n### Custom Formatting\n\n```typescript\nconst logger = createLogstory({\n  name: 'MyApp',\n  formatLoggerName: ({ loggerName, logLevel }) => {\n    if (logLevel === 'error') {\n      return `🔥 [${loggerName}]: %o`;\n    }\n    return `[${loggerName}]: %o`;\n  }\n});\n\nlogger.error('Critical error'); // 🔥 [MyApp] Critical error\n```\n\n## Advanced Usage\n\n### Sentry Integration\n\nYou can extend the logger with additional methods for monitoring:\n\n```typescript\nimport { createLogstory } from '@37bytes/logstory';\nimport * as Sentry from '@sentry/browser';\n\nconst createLogger = (name: string) => {\n  const logger = createLogstory({ name });\n  \n  logger.error.withSentry = (error, context) => {\n    logger.error(error);\n    Sentry.captureException(error, { extra: context });\n  };\n\n  return logger;\n};\n\nconst logger = createLogger('PaymentService');\nlogger.error.withSentry(new Error('Payment failed'), { userId: '123' });\n```\n\n## Changelog\n\n### 2.0.0\n- Node.js support\n- Migrated to tsup (CommonJS + ESM)\n- Renamed `createLogger` → `createLogstory`\n- Renamed `logLevelState` → `logLevelConfig`\n\n### 1.0.0\n- Initial release\n\n## License\n\nMIT\n","readmeFilename":"README.md"}