# @jsenv/logger

> Control verbosity of logs during a function execution.

Latest version **4.1.1** (published 2022-06-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install @jsenv/logger
pnpm add @jsenv/logger
yarn add @jsenv/logger
bun add @jsenv/logger
```

## Health

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

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 4.1.1 |
| Published | 2022-06-07 |
| First published | 2019-09-02 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM |
| Node | >=16.13.0 |
| Dependencies | 0 |
| Unpacked size | 7.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | dmail |
| Maintainers | jsenv-admin, dmail |

## Links

- npm: https://www.npmjs.com/package/@jsenv/logger
- Repository: https://github.com/jsenv/jsenv-logger
- Homepage: https://github.com/jsenv/jsenv-logger#readme
- Issues: https://github.com/jsenv/jsenv-logger/issues
- npm.io page: https://npm.io/package/@jsenv/logger

## Recent versions

- 4.1.1 (latest) — 2022-06-07
- 4.1.0 — 2022-06-07
- 4.0.1 — 2021-05-12
- 4.0.0 — 2020-12-30
- 3.4.0 — 2020-09-28
- 3.3.1 — 2020-01-29
- 3.3.0 — 2020-01-14
- 3.2.0 — 2019-12-19
- 3.1.0 — 2019-10-22
- 1.0.0 — 2019-09-02

## README

# logger

Control verbosity of logs during a function execution.

[![npm package](https://img.shields.io/npm/v/@jsenv/logger.svg?logo=npm&label=package)](https://www.npmjs.com/package/@jsenv/logger)

You want to use `@jsenv/logger` when you have many logs with different purposes and controls which type of logs are actually written.

# Installation

```console
npm install @jsenv/logger
```

# Documentation

## createLogger

`createLogger` is a function receiving a `logLevel` and returning a `logger` object.

```js
import { createLogger } from "@jsenv/logger"

const functionWithLogs = ({ logLevel }) => {
  const logger = createLogger({ logLevel })

  logger.debug("start doing whetevr")
  logger.info("some useful info")
  logger.debug("doing whatever is done")
  logger.warn("be careful about blah-blah")
  logger.error("oops an error occured while doing whatever")
}

functionWithLogs({ logLevel: "debug" })
functionWithLogs({ logLevel: "info" })
functionWithLogs({ logLevel: "warn" })
functionWithLogs({ logLevel: "error" })
functionWithLogs({ logLevel: "off" })
```

— source code at [src/createLogger.js](./src/createLogger.js).

### logLevel

`logLevel` parameter is a string controlling verbosity of the returned `logger`.

The possible logLevel values are:

- `"off"`
- `"debug"`
- `"info"`
- `"warn"`
- `"error"`

If you are rigorous, each logLevel value is exported as a constant that you can use like this:

```js
import { createLogger, LOG_LEVEL_INFO } from "@jsenv/logger"

createLogger({ logLevel: LOG_LEVEL_INFO })
```

## logger

`logger` is an object with methods logging a message with a given level.<br />
It is returned by `createLogger`, and has the following shape: `{ debug, info, warn, error }`. Each method calls the corresponding console method or do nothing depending on the `logLevel`.

```js
import { createLogger } from "@jsenv/logger"

const logger = createLogger({ logLevel: "info" })
logger.debug("hello")
```

Logs nothing

```js
import { createLogger } from "@jsenv/logger"

const logger = createLogger({ logLevel: "info" })
logger.info("hello")
```

Logs `Hello`

## Migration from console

Using `@jsenv/logger` means converting console methods into logger methods. `console.info` becomes `logger.info` and so on.

But keep in mind there is no `logger.log`. This is because a log level named "log" would not fit into the log level hierachy below.

```
error > warn > info > debug
```

It means you have to convert `console.log` into `logger.debug` or `logger.info`.

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