- logging utility
- zero dependencies
- an https://e280.org/ project
- 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!"))
// defaults shown
export const logger = new Logger()
.setWriter(Logger.writers.auto())
.setColors(Logger.colors.auto())
.setTheme(Logger.themes.auto())
.setShaper(Logger.shapers.auto())
the logger ultimately emits to stdout or stderr via a writer — the available writers are:
auto
— (default) detect environment and automatically choosedeno
,node
, orconsole
console
— outputs to console.log and console.errornode
— outputs to process.stdout and process.stderrdeno
— outputs to Deno.stdout and Deno.stderrvoid
— outputs nothing
determines what happens when colors are used — available colors are:
auto
— (default) use color if it looks like we're in a color-supporting environmentcolorful
— full ansi color supportcolorless
— no colors (all color fns are duds)
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
a shaper is a fn that transforms the content before it is logged — the available shapers are:
auto
— (default) standard setup which combineserrors
andtimestamp
togethererrors
— displays error objects nicelytimestamp
— attaches a timestamp prefix to every messagenone
— 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(),
)
build with us at https://e280.org/ but only if you're cool