Skip to content

Commit e75f593

Browse files
authored
feat(logger): introduce loglevel constant (#2787)
1 parent 3cedd9f commit e75f593

File tree

4 files changed

+28
-31
lines changed

4 files changed

+28
-31
lines changed

Diff for: packages/logger/src/constants.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,13 @@ const LogJsonIndent = {
1414
COMPACT: 0,
1515
} as const;
1616

17-
export { LogJsonIndent };
17+
const LogLevel = {
18+
DEBUG: 'DEBUG',
19+
INFO: 'INFO',
20+
WARN: 'WARN',
21+
ERROR: 'ERROR',
22+
SILENT: 'SILENT',
23+
CRITICAL: 'CRITICAL',
24+
} as const;
25+
26+
export { LogJsonIndent, LogLevel };

Diff for: packages/logger/src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export { Logger } from './Logger.js';
22
export { LogFormatter } from './formatter/LogFormatter.js';
33
export { LogItem } from './formatter/LogItem.js';
4+
export { LogLevel } from './constants.js';

Diff for: packages/logger/src/types/Log.ts

+3-19
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,11 @@
11
import type { EnvironmentVariablesService } from '../config/EnvironmentVariablesService.js';
22
import type { LogItem } from '../formatter/LogItem.js';
33
import type { UnformattedAttributes } from './Logger.js';
4-
5-
type LogLevelDebug = 'DEBUG';
6-
type LogLevelInfo = 'INFO';
7-
type LogLevelWarn = 'WARN';
8-
type LogLevelError = 'ERROR';
9-
type LogLevelSilent = 'SILENT';
10-
type LogLevelCritical = 'CRITICAL';
4+
import { LogLevel } from '../constants.js';
115

126
type LogLevel =
13-
| LogLevelDebug
14-
| Lowercase<LogLevelDebug>
15-
| LogLevelInfo
16-
| Lowercase<LogLevelInfo>
17-
| LogLevelWarn
18-
| Lowercase<LogLevelWarn>
19-
| LogLevelError
20-
| Lowercase<LogLevelError>
21-
| LogLevelSilent
22-
| Lowercase<LogLevelSilent>
23-
| LogLevelCritical
24-
| Lowercase<LogLevelCritical>;
7+
| (typeof LogLevel)[keyof typeof LogLevel]
8+
| Lowercase<(typeof LogLevel)[keyof typeof LogLevel]>;
259

2610
type LogLevelThresholds = {
2711
[key in Uppercase<LogLevel>]: number;

Diff for: packages/logger/tests/unit/Logger.test.ts

+14-11
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@
55
*/
66
import context from '@aws-lambda-powertools/testing-utils/context';
77
import type { LambdaInterface } from '@aws-lambda-powertools/commons/types';
8-
import { Logger, LogFormatter } from '../../src/index.js';
8+
import { Logger, LogFormatter, LogLevel } from '../../src/index.js';
99
import { ConfigServiceInterface } from '../../src/types/ConfigServiceInterface.js';
1010
import { EnvironmentVariablesService } from '../../src/config/EnvironmentVariablesService.js';
1111
import { PowertoolsLogFormatter } from '../../src/formatter/PowertoolsLogFormatter.js';
12-
import { LogLevelThresholds, LogLevel } from '../../src/types/Log.js';
12+
import {
13+
LogLevelThresholds,
14+
type LogLevel as LogLevelType,
15+
} from '../../src/types/Log.js';
1316
import {
1417
type LogFunction,
1518
type ConstructorOptions,
@@ -598,7 +601,7 @@ describe('Class: Logger', () => {
598601
test(`when the level is DEBUG, it ${debugAction} print to stdout`, () => {
599602
// Prepare
600603
const logger = new Logger({
601-
logLevel: 'DEBUG',
604+
logLevel: LogLevel.DEBUG,
602605
});
603606
const consoleSpy = jest.spyOn(
604607
logger['console'],
@@ -656,7 +659,7 @@ describe('Class: Logger', () => {
656659
test(`when the log level is WARN, it ${warnAction} print to stdout`, () => {
657660
// Prepare
658661
const logger = new Logger({
659-
logLevel: 'WARN',
662+
logLevel: LogLevel.WARN,
660663
});
661664
const consoleSpy = jest.spyOn(
662665
logger['console'],
@@ -714,7 +717,7 @@ describe('Class: Logger', () => {
714717
test('when the log level is SILENT, it DOES NOT print to stdout', () => {
715718
// Prepare
716719
const logger = new Logger({
717-
logLevel: 'SILENT',
720+
logLevel: LogLevel.SILENT,
718721
});
719722
const consoleSpy = jest.spyOn(
720723
logger['console'],
@@ -2347,7 +2350,7 @@ describe('Class: Logger', () => {
23472350
test('when logEvent is enabled, it logs the event in the first log', async () => {
23482351
// Prepare
23492352
const logger = new Logger({
2350-
logLevel: 'DEBUG',
2353+
logLevel: LogLevel.DEBUG,
23512354
});
23522355
const consoleSpy = jest.spyOn(logger['console'], 'info');
23532356
class LambdaFunction implements LambdaInterface {
@@ -3141,7 +3144,7 @@ describe('Class: Logger', () => {
31413144
const logger = new Logger();
31423145

31433146
// Act
3144-
logger.setLogLevel('ERROR');
3147+
logger.setLogLevel(LogLevel.ERROR);
31453148

31463149
// Assess
31473150
expect(logger.level).toBe(20);
@@ -3153,7 +3156,7 @@ describe('Class: Logger', () => {
31533156
const logger = new Logger();
31543157

31553158
// Act & Assess
3156-
expect(() => logger.setLogLevel('INVALID' as LogLevel)).toThrow(
3159+
expect(() => logger.setLogLevel('INVALID' as LogLevelType)).toThrow(
31573160
'Invalid log level: INVALID'
31583161
);
31593162
});
@@ -3240,7 +3243,7 @@ describe('Class: Logger', () => {
32403243
process.env.POWERTOOLS_LOGGER_SAMPLE_RATE = '1';
32413244

32423245
const logger: Logger = new Logger({
3243-
logLevel: 'ERROR',
3246+
logLevel: LogLevel.ERROR,
32443247
});
32453248

32463249
// Assess
@@ -3396,7 +3399,7 @@ describe('Class: Logger', () => {
33963399
test('when sample rate in constructor is out of expected range, it should be ignored', () => {
33973400
// Prepare
33983401
const logger: Logger = new Logger({
3399-
logLevel: 'INFO',
3402+
logLevel: LogLevel.INFO,
34003403
sampleRateValue: 42,
34013404
});
34023405
const consoleSpy = jest.spyOn(logger['console'], 'info');
@@ -3498,7 +3501,7 @@ describe('Class: Logger', () => {
34983501
test('when sample rate calculation is refreshed, it DOES NOT overwrite the sample rate value', () => {
34993502
// Prepare
35003503
const logger = new Logger({
3501-
logLevel: 'INFO',
3504+
logLevel: LogLevel.INFO,
35023505
sampleRateValue: 1,
35033506
});
35043507
const consoleSpy = jest.spyOn(logger['console'], 'info');

0 commit comments

Comments
 (0)