Skip to content

Configure Lumberjack

Pass LumberjackOptions to provideLumberjack to change the default level filter and the text format shared by drivers.

  1. Set root levels

    Drivers inherit these levels unless they override their own levels.

    import { bootstrapApplication } from '@angular/platform-browser';
    import { provideLumberjack } from '@ngworker/lumberjack';
    import { provideLumberjackConsoleDriver } from '@ngworker/lumberjack/console-driver';
    
    import { AppComponent } from './app/app.component';
    
    bootstrapApplication(AppComponent, {
      providers: [
        provideLumberjack({
          levels: ['critical', 'error', 'warn', 'info'],
        }),
        provideLumberjackConsoleDriver(),
      ],
    });

    Use ['verbose'] to accept every level (development default).

  2. Optional: custom format

    import { bootstrapApplication } from '@angular/platform-browser';
    import { LumberjackLog, provideLumberjack } from '@ngworker/lumberjack';
    import { provideLumberjackConsoleDriver } from '@ngworker/lumberjack/console-driver';
    
    import { AppComponent } from './app/app.component';
    
    function formatLog(log: LumberjackLog): string {
      return `[${log.level}] ${log.message}`;
    }
    
    bootstrapApplication(AppComponent, {
      providers: [provideLumberjack({ format: formatLog }), provideLumberjackConsoleDriver()],
    });
OptionDevelopmentProduction
levels['verbose'] (all levels)['critical', 'error', 'info', 'warn']
formate.g. info 2026-07-24T12:00:00.000Z [Forest App] Hello, Forest!same shape

The default format is `${level} ${utcTimestamp}${scope ? ` [${scope}]` : ''} ${message}`. Production vs development comes from Angular’s production mode flag inside Lumberjack’s config factory.

Override on the driver provider. Example: console stays verbose; HTTP only ships critical and error — see Send logs over HTTP.