
🖋️ @e280/sten
- logging utility
- zero dependencies
- an https://e280.org/ project
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!"))
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 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
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 environmentcolorful— full ansi color supportcolorless— 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 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(),
)
💖 made with open source love
build with us at https://e280.org/ but only if you're cool