Public
Like
axiom-logger
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Structured logging to Axiom for Val Town.
Set environment variables in your val:
AXIOM_TOKEN- API token with ingest permissionAXIOM_DATASET- Dataset name
import { Hono } from "npm:hono@4";
import {
type AxiomEnv,
axiomMiddleware,
} from "https://esm.town/v/kamalnrf/axiom-logger/hono.ts";
const app = new Hono<AxiomEnv>();
app.use(axiomMiddleware());
app.get("/", (c) => {
c.var.log.info("hello", { userId: 123 });
return c.json({ ok: true });
});
export default app.fetch;
import { H3 } from "npm:h3@^2";
import { axiomMiddleware } from "https://esm.town/v/kamalnrf/axiom-logger/h3.ts";
const app = new H3();
axiomMiddleware().forEach((m) => app.use(m));
app.get("/", (event) => {
event.context.log.info("hello", { userId: 123 });
return { ok: true };
});
export default app.fetch;
import { withLogger } from "https://esm.town/v/kamalnrf/axiom-logger/standalone.ts";
export default withLogger({ valName: "daily-cleanup" }, async (log) => {
log.info("starting");
// ... do work
log.info("done", { processed: 42 });
});
axiomMiddleware({
dataset: "my-dataset", // override env var
token: "...", // override env var
console: "warn", // console output level: "debug" | "info" | "warn" | "error" | "none"
defaultFields: { env: "prod" },
onError: (err) => console.error(err),
});
log.debug(message, fields?)
log.info(message, fields?)
log.warn(message, fields?)
log.error(message, fields?)