Global Log Level Manager
A log level manager that applies log level changes to all loggers globally, regardless of whether they are parent or child loggers.
Installation
bash
npm install @loglayer/log-level-manager-globalbash
yarn add @loglayer/log-level-manager-globalbash
pnpm add @loglayer/log-level-manager-globalUsage
typescript
import { LogLayer, ConsoleTransport, LogLevel } from "loglayer";
import { GlobalLogLevelManager } from '@loglayer/log-level-manager-global';
const logger1 = new LogLayer({
transport: new ConsoleTransport({
logger: console
}),
}).withLogLevelManager(new GlobalLogLevelManager());
const logger2 = new LogLayer({
transport: new ConsoleTransport({
logger: console
}),
}).withLogLevelManager(new GlobalLogLevelManager());
// Changing log level on logger1 affects logger2 as well
logger1.setLevel(LogLevel.warn);
logger1.info('This will not be logged'); // Not logged
logger2.info('This will also not be logged'); // Not logged (affected by logger1's change)
// Changing log level on logger2 also affects logger1
logger2.setLevel(LogLevel.debug);
logger1.debug('This will be logged'); // Logged (affected by logger2's change)
logger2.debug('This will be logged'); // LoggedWith Child Loggers
typescript
import { LogLayer, ConsoleTransport, LogLevel } from "loglayer";
import { GlobalLogLevelManager } from '@loglayer/log-level-manager-global';
const parentLog = new LogLayer({
transport: new ConsoleTransport({
logger: console
}),
}).withLogLevelManager(new GlobalLogLevelManager());
const childLog = parentLog.child();
// Changing log level on parent affects all loggers globally
parentLog.setLevel(LogLevel.warn);
// Both parent and child are affected
parentLog.info('This will not be logged'); // Not logged
childLog.info('This will not be logged'); // Not logged
// Changing log level on child also affects all loggers globally
childLog.setLevel(LogLevel.debug);
// Both parent and child are affected
parentLog.debug('This will be logged'); // Logged
childLog.debug('This will be logged'); // LoggedBehavior
- Global State: All loggers using
GlobalLogLevelManagershare the same global log level state - Bidirectional: Changes to any logger affect all other loggers using the same manager
- No Isolation: There is no isolation between different logger instances
Use Cases
- Application-wide Log Level Control: When you want to control log levels across your entire application from a single point
- Dynamic Log Level Adjustment: When you need to change log levels globally at runtime (e.g., based on environment or configuration)
