{"_id":"@open-draft/logger","_rev":"3551595","name":"@open-draft/logger","description":"Environment-agnostic, ESM-friendly logger for simple needs.","dist-tags":{"latest":"0.3.0"},"maintainers":[{"name":"kettanaito","email":""}],"time":{"modified":"2024-09-19T02:43:29.000Z","created":"2023-04-12T23:53:36.559Z","0.3.0":"2023-04-14T17:41:39.768Z","0.2.2":"2023-04-14T17:07:08.866Z","0.2.1":"2023-04-14T16:58:23.504Z","0.2.0":"2023-04-13T10:56:45.389Z","0.1.1":"2023-04-12T23:56:28.891Z","0.1.0":"2023-04-12T23:53:36.559Z"},"users":{},"author":{"name":"Artem Zakharchenko"},"repository":{"type":"git","url":"git+https://github.com/open-draft/logger.git"},"versions":{"0.3.0":{"name":"@open-draft/logger","version":"0.3.0","description":"Environment-agnostic, ESM-friendly logger for simple needs.","main":"./lib/index.js","module":"./lib/index.mjs","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","require":"./lib/index.js","import":"./lib/index.mjs","default":"./lib/index.js"},"./package.json":"./package.json"},"keywords":["log","logger","logging","universal","tiny"],"author":{"name":"Artem Zakharchenko"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/open-draft/logger.git"},"devDependencies":{"@ossjs/release":"^0.5.1","@playwright/test":"^1.32.3","@types/node":"^18.15.11","playwright":"^1.32.3","tsup":"^6.7.0","typescript":"^5.0.3","vitest":"^0.29.8","webpack-http-server":"^0.5.0"},"dependencies":{"is-node-process":"^1.2.0","outvariant":"^1.4.0"},"scripts":{"build":"tsup","test":"pnpm test:node && pnpm test:browser","test:node":"vitest run","test:browser":"playwright test","release":"release publish"},"bugs":{"url":"https://github.com/open-draft/logger/issues"},"homepage":"https://github.com/open-draft/logger#readme","_id":"@open-draft/logger@0.3.0","_integrity":"sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==","_resolved":"/tmp/4a52fa29a19d82e3978cef3a7b00916b/open-draft-logger-0.3.0.tgz","_from":"file:open-draft-logger-0.3.0.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"shasum":"2b3ab1242b360aa0adb28b85f5d7da1c133a0954","size":5596,"noattachment":false,"key":"/@open-draft/logger/-/@open-draft/logger-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@open-draft/logger/download/@open-draft/logger-0.3.0.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/logger_0.3.0_1681494099607_0.24230015794786675"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-04-14T17:41:39.768Z","publish_time":1681494099768,"_cnpm_publish_time":1681494099768},"0.2.2":{"name":"@open-draft/logger","version":"0.2.2","description":"Environment-agnostic, ESM-friendly logger for simple needs.","main":"./lib/node/index.js","module":"./lib/node/index.mjs","browser":"./lib/browser/index.js","types":"./lib/node/index.d.ts","exports":{".":{"browser":{"types":"./lib/browser/index.d.ts","import":"./lib/browser/index.mjs","require":"./lib/browser/index.js","default":"./lib/browser/index.js"},"node":{"types":"./lib/node/index.d.ts","import":"./lib/node/index.mjs","require":"./lib/node/index.js","default":"./lib/node/index.js"}},"./package.json":"./package.json"},"keywords":["log","logger","logging","universal","tiny"],"author":{"name":"Artem Zakharchenko"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/open-draft/logger.git"},"devDependencies":{"@ossjs/release":"^0.5.1","@playwright/test":"^1.32.3","@types/node":"^18.15.11","playwright":"^1.32.3","tsup":"^6.7.0","typescript":"^5.0.3","vitest":"^0.29.8","webpack-http-server":"^0.5.0"},"dependencies":{"is-node-process":"^1.2.0","outvariant":"^1.4.0"},"scripts":{"build":"tsup","test":"pnpm test:node && pnpm test:browser","test:node":"vitest run","test:browser":"playwright test","release":"release publish"},"bugs":{"url":"https://github.com/open-draft/logger/issues"},"homepage":"https://github.com/open-draft/logger#readme","_id":"@open-draft/logger@0.2.2","_integrity":"sha512-4BnQECBKoGOWPYBMpsd9VjZ3loe8bm0xXCnTpv4b/k9aot93Lhgkc661cpfXTqjBd1g9dz3DPjpvaP+8PviawA==","_resolved":"/tmp/1ab4510868a67c112876c7647c783b27/open-draft-logger-0.2.2.tgz","_from":"file:open-draft-logger-0.2.2.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"shasum":"bd5f18cddcf84257c1939ca84a95eec784015e81","size":5961,"noattachment":false,"key":"/@open-draft/logger/-/@open-draft/logger-0.2.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/@open-draft/logger/download/@open-draft/logger-0.2.2.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/logger_0.2.2_1681492028611_0.3319848760057533"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-04-14T17:07:08.866Z","publish_time":1681492028866,"_cnpm_publish_time":1681492028866},"0.2.1":{"name":"@open-draft/logger","version":"0.2.1","description":"Environment-agnostic, ESM-friendly logger for simple needs.","main":"./lib/node/index.js","module":"./lib/node/index.mjs","browser":"./lib/browser/index.js","types":"./lib/node/index.d.ts","exports":{".":{"browser":{"types":"./lib/browser/index.d.ts","import":"./lib/browser/index.mjs","require":"./lib/browser/index.js","default":"./lib/browser/index.js"},"node":{"types":"./lib/node/index.d.ts","import":"./lib/node/index.mjs","require":"./lib/node/index.js","default":"./lib/node/index.js"}},"./package.json":"./package.json"},"keywords":["log","logger","logging","universal","tiny"],"author":{"name":"Artem Zakharchenko"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/open-draft/deferred-promise.git"},"devDependencies":{"@ossjs/release":"^0.5.1","@playwright/test":"^1.32.3","@types/node":"^18.15.11","playwright":"^1.32.3","tsup":"^6.7.0","typescript":"^5.0.3","vitest":"^0.29.8","webpack-http-server":"^0.5.0"},"dependencies":{"is-node-process":"^1.2.0","outvariant":"^1.4.0"},"scripts":{"build":"tsup","test":"pnpm test:node && pnpm test:browser","test:node":"vitest run","test:browser":"playwright test","release":"release publish"},"bugs":{"url":"https://github.com/open-draft/deferred-promise/issues"},"homepage":"https://github.com/open-draft/deferred-promise#readme","_id":"@open-draft/logger@0.2.1","_integrity":"sha512-imIXjae3S3XNxU306NbBdYXqZTOP/s8GMayAu8IKrvyndOqtGiiiXkOjDhvNyMN3vVWQd1FXKKrrS1+mXMaTMA==","_resolved":"/tmp/26afa78b9117006e209605f6d3339b88/open-draft-logger-0.2.1.tgz","_from":"file:open-draft-logger-0.2.1.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"shasum":"e0d20c8e0eeae0ae94ebf9a25a8b14084e99fca2","size":5972,"noattachment":false,"key":"/@open-draft/logger/-/@open-draft/logger-0.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@open-draft/logger/download/@open-draft/logger-0.2.1.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/logger_0.2.1_1681491503364_0.994453175595158"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-04-14T16:58:23.504Z","publish_time":1681491503504,"_cnpm_publish_time":1681491503504},"0.2.0":{"name":"@open-draft/logger","version":"0.2.0","description":"Environment-agnostic, ESM-friendly logger for simple needs.","main":"./lib/node/index.js","module":"./lib/node/index.mjs","browser":"./lib/browser/index.js","types":"./lib/node/index.d.ts","exports":{"browser":{"types":"./lib/browser/index.d.ts","import":"./lib/browser/index.mjs","require":"./lib/browser/index.js","default":"./lib/browser/index.js"},"node":{"types":"./lib/node/index.d.ts","import":"./lib/node/index.mjs","require":"./lib/node/index.js","default":"./lib/node/index.js"}},"keywords":["log","logger","logging","universal","tiny"],"author":{"name":"Artem Zakharchenko"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.5.1","@playwright/test":"^1.32.3","@types/node":"^18.15.11","playwright":"^1.32.3","tsup":"^6.7.0","typescript":"^5.0.3","vitest":"^0.29.8","webpack-http-server":"^0.5.0"},"dependencies":{"is-node-process":"^1.2.0","outvariant":"^1.4.0"},"scripts":{"build":"tsup","test":"pnpm test:node && pnpm test:browser","test:node":"vitest run","test:browser":"playwright test","release":"release publish"},"_id":"@open-draft/logger@0.2.0","_integrity":"sha512-/s7NLIXIvLcRUlrs94GFj7hcxH87JZaJNr9SlDhdvDIS8ke9GcflqjNzs47kTOG7dH2AjMZ9rJgX3l7tREUVxA==","_resolved":"/tmp/3a8efd85f72d0a12aaabba6b80437416/open-draft-logger-0.2.0.tgz","_from":"file:open-draft-logger-0.2.0.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"shasum":"74bc6233698ccd96e974410d1c2b5a1d932e5f13","size":5906,"noattachment":false,"key":"/@open-draft/logger/-/@open-draft/logger-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@open-draft/logger/download/@open-draft/logger-0.2.0.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/logger_0.2.0_1681383405156_0.21153453572139136"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-04-13T10:56:45.389Z","publish_time":1681383405389,"_cnpm_publish_time":1681383405389},"0.1.1":{"name":"@open-draft/logger","version":"0.1.1","description":"Environment-agnostic, ESM-friendly logger for simple needs.","main":"./lib/node/index.js","module":"./lib/node/index.mjs","browser":"./lib/browser/index.js","types":"./lib/node/index.d.ts","exports":{"browser":{"types":"./lib/browser/index.d.ts","import":"./lib/browser/index.mjs","require":"./lib/browser/index.js","default":"./lib/browser/index.js"},"node":{"types":"./lib/node/index.d.ts","import":"./lib/node/index.mjs","require":"./lib/node/index.js","default":"./lib/node/index.js"}},"keywords":["log","logger","logging","universal","tiny"],"author":{"name":"Artem Zakharchenko"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.5.1","@playwright/test":"^1.32.3","@types/node":"^18.15.11","playwright":"^1.32.3","tsup":"^6.7.0","typescript":"^5.0.3","vitest":"^0.29.8","webpack-http-server":"^0.5.0"},"dependencies":{"is-node-process":"^1.2.0","outvariant":"^1.4.0"},"scripts":{"build":"tsup","test":"pnpm test:node && pnpm test:browser","test:node":"vitest run","test:browser":"playwright test","release":"release publish"},"_id":"@open-draft/logger@0.1.1","_integrity":"sha512-gm2G59Zz8ec1DUjQ9slPm55f/Bt/lC7YemrDdSNvME59APYFZz7aVU2fe8+BTxwSl4LMTG0YMeLyxgLa0PRgJg==","_resolved":"/tmp/65fab0c67eaef0aa00c82b1238594b90/open-draft-logger-0.1.1.tgz","_from":"file:open-draft-logger-0.1.1.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"shasum":"687830a0a80dfcbba3ab80ca01a5fabebca56ea6","size":5803,"noattachment":false,"key":"/@open-draft/logger/-/@open-draft/logger-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@open-draft/logger/download/@open-draft/logger-0.1.1.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/logger_0.1.1_1681343788666_0.9626267956925476"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-04-12T23:56:28.891Z","publish_time":1681343788891,"_cnpm_publish_time":1681343788891},"0.1.0":{"name":"@open-draft/logger","version":"0.1.0","description":"Environment-agnostic, ESM-friendly logger for simple needs.","main":"./lib/node/index.js","module":"./lib/node/index.mjs","browser":"./lib/browser/index.js","types":"./lib/node/index.d.ts","exports":{"browser":{"types":"./lib/browser/index.d.ts","import":"./lib/browser/index.mjs","require":"./lib/browser/index.js","default":"./lib/browser/index.js"},"node":{"types":"./lib/node/index.d.ts","import":"./lib/node/index.mjs","require":"./lib/node/index.js","default":"./lib/node/index.js"}},"keywords":["log","logger","logging","universal","tiny"],"author":{"name":"Artem Zakharchenko"},"license":"MIT","devDependencies":{"@ossjs/release":"^0.5.1","@playwright/test":"^1.32.3","@types/node":"^18.15.11","playwright":"^1.32.3","tsup":"^6.7.0","typescript":"^5.0.3","vitest":"^0.29.8","webpack-http-server":"^0.5.0"},"dependencies":{"is-node-process":"^1.2.0","outvariant":"^1.4.0"},"scripts":{"build":"tsup","test":"pnpm test:node && pnpm test:browser","test:node":"vitest run","test:browser":"playwright test","release":"release publish"},"_id":"@open-draft/logger@0.1.0","_integrity":"sha512-3VLL4xfmTnyJeCakxO6z7QGtNTbtjssmVhnIP/I2/yq/46bPT37VLpLf0jv9n98DiVkqJGJoX1UN6OSXKr5biA==","_resolved":"/tmp/e530ed7921633828f7ed97f4804afce9/open-draft-logger-0.1.0.tgz","_from":"file:open-draft-logger-0.1.0.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"shasum":"3ec5b227c26f68999ce1c8fb0ad67aa19f0f0aa2","size":5796,"noattachment":false,"key":"/@open-draft/logger/-/@open-draft/logger-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@open-draft/logger/download/@open-draft/logger-0.1.0.tgz"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"directories":{},"maintainers":[{"name":"kettanaito","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/logger_0.1.0_1681343616389_0.17456818189905543"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-04-12T23:53:36.559Z","publish_time":1681343616559,"_cnpm_publish_time":1681343616559}},"readme":"# Logger\n\nEnvironment-agnostic, ESM-friendly logger for simple needs.\n\n## Why does this exist?\n\nI've been using `debug` for quite some time but wanted to migrate my projects to better ESM support. Alas, `debug` doesn't ship as ESM so I went and wrote this little logger just for my needs. You will likely see it printing useful data in Mock Service Worker and beyond.\n\n## Installation\n\n```sh\nnpm install @open-draft/logger\n```\n\n## Usage\n\nThis package has the same API for both browser and Node.js and can run in those environments out of the box.\n\n```js\n// app.js\nimport { Logger } from '@open-draft/logger'\n\nconst logger = new Logger('parser')\n\nlogger.info('starting parsing...')\nlogger.warning('found legacy document format')\nlogger.success('parsed 120 documents!')\n```\n\nLogging is disabled by default. To enable logging, provide the `DEBUG` environment variable:\n\n```sh\nDEBUG=1 node ./app.js\n```\n\n> You can also use `true` instead of `1`. You can also use a specific logger's name to enable [logger filtering](#logger-filtering).\n\n## API\n\n- Class: `Logger`\n  - [`new Logger(name)`](#new-loggername)\n  - [`logger.debug(message, ...positionals)`](#loggerdebugmessage-positionals)\n  - [`logger.info(message, ...positionals)`](#loggerinfomessage-positionals)\n  - [`logger.success(message, ...positionals)`](#loggersuccessmessage-positionals)\n  - [`logger.warning(message, ...positionals)`](#loggerwarningmessage-positionals)\n  - [`logger.error(message, ...positionals)`](#loggererrormessage-positionals)\n  - [`logger.extend(name)`](#loggerextendprefix)\n  - [`logger.only(callback)`](#loggeronlycallback)\n\n### `new Logger(name)`\n\n- `name` `string` the name of the logger.\n\nCreates a new instance of the logger. Each message printed by the logger will be prefixed with the given `name`. You can have multiple loggers with different names for different areas of your system.\n\n```js\nconst logger = new Logger('parser')\n```\n\n> You can nest loggers via [`logger.extend()`](#loggerextendprefix).\n\n### `logger.debug(message, ...positionals)`\n\n- `message` `string`\n- `positionals` `unknown[]`\n\nPrints a debug message.\n\n```js\nlogger.debug('no duplicates found, skipping...')\n```\n\n```\n12:34:56:789 [parser] no duplicates found, skipping...\n```\n\n### `logger.info(message, ...positionals)`\n\n- `message` `string`\n- `positionals` `unknown[]`\n\nPrints an info message.\n\n```js\nlogger.info('new parse request')\n```\n\n```\n12:34:56:789 [parser] new parse request\n```\n\n### `logger.success(message, ...positionals)`\n\n- `message` `string`\n- `positionals` `unknown[]`\n\nPrints a success message.\n\n```js\nlogger.success('prased 123 documents!')\n```\n\n```\n12:34:56:789 ✔ [parser] prased 123 documents!\n```\n\n### `logger.warning(message, ...positionals)`\n\n- `message` `string`\n- `positionals` `unknown[]`\n\nPrints a warning. In Node.js, prints it to `process.stderr`.\n\n```js\nlogger.warning('found legacy document format')\n```\n\n```\n12:34:56:789 ⚠ [parser] found legacy document format\n```\n\n### `logger.error(message, ...positionals)`\n\n- `message` `string`\n- `positionals` `unknown[]`\n\nPrints an error. In Node.js, prints it to `process.stderr`.\n\n```js\nlogger.error('failed to parse document')\n```\n\n```\n12:34:56:789 ✖ [parser] failed to parse document\n```\n\n### `logger.extend(prefix)`\n\n- `prefix` `string` Additional prefix to append to the logger's name.\n\nCreates a new logger out of the current one.\n\n```js\nconst logger = new Logger('parser')\n\nfunction parseRequest(request) {\n  const requestLogger = logger.extend(`${request.method} ${request.url}`)\n  requestLogger.info('start parsing...')\n}\n```\n\n```\n12:34:56:789 [parser] [GET https://example.com] start parsing...\n```\n\n### `logger.only(callback)`\n\nExecutes a given callback only when the logging is activated. Useful for computing additional information for logs.\n\n```js\nlogger.only(() => {\n  const documentSize = getSizeBytes(document)\n  logger.debug(`document size: ${documentSize}`)\n})\n```\n\n> You can nest `logger.*` methods in the callback to `logger.only()`.\n\n## Log levels\n\nYou can specify the log levels to print using the `LOG_LEVEL` environment variable.\n\nThere are the following log levels:\n\n- `debug`\n- `info`\n- `success`\n- `warning`\n- `error`\n\n> Providing no log level will print all the messages.\n\nHere's an example of how to print only warnings:\n\n```js\n// app.js\nimport { Logger } from '@open-draft/logger'\n\nconst logger = new Logger('parser')\n\nlogger.info('some info')\nlogger.warning('some warning')\nlogger.error('some error')\n```\n\n```js\nLOG_LEVEL=warning node ./app.js\n```\n\n```\n12:34:56:789 ⚠ [parser] some warning\n```\n\n## Logger filtering\n\nYou can only print a specific logger by providing its name as the `DEBUG` environment variable.\n\n```js\n// app.js\nimport { Logger } from '@open-draft/logger'\n\nconst appLogger = new Logger('app')\nconst parserLogger = new Logger('parser')\n\nappLogger.info('starting app...')\nparserLogger.info('creating a new parser...')\n```\n\n```sh\nDEBUG=app node ./app.js\n```\n\n```\n12:34:56:789 [app] starting app...\n```\n","_attachments":{},"homepage":"https://github.com/open-draft/logger#readme","bugs":{"url":"https://github.com/open-draft/logger/issues"},"license":"MIT"}