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
73
|
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
import * as process from 'node:process';
const debug = process.env.BUILDER_DEBUG !== undefined && process.env.BUILDER_DEBUG !== '0';
export interface Logger {
debug(message: string): void;
warn(message: string): void;
error(message: string): void;
info(message: string): void;
prefixed(newPrefix: string): Logger;
}
interface RootLogger extends Logger {
warningCount: number;
errorCount: number;
}
export function createLogger(): RootLogger {
return loggerFactory('', {
warningCount: 0,
errorCount: 0,
});
}
type LogContext = {
warningCount: number;
errorCount: number;
};
function loggerFactory(prefix: string, context: LogContext): RootLogger {
return {
debug: (message: string) => {
if (debug) console.log(`[DBG] ${prefix}${message}`);
},
warn: (message: string) => {
context.warningCount++;
console.log(`${debug ? '[WRN]' : 'w:'} ${prefix}${message}`);
},
error: (message: string) => {
context.errorCount++;
console.error(`${debug ? '[ERR]' : 'e:'} ${prefix}${message}`);
},
info: (message: string) => {
console.error(`${debug ? '[INF]' : 'i:'} ${prefix}${message}`);
},
prefixed: (newPrefix: string) => {
return loggerFactory(`${prefix}${newPrefix}`, context);
},
get warningCount() {
return context.warningCount;
},
get errorCount() {
return context.errorCount;
},
};
}
export const blankLogger: Logger = {
debug: () => void 0,
warn: () => void 0,
error: () => void 0,
info: () => void 0,
prefixed: () => blankLogger,
};
|