2022-09-18 09:07:41 -05:00
|
|
|
import { Inject, Injectable } from '@nestjs/common';
|
|
|
|
import * as SyslogPro from 'syslog-pro';
|
|
|
|
import { DI } from '@/di-symbols.js';
|
2022-09-20 15:33:11 -05:00
|
|
|
import type { Config } from '@/config.js';
|
2022-09-18 09:07:41 -05:00
|
|
|
import Logger from '@/logger.js';
|
2022-12-04 00:03:09 -06:00
|
|
|
import { bindThis } from '@/decorators.js';
|
2022-12-13 09:01:45 -06:00
|
|
|
import type { KEYWORD } from 'color-convert/conversions';
|
2022-09-18 09:07:41 -05:00
|
|
|
|
|
|
|
@Injectable()
|
|
|
|
export class LoggerService {
|
2022-09-18 13:11:50 -05:00
|
|
|
private syslogClient;
|
2022-09-18 09:07:41 -05:00
|
|
|
|
|
|
|
constructor(
|
|
|
|
@Inject(DI.config)
|
|
|
|
private config: Config,
|
|
|
|
) {
|
|
|
|
if (this.config.syslog) {
|
2022-09-18 13:11:50 -05:00
|
|
|
this.syslogClient = new SyslogPro.RFC5424({
|
2022-12-13 09:01:45 -06:00
|
|
|
applicationName: 'Misskey',
|
2022-09-18 09:07:41 -05:00
|
|
|
timestamp: true,
|
2022-12-13 09:01:45 -06:00
|
|
|
includeStructuredData: true,
|
2022-09-18 09:07:41 -05:00
|
|
|
color: true,
|
|
|
|
extendedColor: true,
|
|
|
|
server: {
|
|
|
|
target: config.syslog.host,
|
|
|
|
port: config.syslog.port,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-04 00:03:09 -06:00
|
|
|
@bindThis
|
2022-12-13 09:01:45 -06:00
|
|
|
public getLogger(domain: string, color?: KEYWORD | undefined, store?: boolean) {
|
2022-09-18 13:11:50 -05:00
|
|
|
return new Logger(domain, color, store, this.syslogClient);
|
2022-09-18 09:07:41 -05:00
|
|
|
}
|
|
|
|
}
|