# @studiohyperdrive/logger

> SHD logging module: an abstraction on console.log for both frontend as backend (Node.js).

Latest version **1.1.4** (published 2025-05-05) · ISC license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

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

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 1.1.4 |
| Published | 2025-05-05 |
| First published | 2018-09-25 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 5 |
| Unpacked size | 100.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Niels Bril |
| Maintainers | jeroenvalcke, tom-odb, brilniels, shd-developer, thomasbormans, sanderh, laurenspeeters, rednas, denisvalcke, ibenvandeveire, ian-emsens-shd, wouterheirstrate, bertyhell, ekincia, npieter, wouterbas, reunefe |

## Links

- npm: https://www.npmjs.com/package/@studiohyperdrive/logger
- Repository: https://github.com/studiohyperdrive/logger
- Issues: https://github.com/studiohyperdrive/logger/issues
- npm.io page: https://npm.io/package/@studiohyperdrive/logger

## Dependencies (5)

- [signale](https://npm.io/package/signale.md) 1.4.0
- [winston](https://npm.io/package/winston.md) 3.2.1
- [dateformat](https://npm.io/package/dateformat.md) 3.0.3
- [winston-transport](https://npm.io/package/winston-transport.md) 4.3.0
- [winston-daily-rotate-file](https://npm.io/package/winston-daily-rotate-file.md) 3.8.0

## Recent versions

- 1.1.4 (latest) — 2025-05-05
- 1.1.3 — 2024-08-01
- 1.1.2 — 2023-06-21
- 1.1.2-0 — 2023-06-21
- 1.1.1 — 2019-03-02
- 1.1.0 — 2019-03-02
- 1.0.1 — 2019-01-10
- 1.0.0 — 2018-11-05
- 0.0.3 — 2018-10-22
- 0.0.2 — 2018-10-22
- 0.0.1 — 2018-09-25

## README

<h1 align="center">
@studiohyperdrive/logger
</h1>
<p align="center">
    <a href="#"><img src="https://img.shields.io/npm/v/@studiohyperdrive/logger.svg?colorB=1C1676"></a>
    <a href="#"><img src="https://img.shields.io/npm/dt/@studiohyperdrive/logger.svg?colorB=785FC8"></a>
    <a href="#"><img src="https://img.shields.io/bundlephobia/min/@studiohyperdrive/logger.svg?colorB=82BBED"></a>
    <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-blue.svg?colorB=F342D7"></a>
</p>
<p align="center">
    <b>One logger to rule them all&nbsp;&nbsp;🚀</b>
    <br>
    <sub>Supports browser console and Node.js, configurable and MIT licensed</sub>
</p>

---

## Table of Contents ##

* [Installation](#installation)
* [Browser](#browser)
  * [Usage](#usage)
  * [Overloads](#overloads)
  * [Configuration](#configuration)
    * [Default configuration](#default-configuration)
* [Node\.js](#nodejs)
  * [Usage](#usage-1)
  * [Overloads](#overloads-1)
  * [Configuration](#configuration-1)
    * [Default configuration](#default-configuration-1)
  * [Slack](#slack)
* [Snippets](#snippets)
* [Roadmap](#roadmap)
* [Contributing](#contributing)
* [License](#license)
* [About us](#about-us)

---

**@studiohyperdrive/logger** is a logging library that supports both the browser and Node.js by exporting different bundles for both targets.

## Installation ##

Install through npm:

```shell
$ npm install @studiohyperdrive/logger
```

Install through yarn:

```shell
$ yarn add @studiohyperdrive/logger
```

## Browser ##

For usage with the browser a UMD and ESModule bundle are exported. It provides a `Logger` class which is an abstraction on console.log based on `high-console`.

### Usage ###

Create an instance of the logger and export it for usage in your application:

**logger.js**

```js
import { Logger } from "@studiohyperdrive/logger";

export const logger = new Logger();
```

**app.js**

```js
import { logger } from "./logger";

logger.debug("some debug message", { key: "value" });
logger.info("some info message", { key: "value" });
logger.success("some success message", { key: "value" });
logger.warn("some warn message", { key: "value" });
logger.error("some error message", { key: "value" });
```

**Output**

<p align="center">
    <img src ="https://github.com/studiohyperdrive/logger/blob/master/assets/browser-output.png" style="max-width:800px;border-radius:10px"/>
</p>

### Overloads ###

As documented in the [typings](https://github.com/studiohyperdrive/logger/blob/master/typings.ts), each method has several overloads:

```js
logger.info("some info message", { key: "value" }); // Message and object
logger.info("some info message"); // Message
logger.info({ key: "value" }); // Object
logger.info("some info message", { key: "value" }, true); // Force a log when loglevel is disabled
```

### Configuration ###

When creating an instance of the `Logger` class configuration can be provided by passing an options object to the constructor.

```js
import { Logger } from "@studiohyperdrive/logger";

export const logger = new Logger({
    enabled: [
        "error",
    ],
});
```

#### Default configuration ####

The default configuration is the following:

```js
{
    enabled: [ // Enabled loglevels
        "debug",
        "info",
        "success",
        "warn",
        "error"
    ],
    timestamp: true
}
```

## Node.js ##

For usage with Node.js a CommonJS bundle is exported. It provides a `Logger` class which is an abstraction on console.log based on `signale`.

_Other features_:
- Logging to the filesystem using daily rotating files
    * all
    * warn
    * error

### Usage ###

Create an instance of the logger and export it for usage in your application:

**logger.js**

```js
const Logger = require("@studiohyperdrive/logger");

const logger = new Logger();

module.exports = logger;
```

**app.js**

```js
const logger = require("./logger");

logger.debug("some debug message", { key: "value" });
logger.info("some info message", { key: "value" });
logger.cron("some cron message", { key: "value" });
logger.db("some db message", { key: "value" });
logger.success("some success message", { key: "value" });
logger.warn("some warn message", { key: "value" });
logger.error("some error message", { key: "value" });
```

**Output**

<p align="center">
    <img src ="https://github.com/studiohyperdrive/logger/blob/master/assets/nodejs-output.png" style="max-width:800px;border-radius:10px"/>
</p>

### Overloads ###

As documented in the [typings](https://github.com/studiohyperdrive/logger/blob/master/typings.ts), each method has several overloads:

```js
logger.info("some info message", { key: "value" }); // Message and object
logger.info("some info message"); // Message
logger.info({ key: "value" }); // Object
logger.info("some info message", { key: "value" }, true); // Force a log when loglevel is disabled
```

### Configuration ###

When creating an instance of the `Logger` class configuration can be provided by passing an options object to the constructor.

```js
const Logger = require("@studiohyperdrive/logger");

const logger = new Logger({
    enabled: [
        "error",
    ],
    filesystem: {
        enabled: true,
        path: "logs",
    },
});

module.exports = logger;
```

#### Default configuration ####

The default configuration is the following:

```js
{
    enabled: [ // Enabled loglevels
        "debug",
        "info",
        "cron",
        "db",
        "success",
        "warn",
        "error"
    ],
    filesystem: {
        enabled: true, // Enable logging to filesystem
        path: "logs" // Path for the filesystem logs (from root)
    },
    timestamp: true,
}
```

## Snippets ##

Snippets for JavaScript and TypeScript can be found in the [snippets folder](https://github.com/studiohyperdrive/logger/tree/master/snippets).

## Roadmap ##

We are continuously looking to improve this package. If you have any feedback or ideas, please let us know.

The roadmap as is today:

* ...

## Contributing

Feel free to provide feedback, open issues or create pull-requests to this repository.

## License ##

**@studiohyperdrive/logger** is [MIT licensed](https://github.com/studiohyperdrive/logger/blob/master/LICENSE) by [Studio Hyperdrive](https://www.studiohyperdrive.be/).

## About us ##

[Studio Hyperdrive](https://www.studiohyperdrive.be/) is an experienced digital development studio focussed on all things JavaScript. Already 18 strong. Based in Antwerp & Ghent! With a handpicked set of skills we build anything from websites to chatbots and immersive cross reality experiences. Feel free to contact us through our website.

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