- 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, orconsoleconsoleβ 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 combineserrorsandtimestamptogethererrorsβ 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

