generated from edmundhung/remix-cloudflare-template
-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathlogging.ts
65 lines (55 loc) · 1.19 KB
/
logging.ts
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
64
65
import type { Env } from './types';
import type { Reporter, Tracker } from 'workers-logger';
import { track, enable } from 'workers-logger';
import { defaultReporter } from 'diary';
import Toucan from 'toucan-js';
function createReporter(
request: Request,
env: Env,
ctx?: ExecutionContext,
): Reporter {
if (!env.SENTRY_DSN) {
return (events) => {
for (const event of events) {
defaultReporter(event);
}
};
}
const options = {
dsn: env.SENTRY_DSN,
request,
};
if (ctx) {
options.context = ctx;
}
const Sentry = new Toucan(options);
return (events) => {
for (const event of events) {
switch (event.level) {
case 'error':
case 'fatal':
Sentry.captureException(event.error);
break;
case 'info':
case 'warn':
case 'log':
Sentry.captureMessage(event.message, event.level);
break;
}
}
};
}
function configureLogger(name: string) {
function createLogger(
request: Request,
env: Env,
ctx?: ExecutionContext,
): Tracker {
const reporter = createReporter(request, env, ctx);
const logger = track(request, name, reporter);
enable(env.DEBUG ?? '*');
return logger;
}
return createLogger;
}
export { configureLogger };