{"_id":"@a736921/logging","_rev":"4-b15f04c8d54d8e1c49827113fc469174","time":{"created":"2022-06-11T17:05:04.669Z","0.9.0":"2022-06-11T16:57:15.434Z","modified":"2022-06-11T17:09:03.753Z","0.10.0":"2022-06-11T17:05:04.934Z","0.11.0":"2022-06-11T17:09:03.684Z"},"name":"@a736921/logging","dist-tags":{"latest":"0.11.0"},"versions":{"0.10.0":{"name":"@a736921/logging","description":"An extension exposes logging for Winston and Fluentd with LoopBack 4","version":"0.10.0","keywords":["LoopBack","Cloud Native","Fluentd","Winston","Logging"],"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"IBM Corp. and LoopBack contributors"},"copyright.owner":"IBM Corp. and LoopBack contributors","repository":{"type":"git","url":"git+https://github.com/loopbackio/loopback-next.git","directory":"extensions/logging"},"engines":{"node":"14 || 16 || 17 || 18"},"scripts":{"build":"lb-tsc","clean":"lb-clean loopback-extension-logging*.tgz dist *.tsbuildinfo package","pretest":"npm run build","test":"lb-mocha \"dist/__tests__/**/*.js\"","verify":"npm pack && tar xf loopback-extension-logging*.tgz && tree package && npm run clean"},"publishConfig":{"access":"public"},"peerDependencies":{"@loopback/core":"^4.0.0","@loopback/rest":"^12.0.0"},"dependencies":{"fluent-logger":"^3.4.1","morgan":"^1.10.0","tslib":"^2.4.0","winston":"^3.7.2","winston-transport":"^4.5.0"},"devDependencies":{"@loopback/build":"^9.0.0","@loopback/core":"^4.0.0","@loopback/eslint-config":"^13.0.0","@loopback/rest":"^12.0.0","@loopback/testlab":"^5.0.0","@types/morgan":"^1.9.3","@types/node":"^14.18.21"},"bugs":{"url":"https://github.com/loopbackio/loopback-next/issues"},"homepage":"https://github.com/loopbackio/loopback-next#readme","_id":"@a736921/logging@0.10.0","_nodeVersion":"14.6.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-IwRLv8iWlHUaT7ygNMY9mBABh18eBpLnV/+G6j1N4gZnT7a+7FS8yOUvkwaqH0+pPQjeHqx0bmpjpocC1DZuxw==","shasum":"f5fb760c84ec044d6795d4d7da640f7479d973fc","tarball":"https://registry.npmjs.org/@a736921/logging/-/logging-0.10.0.tgz","fileCount":40,"unpackedSize":63256,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZ6J05qRdLEE8yF/lxCMfY/GqunjtmBxOF05UqvN6pgwIgPNSQ1dMbGHp597Mk0Z7Qq703fq3wyp7Wh3OrKssRUmA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJipMtAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpi8RAAifPRKG79TADtmuaGxNfqZViVBQIzXpMLa8f9RCgw6CHD2b2K\r\nTcaM4GeTqdJ6tdmbwIkXVqcfDye5MRskhnMDrTBhNoOSsSTkZI+30La3nNDR\r\nJJ/phxvu+ZlOxThI0F+S7sFpjw99QzMcVD5fq8aXn+NYaAh3akxoBwKaN2Oc\r\nSWGlu3h7L4bjVfmylhhdH8avsSsqHZ7hnElxzFuxirDBZ8zn8BZk4zcTtJhg\r\nPqYirS8DxcLFYuVENrLD7buTKGS6iU+pIQ6/1UfVM2mQ2mI4dKGpKTrPPwMF\r\nrg8LI8zFJcykcZnjqqlSMJs2Bkl9I5P8KodxU4bLR/Btompvvg31ULgVfkZi\r\nYshaIsGbRhxDr+m0m/GjDoIyre3draW4nqPtIC+EYJqOmEqbUvHVyDAf4LG+\r\nSjN/GVSBF19xLLy6DncM0on85wbiQiMd8FYRbYA8iEDQYpOkujdAIEBm/J2f\r\n3ny5XKIsi6KFsXzQmYZGE2bJCUZ2MkV+N6GxsNUY2TIMfP2Wnt9EGPRzaUDp\r\nS8UDwX7CbA6QOBV4DOyx21WGkMXVx8uduJHzUDQEjAsqlsrGNCRP3kX9ckbU\r\nRTtzbi4GFcBs2U8X72peY+i9tfY3X2ywknZoiEksAC80KF283BSrqmBcrIAO\r\nr4WqIAJqLknMqK4vItgcn9nQMGnFa2gO2YM=\r\n=ip/n\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"a736921","email":"a736921@gmail.com"},"directories":{},"maintainers":[{"name":"a736921","email":"a736921@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/logging_0.10.0_1654967104751_0.5412076293899184"},"_hasShrinkwrap":false},"0.11.0":{"name":"@a736921/logging","description":"An extension exposes logging for Winston and Fluentd with LoopBack 4","version":"0.11.0","keywords":["LoopBack","Cloud Native","Fluentd","Winston","Logging"],"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"IBM Corp. and LoopBack contributors"},"copyright.owner":"IBM Corp. and LoopBack contributors","repository":{"type":"git","url":"git+https://github.com/loopbackio/loopback-next.git","directory":"extensions/logging"},"engines":{"node":"14 || 16 || 17 || 18"},"scripts":{"build":"lb-tsc","clean":"lb-clean loopback-extension-logging*.tgz dist *.tsbuildinfo package","pretest":"npm run build","test":"lb-mocha \"dist/__tests__/**/*.js\"","verify":"npm pack && tar xf loopback-extension-logging*.tgz && tree package && npm run clean"},"publishConfig":{"access":"public"},"peerDependencies":{"@loopback/core":"^4.0.0","@loopback/rest":"^12.0.0"},"dependencies":{"fluent-logger":"^3.4.1","morgan":"^1.10.0","tslib":"^2.4.0","winston":"^3.7.2","winston-transport":"^4.5.0"},"devDependencies":{"@loopback/build":"^9.0.0","@loopback/core":"^4.0.0","@loopback/eslint-config":"^13.0.0","@loopback/rest":"^12.0.0","@loopback/testlab":"^5.0.0","@types/morgan":"^1.9.3","@types/node":"^14.18.21"},"bugs":{"url":"https://github.com/loopbackio/loopback-next/issues"},"homepage":"https://github.com/loopbackio/loopback-next#readme","_id":"@a736921/logging@0.11.0","_nodeVersion":"14.6.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-6lJ+60ClnA9NN2H4uqPQ7BTZhobYjX8dpKnyaQ3T8NCbYIuIrELWNuFirxSwmIHFWi0Ee7QjXwxoXRq6c9EeAg==","shasum":"09079e9e05d0d6a71308f9780165dba686bafe80","tarball":"https://registry.npmjs.org/@a736921/logging/-/logging-0.11.0.tgz","fileCount":40,"unpackedSize":63280,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAd3t6CaSn0Q5bmqpJ7tnUc581kWQihl0tKO2cFjfRxiAiEAhiOilTpZDacWUgcaZZu3/OcUpN60o9nGItPLKUCS+Mg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJipMwvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmplLA/+MvgGf+qIod2C3GjSOrZgBJcTz5Zbv5mEyL4PtAwaVFqZjhml\r\n7albq3qF76j6k+QjcIxDbvpPAePxgw0jzDHUdnUvAbXS1VZ62M/lV0fsA+ap\r\nJRytK6AYF9Vyw0cI8m27zfn8VB/vFGGjwy47bCfvXcXSQbrYMsIhWPqHZ0/a\r\n0688a6fQdTHaKbOgxUJAWCS2TidMdfZOKtFr2wMcBplol/sqSZVdKoVQoxMs\r\niUaEiQIJIGPgWyQaqbTIhputX6WLy02PDpQkxVoLgllfVPEh0XMAOiFEdIhU\r\nP8egApUE7kDQ85ks3UdP5r8UGekIF212jn3jgT7F9goaavwr28hksbSCUQP6\r\nKyeCpt3V/cMGS2vOPZXblGI/6yAH8QMzPtYbQyQFe1YSdrgTaIlwMAlEfjqv\r\n3DDtTb9aQLh3BB4UxPehr0nIAUSjETXT5DgYjbkUh+XmSggcT9NLGubRSWU9\r\nTsX03oTiiXO8UoaslVcYsMnfofRwIRe/D299mirol5r6Zx1hggkVfkfBKwdr\r\nLy4U8weeqYSPHRswp4cu/pC7BIXUBX7K2rN1TDQ/Idg7AaUIDKkt5f2cZooS\r\nuKd+9U5SmFslt4jZDej7B0CKfAFPq5pguY0lLKFLKEZhw9jQgxQIy7kd3QX5\r\n6XD+vyDZNhLKFLG0FX//uLzn+3G8Y5I55go=\r\n=C05o\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"a736921","email":"a736921@gmail.com"},"directories":{},"maintainers":[{"name":"a736921","email":"a736921@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/logging_0.11.0_1654967343505_0.6473963560371652"},"_hasShrinkwrap":false}},"maintainers":[{"name":"a736921","email":"a736921@gmail.com"}],"description":"An extension exposes logging for Winston and Fluentd with LoopBack 4","homepage":"https://github.com/loopbackio/loopback-next#readme","keywords":["LoopBack","Cloud Native","Fluentd","Winston","Logging"],"repository":{"type":"git","url":"git+https://github.com/loopbackio/loopback-next.git","directory":"extensions/logging"},"author":{"name":"IBM Corp. and LoopBack contributors"},"bugs":{"url":"https://github.com/loopbackio/loopback-next/issues"},"license":"MIT","readme":"# @loopback/logging\n\nThis module contains a component provides logging facilities based on\n[Winston](https://github.com/winstonjs/winston) and\n[Fluentd](https://github.com/fluent/fluent-logger-node).\n\n## Stability: ⚠️Experimental⚠️\n\n> Experimental packages provide early access to advanced or experimental\n> functionality to get community feedback. Such modules are published to npm\n> using `0.x.y` versions. Their APIs and functionality may be subject to\n> breaking changes in future releases.\n\n## Architecture overview\n\n![logging-component](logging-component.png)\n\n## Installation\n\n```sh\nnpm install --save @loopback/logging\n```\n\n## Basic use\n\nThe component should be loaded in the constructor of your custom Application\nclass.\n\nStart by importing the component class:\n\n```ts\nimport {LoggingComponent} from '@loopback/logging';\n```\n\nIn the constructor, add the component to your application:\n\n```ts\nthis.component(LoggingComponent);\n```\n\nNow your application can add a controller as follows to leverage the logging\nfacilities:\n\n```ts\nimport {inject} from '@loopback/core';\nimport {WinstonLogger, logInvocation} from '@loopback/logging';\nimport {get, param} from '@loopback/rest';\n\nclass MyController {\n  // Inject a winston logger\n  @inject(LoggingBindings.WINSTON_LOGGER)\n  private logger: WinstonLogger;\n\n  // http access is logged by a global interceptor\n  @get('/greet/{name}')\n  // log the `greet` method invocations\n  @logInvocation()\n  greet(@param.path.string('name') name: string) {\n    return `Hello, ${name}`;\n  }\n\n  @get('/hello/{name}')\n  hello(@param.path.string('name') name: string) {\n    // Use the winston logger explicitly\n    this.logger.log('info', `greeting ${name}`);\n    return `Hello, ${name}`;\n  }\n}\n```\n\n## Configure the logging component\n\nThe logging component can be configured as follows:\n\n```ts\napp.configure(LoggingBindings.COMPONENT).to({\n  enableFluent: false, // default to true\n  enableHttpAccessLog: true, // default to true\n});\n```\n\n{% include note.html content=\"this.configure() must be called before\nthis.component() to take effect.\" %}\n\n- `enableFluent`: Enable logs to be sent to Fluentd\n- `enableHttpAccessLog`: Enable all http requests to be logged via a global\n  interceptor\n\nThe component contributes bindings with keys declared under `LoggingBindings`\nnamespace as follows:\n\n- FLUENT_SENDER - A fluent sender\n- WINSTON_LOGGER - A winston logger\n- WINSTON_TRANSPORT_FLUENT - A fluent transport for winston\n- WINSTON_INTERCEPTOR - A local interceptor set by `@logInvocation` to log\n  method invocations\n- WINSTON_HTTP_ACCESS_LOGGER - A global interceptor that logs http access with\n  [Morgan](https://github.com/expressjs/morgan) format\n\nThe fluent sender and transport for winston can be configured against\n`FLUENT_SENDER`:\n\n```ts\nimport {LoggingBindings} from '@loopback/logging';\n\napp.configure(LoggingBindings.FLUENT_SENDER).to({\n  host: process.env.FLUENTD_SERVICE_HOST ?? 'localhost',\n  port: +(process.env.FLUENTD_SERVICE_PORT_TCP ?? 24224),\n  timeout: 3.0,\n  reconnectInterval: 600000, // 10 minutes\n});\n```\n\nThe winston logger can be configured against `LoggingBindings.WINSTON_LOGGER`:\n\n```ts\nimport {LoggingBindings} from '@loopback/logging';\n\nctx.configure<LoggerOptions>(LoggingBindings.WINSTON_LOGGER).to({\n  level: 'info',\n  format: format.json(),\n  defaultMeta: {framework: 'LoopBack'},\n});\n```\n\nThe winston logger accepts two types of extensions to the following extension\npoints:\n\n- WINSTON_TRANSPORT = 'logging.winston.transport'\n- WINSTON_FORMAT = 'logging.winston.format'\n\n```ts\nimport {extensionFor} from '@loopback/core';\nimport {format} from 'winston';\nimport {\n  WINSTON_FORMAT,\n  WINSTON_TRANSPORT,\n  WinstonFormat,\n  WinstonTransports,\n} from '@loopback/logging';\n\nconst myFormat: WinstonFormat = format((info, opts) => {\n  console.log(info);\n  return false;\n})();\n\nctx\n  .bind('logging.winston.formats.myFormat')\n  .to(myFormat)\n  .apply(extensionFor(WINSTON_FORMAT));\nctx\n  .bind('logging.winston.formats.colorize')\n  .to(format.colorize())\n  .apply(extensionFor(WINSTON_FORMAT));\n\nconst consoleTransport = new WinstonTransports.Console({\n  level: 'info',\n  format: format.combine(format.colorize(), format.simple()),\n});\nctx\n  .bind('logging.winston.transports.console')\n  .to(consoleTransport)\n  .apply(extensionFor(WINSTON_TRANSPORT));\n```\n\nIf no transport is contributed, the winston logger uses the\n[console transport](https://github.com/winstonjs/winston/blob/master/docs/transports.md#console-transport).\n\nNo default format is configured for the winston logger.\n\nThe access log interceptor can also be configured to customize\n[Morgan format and options](https://github.com/expressjs/morgan#morganformat-options):\n\n```ts\nctx\n  .configure(LoggingBindings.WINSTON_HTTP_ACCESS_LOGGER)\n  .to({format: 'combined'});\n```\n\n## Contributions\n\n- [Guidelines](https://github.com/loopbackio/loopback-next/blob/master/docs/CONTRIBUTING.md)\n- [Join the team](https://github.com/loopbackio/loopback-next/issues/110)\n\n## Tests\n\nRun `npm test` from the root folder.\n\nThe acceptance test against fluentd is available as a separate package at\n`acceptance/extension-logging-fluentd`.\n\n## Contributors\n\nSee\n[all contributors](https://github.com/loopbackio/loopback-next/graphs/contributors).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}