An open API service indexing awesome lists of open source software.

https://github.com/omrilotan/consigliere

🍝 A simple to use JSON logger
https://github.com/omrilotan/consigliere

json log logger logging

Last synced: about 2 months ago
JSON representation

🍝 A simple to use JSON logger

Awesome Lists containing this project

README

          

# consigliere

🍝 A simple-to-use JSON logger

> ### β€’ Quick to start β€’ Intuitive interface β€’ Rich with customisation.

## Quick use logger

Zero configuration logger out-of-the box use

```js
import { logger } from "consigliere";

logger.debug("Something just happened", { detail: "Something" });
// {"message":"Something just happened","detail":"Something","level":"debug"}

logger.error(new Error("Something must have gone horribly wrong"));
// {"message":"Something must have gone horribly wrong","stack":"Error: Something must have gone horribly wrong\n at…","name":"Error","level":"error"}
```

| ![](https://user-images.githubusercontent.com/516342/134087468-7c45d5c6-dd07-4428-b6b2-76133817fdd4.gif)
| -

## Create new Logger instances

```js
import { Logger } from "consigliere";

const logger = new Logger();
```

## Change minimal log level

Silence anything below a certain log level

```js
import { Logger } from "consigliere";

const logger = new Logger({ level: "warn" });
logger.info("I have a message to relay"); // nothing happens

logger.warn("Something worrying happened"); // logs record
```

## Use your own set of log levels with a strong typescript signature

```js
import { Logger } from "consigliere";

const levels = ["low", "medium", "high"] as const;
const logger = new Logger({
levels,
level: "medium",
});
logger.low("I have something to show you"); // Does not log record
logger.medium("I have a message to relay"); // Logs record
logger.high("Something worrying happened"); // Logs record
logger.error("Something must have gone horribly wrong"); // Typescript error - "error" is not a valid log level
```

## Define alternative logging devices

```ts
import { Logger } from "consigliere";

const logger = new Logger({
device: (json: string): boolean => navigator.sendBeacon("/log", json),
});
```

## Customise output with "parser"

```js
import { Logger, NORMALISE_VALUES, NORMALISE, RAW } from "consigliere";

// JSON string
const logger = new Logger();
const logger = new Logger({ parser: NORMALISE });

// Output the raw object
const logger = new Logger({ parser: false });
const logger = new Logger({ parser: RAW });

// Stringify values of the record object
const logger = new Logger({ parser: NORMALISE_VALUES });

// Parse the record yourself
const logger = new Logger({
parser: function ({ application, ...record }) {
return JSON.stringify({
application,
level: this.level,
records: [record],
});
},
});
```

## Add constant fields to each record of the logger

```js
const logger = new Logger({
fields: {
application: "my-app",
version: "0.0.1",
},
});
```

## Add dynamic fields to each record of the logger

```js
const start = Date.now();
const logger = new Logger({
dynamicFields: {
duration: () => Date.now() - start,
},
});
```