All files index.ts

94.73% Statements 18/19
90.9% Branches 10/11
100% Functions 5/5
94.73% Lines 18/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63                                              1x 4x           1x 2x 1x     2x     1x 5x 4x 4x         5x     1x 3x 1x     3x   3x     1x 7x    
import type { Logger as PinoLogger, LoggerOptions } from "pino";
import { pino } from "pino";
 
export type TLogLevel =
  | "fatal"
  | "error"
  | "warn"
  | "info"
  | "debug"
  | "trace"
  | "silent";
 
export type CustomLogger = {
  trace: (message: unknown) => void;
  warn: (message: unknown) => void;
  info: (message: unknown) => void;
  error: (message: unknown) => void;
};
 
export type Logger = PinoLogger | CustomLogger;
 
let logger: Logger | undefined;
 
const initialiseDefaultLogger = () => {
  logger = pino({
    name: "@govuk-one-login/default-logger",
    level: process.env.LOG_LEVEL ?? process.env.LOGS_LEVEL ?? "warn",
  });
};
 
export const setCustomLogger = (customLogger: CustomLogger) => {
  if (logger) {
    logger.warn("Setting custom logger when one already exists");
  }
 
  logger = customLogger;
};
 
export const getLogger = (): Logger => {
  if (!logger) {
    initialiseDefaultLogger();
    Iif (!logger) {
      throw new Error("Error initialising default logger");
    }
  }
 
  return logger;
};
 
export const createLogger = (loggerOptions: LoggerOptions) => {
  if (logger) {
    logger.warn("Creating new logger with config when one already exists");
  }
 
  logger = pino(loggerOptions);
 
  return logger;
};
 
export const resetLogger = () => {
  logger = undefined;
};