Skip to content

Commit b5c8e31

Browse files
docs: update formatters docs on logging and nextjs libraries (#252)
1 parent 3ddaa97 commit b5c8e31

File tree

2 files changed

+22
-17
lines changed

2 files changed

+22
-17
lines changed

guides/javascript.mdx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -236,15 +236,18 @@ The `@axiomhq/logging` library includes the following logging levels:
236236

237237
#### Formatters
238238

239-
Formatters are used to change the fields of a log before sending it to a transport. For example:
239+
Formatters are used to change the content of a log before sending it to a transport. For example:
240240

241241
```ts
242-
import { Logger } from "@axiomhq/logging";
243-
244-
const myCustomFormatter = (fields: Record<string, unknown>) => {
245-
const upperCaseKeys = Object.fromEntries(
246-
Object.entries(fields).map(([key, value]) => [key.toUpperCase(), value])
247-
);
242+
import { Logger, LogEvent } from "@axiomhq/logging";
243+
244+
const myCustomFormatter = (event: LogEvent) => {
245+
const upperCaseKeys = {
246+
...event,
247+
fields: Object.fromEntries(
248+
Object.entries(event.fields).map(([key, value]) => [key.toUpperCase(), value])
249+
),
250+
};
248251

249252
return upperCaseKeys;
250253
};

send-data/nextjs.mdx

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -300,13 +300,13 @@ The @axiomhq/nextjs library is part of the Axiom JavaScript SDK, an open-source
300300
```ts lib/axiom/server.ts [expandable]
301301
import axiomClient from '@/lib/axiom/axiom';
302302
import { Logger, AxiomJSTransport } from '@axiomhq/logging';
303-
import { createAxiomRouteHandler, serverContextFieldsFormatter } from '@axiomhq/nextjs';
303+
import { createAxiomRouteHandler, nextJsFormatters } from '@axiomhq/nextjs';
304304

305305
export const logger = new Logger({
306306
transports: [
307307
new AxiomJSTransport({ axiom: axiomClient, dataset: process.env.NEXT_PUBLIC_AXIOM_DATASET! }),
308308
],
309-
formatters: [serverContextFieldsFormatter],
309+
formatters: nextJsFormatters,
310310
});
311311

312312
export const withAxiom = createAxiomRouteHandler(logger);
@@ -328,11 +328,13 @@ The @axiomhq/nextjs library is part of the Axiom JavaScript SDK, an open-source
328328
import axiomClient from '@/lib/axiom/axiom';
329329
import { Logger, AxiomJSTransport } from '@axiomhq/logging';
330330
import { createUseLogger, createWebVitalsComponent } from '@axiomhq/react';
331+
import { nextJsFormatters } from '@axiomhq/nextjs/client';
331332

332333
export const logger = new Logger({
333334
transports: [
334335
new AxiomJSTransport({ axiom: axiomClient, dataset: process.env.NEXT_PUBLIC_AXIOM_DATASET! }),
335336
],
337+
formatters: nextJsFormatters,
336338
});
337339

338340
const useLogger = createUseLogger(logger);
@@ -593,7 +595,7 @@ import { Logger, AxiomJSTransport } from '@axiomhq/logging';
593595
import {
594596
createAxiomRouteHandler,
595597
getLogLevelFromStatusCode,
596-
serverContextFieldsFormatter,
598+
nextJsFormatters,
597599
transformRouteHandlerErrorResult,
598600
transformRouteHandlerSuccessResult
599601
} from '@axiomhq/nextjs';
@@ -636,7 +638,7 @@ import { Logger, AxiomJSTransport } from '@axiomhq/logging';
636638
import {
637639
createAxiomRouteHandler,
638640
getLogLevelFromStatusCode,
639-
serverContextFieldsFormatter,
641+
nextJsFormatters,
640642
transformRouteHandlerErrorResult,
641643
transformRouteHandlerSuccessResult
642644
} from '@axiomhq/nextjs';
@@ -727,7 +729,7 @@ To customize this behavior, provide a custom `logLevelByStatusCode()` function w
727729
import { Logger, AxiomJSTransport, LogLevel } from '@axiomhq/logging';
728730
import {
729731
createAxiomRouteHandler,
730-
serverContextFieldsFormatter,
732+
nextJsFormatters,
731733
transformRouteHandlerErrorResult,
732734
} from '@axiomhq/nextjs';
733735

@@ -764,7 +766,7 @@ Internally, the status code gets captured in the `transformErrorResult()` functi
764766
import { Logger, AxiomJSTransport, LogLevel } from '@axiomhq/logging';
765767
import {
766768
createAxiomRouteHandler,
767-
serverContextFieldsFormatter,
769+
nextJsFormatters,
768770
transformRouteHandlerErrorResult,
769771
} from '@axiomhq/nextjs';
770772
import { isRedirectError } from 'next/dist/client/components/redirect-error';
@@ -776,7 +778,7 @@ export const logger = new Logger({
776778
transports: [
777779
new AxiomJSTransport({ axiom: axiomClient, dataset: process.env.NEXT_PUBLIC_AXIOM_DATASET! }),
778780
],
779-
formatters: [serverContextFieldsFormatter],
781+
formatters: nextJsFormatters,
780782
});
781783

782784
export const getNextErrorStatusCode = (error: Error & { digest?: string }) => {
@@ -821,7 +823,7 @@ export const withAxiom = createAxiomRouteHandler(logger, {
821823
822824
### Server execution context
823825
824-
The `serverContextFieldsFormatter` function adds the server execution context to the logs, this is useful to have information about the scope where the logs were generated.
826+
The `serverContextFieldsFormatter` function included in the `nextJsFormatters` adds the server execution context to the logs, this is useful to have information about the scope where the logs were generated.
825827
826828
By default, the `createAxiomRouteHandler` function adds a `request_id` field to the logs using this server context and the server context fields formatter.
827829
@@ -833,7 +835,7 @@ The fields in the store are added to the `fields` object of the log report. For
833835
834836
```ts [expandable]
835837
import { Logger, AxiomJSTransport } from '@axiomhq/logging';
836-
import { createAxiomRouteHandler, serverContextFieldsFormatter } from '@axiomhq/nextjs';
838+
import { createAxiomRouteHandler, nextJsFormatters } from '@axiomhq/nextjs';
837839
import { NextRequest } from 'next/server';
838840

839841
import axiomClient from '@/lib/axiom/axiom';
@@ -842,7 +844,7 @@ export const logger = new Logger({
842844
transports: [
843845
new AxiomJSTransport({ axiom: axiomClient, dataset: process.env.NEXT_PUBLIC_AXIOM_DATASET! }),
844846
],
845-
formatters: [serverContextFieldsFormatter],
847+
formatters: nextJsFormatters,
846848
});
847849

848850
export const withAxiom = createAxiomRouteHandler(logger, {

0 commit comments

Comments
 (0)