Skip to content

Commit 1414676

Browse files
committed
fixup! feat(effect): Add logging to Sentry.effectLayer
1 parent 751cac1 commit 1414676

2 files changed

Lines changed: 32 additions & 11 deletions

File tree

packages/effect/src/logger.ts

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { logger as sentryLogger } from '@sentry/core';
22
import * as Logger from 'effect/Logger';
3-
import * as LogLevel from 'effect/LogLevel';
43

54
/**
65
* Effect Logger that sends logs to Sentry.
@@ -16,15 +15,29 @@ export const SentryEffectLogger = Logger.make(({ logLevel, message }) => {
1615
msg = JSON.stringify(message);
1716
}
1817

19-
if (LogLevel.greaterThanEqual(logLevel, LogLevel.Error)) {
20-
sentryLogger.error(msg);
21-
} else if (LogLevel.greaterThanEqual(logLevel, LogLevel.Warning)) {
22-
sentryLogger.warn(msg);
23-
} else if (LogLevel.greaterThanEqual(logLevel, LogLevel.Info)) {
24-
sentryLogger.info(msg);
25-
} else if (LogLevel.greaterThanEqual(logLevel, LogLevel.Debug)) {
26-
sentryLogger.debug(msg);
27-
} else {
28-
sentryLogger.trace(msg);
18+
switch (logLevel._tag) {
19+
case 'Fatal':
20+
sentryLogger.fatal(msg);
21+
break;
22+
case 'Error':
23+
sentryLogger.error(msg);
24+
break;
25+
case 'Warning':
26+
sentryLogger.warn(msg);
27+
break;
28+
case 'Info':
29+
sentryLogger.info(msg);
30+
break;
31+
case 'Debug':
32+
sentryLogger.debug(msg);
33+
break;
34+
case 'Trace':
35+
sentryLogger.trace(msg);
36+
break;
37+
case 'All':
38+
case 'None':
39+
break;
40+
default:
41+
logLevel satisfies never;
2942
}
3043
});

packages/effect/test/logger.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ vi.mock('@sentry/core', async importOriginal => {
1515
info: vi.fn(),
1616
debug: vi.fn(),
1717
trace: vi.fn(),
18+
fatal: vi.fn(),
1819
},
1920
};
2021
});
@@ -29,6 +30,13 @@ describe('SentryEffectLogger', () => {
2930
Logger.minimumLogLevel(LogLevel.All),
3031
);
3132

33+
it.effect('forwards fatal logs to Sentry', () =>
34+
Effect.gen(function* () {
35+
yield* Effect.logFatal('This is a fatal message');
36+
expect(sentryCore.logger.fatal).toHaveBeenCalledWith('This is a fatal message');
37+
}).pipe(Effect.provide(loggerLayer)),
38+
);
39+
3240
it.effect('forwards error logs to Sentry', () =>
3341
Effect.gen(function* () {
3442
yield* Effect.logError('This is an error message');

0 commit comments

Comments
 (0)