> Chop and cut Angular logs like a professional lumberjack.

<p align="center">
 <img width="40%" height="40%" src="https://pub-2294738bc2c249ff8040505bf960c018.r2.dev/logo.svg">
</p>

<a style="font-size:11px;" href="http://instagram.com/octopez">
Logo by Felipe Zambrano
</a>

<br />

[![MIT](https://img.shields.io/packagist/l/doctrine/orm.svg?style=flat-square)]()
[![commitizen](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?style=flat-square)]()
[![PRs](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)]()
[![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![All Contributors](https://img.shields.io/badge/all_contributors-7-orange.svg?style=flat-square)](#contributors-)
[![ngworker](https://img.shields.io/badge/ngworker-%40-red)](https://github.com/ngworker/)
[![Wallaby.js](https://img.shields.io/badge/wallaby.js-powered-blue.svg?style=flat&logo=github)](https://wallabyjs.com/oss/)

[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=ngworker_lumberjack&metric=ncloc)](https://sonarcloud.io/dashboard?id=ngworker_lumberjack)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=ngworker_lumberjack&metric=coverage)](https://sonarcloud.io/dashboard?id=ngworker_lumberjack)
[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=ngworker_lumberjack&metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=ngworker_lumberjack)  
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ngworker_lumberjack&metric=alert_status)](https://sonarcloud.io/dashboard?id=ngworker_lumberjack)
[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=ngworker_lumberjack&metric=security_rating)](https://sonarcloud.io/dashboard?id=ngworker_lumberjack)
[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=ngworker_lumberjack&metric=reliability_rating)](https://sonarcloud.io/dashboard?id=ngworker_lumberjack)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=ngworker_lumberjack&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=ngworker_lumberjack)

Lumberjack is a versatile Angular logging library, specifically designed to be extended and customized. It provides a
few simple [log drivers](https://en.wikipedia.org/wiki/Log_driving) (logging mechanisms, transports, log drivers)
out-of-the-box. It's easy to enable the built-in log drivers or create and use custom log drivers.

> For support, please refer to the `#lumberjack` channel in [the NgWorkers Discord server](https://discord.gg/UDUa8MA6Ef).

## Features

- ✅ Configurable multilevel logging
- ✅ Plugin-based log driver architecture
- ✅ Robust error handling
- ✅ Console driver
- ✅ HTTP driver
- ✅ Logger base class
- ✅ Lumberjack service
- ✅ Best practices guide

## Installation

Lumberjack is published as the `@ngworker/lumberjack` package.

| Toolchain | Command                            |
| --------- | ---------------------------------- |
| NPM CLI   | `npm install @ngworker/lumberjack` |
| PNPM CLI  | `pnpm add @ngworker/lumberjack`    |
| Yarn CLI  | `yarn add @ngworker/lumberjack`    |

## Documentation

Get access to the full [documentation](https://ngworker.github.io/lumberjack/)

## Wallaby.js

[![Wallaby.js](https://img.shields.io/badge/wallaby.js-powered-blue.svg?style=for-the-badge&logo=github)](https://wallabyjs.com/oss/)

Contributors to this repository are welcome to use the
[Wallaby.js OSS License](https://wallabyjs.com/oss/) to get
test results immediately as you type, and see the results in
your editor right next to your code.

## Contributors

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
  <tbody>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/NachoVazquez"><img src="https://avatars3.githubusercontent.com/u/9338604?v=4?s=100" width="100px;" alt="Nacho Vazquez"/><br /><sub><b>Nacho Vazquez</b></sub></a><br /><a href="https://github.com/ngworker/lumberjack/issues?q=author%3ANachoVazquez" title="Bug reports">🐛</a> <a href="https://github.com/ngworker/lumberjack/commits?author=NachoVazquez" title="Code">💻</a> <a href="https://github.com/ngworker/lumberjack/commits?author=NachoVazquez" title="Documentation">📖</a> <a href="#example-NachoVazquez" title="Examples">💡</a> <a href="#ideas-NachoVazquez" title="Ideas, Planning, & Feedback">🤔</a> <a href="#mentoring-NachoVazquez" title="Mentoring">🧑‍🏫</a> <a href="#maintenance-NachoVazquez" title="Maintenance">🚧</a> <a href="#projectManagement-NachoVazquez" title="Project Management">📆</a> <a href="https://github.com/ngworker/lumberjack/pulls?q=is%3Apr+reviewed-by%3ANachoVazquez" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/ngworker/lumberjack/commits?author=NachoVazquez" title="Tests">⚠️</a> <a href="#tool-NachoVazquez" title="Tools">🔧</a> <a href="#userTesting-NachoVazquez" title="User Testing">📓</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://dev.to/layzee/"><img src="https://avatars1.githubusercontent.com/u/6364586?v=4?s=100" width="100px;" alt="Lars Gyrup Brink Nielsen"/><br /><sub><b>Lars Gyrup Brink Nielsen</b></sub></a><br /><a href="https://github.com/ngworker/lumberjack/issues?q=author%3ALayZeeDK" title="Bug reports">🐛</a> <a href="https://github.com/ngworker/lumberjack/commits?author=LayZeeDK" title="Code">💻</a> <a href="https://github.com/ngworker/lumberjack/commits?author=LayZeeDK" title="Documentation">📖</a> <a href="#example-LayZeeDK" title="Examples">💡</a> <a href="#ideas-LayZeeDK" title="Ideas, Planning, & Feedback">🤔</a> <a href="#mentoring-LayZeeDK" title="Mentoring">🧑‍🏫</a> <a href="#maintenance-LayZeeDK" title="Maintenance">🚧</a> <a href="#projectManagement-LayZeeDK" title="Project Management">📆</a> <a href="https://github.com/ngworker/lumberjack/pulls?q=is%3Apr+reviewed-by%3ALayZeeDK" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/ngworker/lumberjack/commits?author=LayZeeDK" title="Tests">⚠️</a> <a href="#tool-LayZeeDK" title="Tools">🔧</a> <a href="#userTesting-LayZeeDK" title="User Testing">📓</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://www.santoshyadav.dev/"><img src="https://avatars3.githubusercontent.com/u/11923975?v=4?s=100" width="100px;" alt="Santosh Yadav"/><br /><sub><b>Santosh Yadav</b></sub></a><br /><a href="https://github.com/ngworker/lumberjack/commits?author=santoshyadavdev" title="Code">💻</a> <a href="https://github.com/ngworker/lumberjack/commits?author=santoshyadavdev" title="Documentation">📖</a> <a href="#example-santoshyadavdev" title="Examples">💡</a> <a href="#infra-santoshyadavdev" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#plugin-santoshyadavdev" title="Plugin/utility libraries">🔌</a> <a href="https://github.com/ngworker/lumberjack/commits?author=santoshyadavdev" title="Tests">⚠️</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://dzhavat.github.io/"><img src="https://avatars0.githubusercontent.com/u/1096332?v=4?s=100" width="100px;" alt="Dzhavat Ushev"/><br /><sub><b>Dzhavat Ushev</b></sub></a><br /><a href="https://github.com/ngworker/lumberjack/commits?author=dzhavat" title="Documentation">📖</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://twitter.com/AlexOkrushko"><img src="https://avatars0.githubusercontent.com/u/2830407?v=4?s=100" width="100px;" alt="Alex Okrushko"/><br /><sub><b>Alex Okrushko</b></sub></a><br /><a href="https://github.com/ngworker/lumberjack/commits?author=alex-okrushko" title="Code">💻</a> <a href="#ideas-alex-okrushko" title="Ideas, Planning, & Feedback">🤔</a> <a href="#mentoring-alex-okrushko" title="Mentoring">🧑‍🏫</a> <a href="#research-alex-okrushko" title="Research">🔬</a> <a href="https://github.com/ngworker/lumberjack/commits?author=alex-okrushko" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/serkan-sipahi-59b20081/"><img src="https://avatars.githubusercontent.com/u/1880749?v=4?s=100" width="100px;" alt="Bitcollage"/><br /><sub><b>Bitcollage</b></sub></a><br /><a href="https://github.com/ngworker/lumberjack/issues?q=author%3ASerkanSipahi" title="Bug reports">🐛</a> <a href="https://github.com/ngworker/lumberjack/commits?author=SerkanSipahi" title="Code">💻</a> <a href="https://github.com/ngworker/lumberjack/commits?author=SerkanSipahi" title="Documentation">📖</a> <a href="#ideas-SerkanSipahi" title="Ideas, Planning, & Feedback">🤔</a> <a href="#platform-SerkanSipahi" title="Packaging/porting to new platform">📦</a> <a href="https://github.com/ngworker/lumberjack/pulls?q=is%3Apr+reviewed-by%3ASerkanSipahi" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/ngworker/lumberjack/commits?author=SerkanSipahi" title="Tests">⚠️</a> <a href="#tool-SerkanSipahi" title="Tools">🔧</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/agroupp"><img src="https://avatars.githubusercontent.com/u/20857362?v=4?s=100" width="100px;" alt="Arthur Groupp"/><br /><sub><b>Arthur Groupp</b></sub></a><br /><a href="#ideas-agroupp" title="Ideas, Planning, & Feedback">🤔</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/SergeyCherman"><img src="https://avatars.githubusercontent.com/u/10699293?v=4?s=100" width="100px;" alt="Serg"/><br /><sub><b>Serg</b></sub></a><br /><a href="https://github.com/ngworker/lumberjack/commits?author=SergeyCherman" title="Documentation">📖</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/sumitparakh"><img src="https://avatars.githubusercontent.com/u/4236211?v=4?s=100" width="100px;" alt="Sumit Parakh"/><br /><sub><b>Sumit Parakh</b></sub></a><br /><a href="https://github.com/ngworker/lumberjack/commits?author=sumitparakh" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="http://patelvimal.github.io"><img src="https://avatars.githubusercontent.com/u/6451223?v=4?s=100" width="100px;" alt="vimal patel"/><br /><sub><b>vimal patel</b></sub></a><br /><a href="https://github.com/ngworker/lumberjack/commits?author=patelvimal" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://bento.me/ajit"><img src="https://avatars.githubusercontent.com/u/19947758?v=4?s=100" width="100px;" alt="Ajit Panigrahi"/><br /><sub><b>Ajit Panigrahi</b></sub></a><br /><a href="https://github.com/ngworker/lumberjack/commits?author=ajitzero" title="Documentation">📖</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://pbouillon.github.io"><img src="https://avatars.githubusercontent.com/u/22640284?v=4?s=100" width="100px;" alt="Pierre Bouillon"/><br /><sub><b>Pierre Bouillon</b></sub></a><br /><a href="#ideas-pBouillon" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/ngworker/lumberjack/commits?author=pBouillon" title="Tests">⚠️</a> <a href="https://github.com/ngworker/lumberjack/commits?author=pBouillon" title="Documentation">📖</a> <a href="https://github.com/ngworker/lumberjack/commits?author=pBouillon" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/dianjuar"><img src="https://avatars.githubusercontent.com/u/7026066?v=4?s=100" width="100px;" alt="Diego Julião"/><br /><sub><b>Diego Julião</b></sub></a><br /><a href="#ideas-dianjuar" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/ngworker/lumberjack/commits?author=dianjuar" title="Code">💻</a></td>
    </tr>
  </tbody>
</table>

<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification.
Contributions of any kind welcome!
