# @offirmo/practical-logger-core

> Common internal code for Offirmo’s practical logger

Latest version **3.1.0** (published 2021-01-03) · Unlicense license · 0 weekly downloads

## Install

```sh
npm install @offirmo/practical-logger-core
pnpm add @offirmo/practical-logger-core
yarn add @offirmo/practical-logger-core
bun add @offirmo/practical-logger-core
```

## Health

**Score 30/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.1.0 |
| Published | 2021-01-03 |
| First published | 2019-04-02 |
| Weekly downloads | 0 |
| License | Unlicense |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Unpacked size | 73.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Offirmo |
| Maintainers | offirmo |
| Keywords | logger, typescript |

## Links

- npm: https://www.npmjs.com/package/@offirmo/practical-logger-core
- Repository: https://github.com/Offirmo/offirmo-monorepo
- Homepage: https://github.com/Offirmo/offirmo-monorepo/tree/master/2-foundation/practical-logger-core
- Issues: https://github.com/Offirmo/offirmo-monorepo/issues
- npm.io page: https://npm.io/package/@offirmo/practical-logger-core

## Dependencies (1)

- [@offirmo/practical-logger-types](https://npm.io/package/@offirmo/practical-logger-types.md) ^3

## Alternatives

- [cli-color](https://npm.io/package/cli-color.md) — 3.4M weekly downloads
- [log](https://npm.io/package/log.md) — 1.3M weekly downloads
- [logstash-client](https://npm.io/package/logstash-client.md) — 4.5K weekly downloads
- [@nocobase/plugin-logger](https://npm.io/package/@nocobase/plugin-logger.md) — 2.0K weekly downloads
- [child-process-debug](https://npm.io/package/child-process-debug.md) — 695 weekly downloads

## Recent versions

- 3.1.0 (latest) — 2021-01-03
- 3.0.0 — 2020-06-30
- 2.1.1 — 2019-12-12
- 2.1.0 — 2019-11-18
- 2.0.1 — 2019-11-04
- 2.0.0 — 2019-10-27
- 1.1.1 — 2019-07-07
- 1.1.0 — 2019-06-30
- 1.0.0 — 2019-04-04
- 0.0.2 — 2019-04-03
- 0.0.1 — 2019-04-02

## README

<h1 align="center">
	Offirmo’s practical logger - Core (internal, reusable)<br>
	<a href="https://www.offirmo.net/offirmo-monorepo/0-doc/modules-directory/index.html">
		<img src="https://www.offirmo.net/offirmo-monorepo/0-doc/quality-seal/offirmos_quality_seal.svg" alt="Offirmo’s quality seal">
	</a>
</h1>

<p align="center">
	<a alt="npm package page"
	  href="https://www.npmjs.com/package/@offirmo/practical-logger-core">
		<img alt="npm badge"
		  src="https://img.shields.io/npm/v/@offirmo/practical-logger-core.svg">
	</a>
	<a alt="dependencies analysis"
	  href="https://david-dm.org/offirmo/offirmo-monorepo?path=2-foundation%2Fpractical-logger-core">
		<img alt="dependencies badge"
		  src="https://img.shields.io/david/offirmo/offirmo-monorepo.svg?path=2-foundation%2Fpractical-logger-core">
	</a>
	<a alt="bundle size evaluation"
	  href="https://bundlephobia.com/result?p=@offirmo/practical-logger-core">
		<img alt="bundle size badge"
		  src="https://img.shields.io/bundlephobia/minzip/@offirmo/practical-logger-core.svg">
	</a>
	<a alt="license"
	  href="https://unlicense.org/">
		<img alt="license badge"
		  src="https://img.shields.io/badge/license-public_domain-brightgreen.svg">
	</a>
	<img alt="maintenance status badge"
	  src="https://img.shields.io/maintenance/yes/2021.svg">
</p>

This is an **internal / technical** component of [Offirmo’s practical logger](https://practical-logger-js.netlify.app/).
* isomorphic code for node and browser
* TODO explain the interface pattern


## Usage

**This is most likely not what you are looking for!**

See the final implementations using this module:
* minimal no-op: [@offirmo/practical-logger-minimal-noop](https://www.npmjs.com/package/@offirmo/practical-logger-minimal-noop)
* browser: [@offirmo/practical-logger-browser](https://www.npmjs.com/package/@offirmo/practical-logger-browser)
* node: [@offirmo/practical-logger-node](https://www.npmjs.com/package/@offirmo/practical-loggernode)

**if you know what you are doing:**

While this module was made to be a component in a final logger sink,
it is a perfectly working logger
which will output JSON lines to stdout, corresponding to log lines,
in the same way [bunyan](https://github.com/trentm/node-bunyan) does.

```javascript
import { createLogger } from '@offirmo/practical-logger-core'

const logger = createLogger({ /* ... */ })

logger.verbose('foo', { bar: 42, baz: 33 })
```

Advanced usage:
```typescript
import { createLogger, LogPayload } from '@offirmo/practical-logger-core'

function sink(payload: LogPayload) {
    const {
        level,
        name,
        msg,
        time,
        err,
        details
    } = payload
    /* ... */
}

const logger = createLogger({ /* ... */ }, sink)

logger.verbose('foo', { bar: 42, baz: 33 })
```

---
_Source: https://npm.io/package/@offirmo/practical-logger-core · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
