0.0.0-5 • Published 5 months ago

@e280/sten v0.0.0-5

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

npm.io

🖋️ @e280/sten

quick start

  • install sten
    npm install @e280/sten
  • make your logger
    import {Logger} from "@e280/sten"
    export const logger = new Logger()
  • log stuff
    await logger.log("hello world!")
    await logger.error("bad stuff", new Error("oh no!"))
    npm.io

customize the logger

// defaults shown
export const logger = new Logger()
  .setWriter(Logger.writers.auto())
  .setColors(Logger.colors.auto())
  .setTheme(Logger.themes.auto())
  .setShaper(Logger.shapers.auto())

writers

the logger ultimately emits to stdout or stderr via a writer — the available writers are:

  • auto(default) detect environment and automatically choose deno, node, or console
  • console — outputs to console.log and console.error
  • node — outputs to process.stdout and process.stderr
  • deno — outputs to Deno.stdout and Deno.stderr
  • void — outputs nothing

colors

determines what happens when colors are used — available colors are:

  • auto(default) use color if it looks like we're in a color-supporting environment
  • colorful — full ansi color support
  • colorless — no colors (all color fns are duds)

themes

defines where certain colors will be used:

  • auto(default) uses the basic theme (in the future this might auto-detect from an env var)
  • basic — standard colors, red errors, blue timestamps, etc

shapers

a shaper is a fn that transforms the content before it is logged — the available shapers are:

  • auto(default) standard setup which combines errors and timestamp together
  • errors — displays error objects nicely
  • timestamp — attaches a timestamp prefix to every message
  • none — does nothing (leaves content as-is)

you can make your own shaper like this:

import {asShaper} from "@e280/sten"

const myShaper = asShaper(context => ({
  stdout: items => items,
  stderr: items => items,
}))

you can apply multiple shapers together like this:

logger.setShaper(
  myShaper,
  myOtherCustomShaper,
  Logger.shapers.errors(),
  Logger.shapers.timestamps(),
)

or you can use combineShapers

import {combineShapers} from "@e280/sten"

const megaShaper = combineShapers(
  myShaper,
  myOtherCustomShaper,
  Logger.shapers.errors(),
  Logger.shapers.timestamps(),
)

💖 made with open source love

build with us at https://e280.org/ but only if you're cool

0.0.0-5

5 months ago

0.0.0-4

5 months ago

0.0.0-3

5 months ago

0.0.0-2

5 months ago

0.0.0-1

5 months ago