-
Notifications
You must be signed in to change notification settings - Fork 6
/
app-logging.service.ts
72 lines (67 loc) · 2.64 KB
/
app-logging.service.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
66
67
68
69
70
71
72
import { inject, Injectable } from '@angular/core';
import { datadogLogs, Logger } from '@datadog/browser-logs';
import {
BuildTag,
BuildTagToken,
DspInstrumentationConfig,
DspInstrumentationToken,
} from '@dasch-swiss/vre/shared/app-config';
import { Observable } from 'rxjs';
import { first } from 'rxjs/operators';
@Injectable({
providedIn: 'root',
})
export class AppLoggingService {
private logger: Logger | undefined;
private buildTag$: Observable<BuildTag> = inject(BuildTagToken);
private config: DspInstrumentationConfig = inject(DspInstrumentationToken);
constructor() {
this.buildTag$.pipe(first()).subscribe((tag) => {
if (
this.config.dataDog.enabled &&
typeof this.config.dataDog.clientToken == 'string'
) {
datadogLogs.init({
clientToken: this.config.dataDog.clientToken,
site: this.config.dataDog.site,
service: this.config.dataDog.service,
env: this.config.environment,
version: tag.build_tag,
forwardErrorsToLogs: true, // forwards console.error logs, uncaught exceptions and network errors to Datadog
forwardConsoleLogs: [], // don't forward any logs (besides console.error - in previous setting) to Datadog
useSecureSessionCookie: true,
});
datadogLogs.logger.setHandler(['console', 'http']);
this.logger = datadogLogs.logger;
}
});
}
debug(message: string, messageContext?: object, error?: Error) {
if (typeof this.logger != 'undefined') {
datadogLogs.logger.debug(message, messageContext, error);
} else {
console.debug(message, messageContext, error);
}
}
info(message: string, messageContext?: object, error?: Error) {
if (typeof this.logger != 'undefined') {
this.logger.info(message, messageContext, error);
} else {
console.info(message, messageContext, error);
}
}
warn(message: string, messageContext?: object, error?: Error) {
if (typeof this.logger != 'undefined') {
this.logger.warn(message, messageContext, error);
} else {
console.warn(message, messageContext, error);
}
}
error(message: string, messageContext?: any, error?: Error) {
if (typeof this.logger != 'undefined') {
this.logger.error(message, messageContext, error);
} else {
console.error(message, messageContext, error);
}
}
}