Create a Custom Driver
Implement LumberjackLogDriver
and register it with lumberjackLogDriverToken (multi: true) so Lumberjack
forwards matching logs to your sink.
Before you start
Section titled “Before you start”- Familiarity with how log drivers work.
- Lumberjack registered via
provideLumberjack().
-
Implement the driver
Each method receives a
LumberjackLogDriverLogwithformattedLogandlog.import { inject, Injectable } from '@angular/core'; import { LumberjackLogDriver, LumberjackLogDriverConfig, LumberjackLogDriverLog, lumberjackLogDriverConfigToken, } from '@ngworker/lumberjack'; @Injectable() export class AnalyticsDriver implements LumberjackLogDriver { static readonly driverIdentifier = 'AnalyticsDriver'; readonly config: LumberjackLogDriverConfig = { ...inject(lumberjackLogDriverConfigToken), identifier: AnalyticsDriver.driverIdentifier, }; logCritical({ formattedLog }: LumberjackLogDriverLog): void { console.error(formattedLog); } logDebug({ formattedLog }: LumberjackLogDriverLog): void { console.debug(formattedLog); } logError({ formattedLog }: LumberjackLogDriverLog): void { console.error(formattedLog); } logInfo({ formattedLog }: LumberjackLogDriverLog): void { console.info(formattedLog); } logTrace({ formattedLog }: LumberjackLogDriverLog): void { console.trace(formattedLog); } logWarning({ formattedLog }: LumberjackLogDriverLog): void { console.warn(formattedLog); } } -
Provide it with the multi token
import { Provider } from '@angular/core'; import { lumberjackLogDriverToken } from '@ngworker/lumberjack'; import { AnalyticsDriver } from './analytics.driver'; export function provideAnalyticsDriver(): Provider[] { return [ { provide: lumberjackLogDriverToken, useClass: AnalyticsDriver, multi: true, }, ]; } -
Register at bootstrap
import { bootstrapApplication } from '@angular/platform-browser'; import { provideLumberjack } from '@ngworker/lumberjack'; import { AppComponent } from './app/app.component'; import { provideAnalyticsDriver } from './app/logging/provide-analytics-driver'; bootstrapApplication(AppComponent, { providers: [provideLumberjack(), provideAnalyticsDriver()], });
Variations
Section titled “Variations”Driver-specific config
Section titled “Driver-specific config”Mirror the console/HTTP drivers: create a config token, merge
lumberjackLogDriverConfigToken with your options (and a stable identifier),
then inject that token on the driver. See
provideLumberjackConsoleDriver
and
provideLumberjackHttpDriver
in the reference.
Typed payloads
Section titled “Typed payloads”Parameterize LumberjackLogDriver<MyPayload> and read log.payload inside each
method. Feature loggers must use the same payload type.
Verify
Section titled “Verify”Emit a log through LumberjackService or a logger and confirm your driver’s
method runs (breakpoint or sink assertion).