summaryrefslogtreecommitdiff
path: root/packages/backend/src/core
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-09-18 23:07:41 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-09-18 23:07:41 +0900
commitdd35f2cce6789ce8a0cdf15f0db86506efb07a8f (patch)
treec3a955c056969eb2f1ca45adc584308b75f34cbb /packages/backend/src/core
parentfix(backend): サービスが二重にインスタンス化されるのを修正 (diff)
downloadsharkey-dd35f2cce6789ce8a0cdf15f0db86506efb07a8f.tar.gz
sharkey-dd35f2cce6789ce8a0cdf15f0db86506efb07a8f.tar.bz2
sharkey-dd35f2cce6789ce8a0cdf15f0db86506efb07a8f.zip
refactor(backend): refactor logger
Diffstat (limited to 'packages/backend/src/core')
-rw-r--r--packages/backend/src/core/CoreModule.ts10
-rw-r--r--packages/backend/src/core/DownloadService.ts6
-rw-r--r--packages/backend/src/core/EmailService.ts6
-rw-r--r--packages/backend/src/core/FetchInstanceMetadataService.ts25
-rw-r--r--packages/backend/src/core/LoggerService.ts33
-rw-r--r--packages/backend/src/core/chart/ChartLoggerService.ts14
-rw-r--r--packages/backend/src/core/chart/charts/active-users.ts4
-rw-r--r--packages/backend/src/core/chart/charts/ap-request.ts4
-rw-r--r--packages/backend/src/core/chart/charts/drive.ts4
-rw-r--r--packages/backend/src/core/chart/charts/federation.ts4
-rw-r--r--packages/backend/src/core/chart/charts/hashtag.ts4
-rw-r--r--packages/backend/src/core/chart/charts/instance.ts4
-rw-r--r--packages/backend/src/core/chart/charts/notes.ts4
-rw-r--r--packages/backend/src/core/chart/charts/per-user-drive.ts4
-rw-r--r--packages/backend/src/core/chart/charts/per-user-following.ts4
-rw-r--r--packages/backend/src/core/chart/charts/per-user-notes.ts4
-rw-r--r--packages/backend/src/core/chart/charts/per-user-reactions.ts4
-rw-r--r--packages/backend/src/core/chart/charts/test-grouped.ts4
-rw-r--r--packages/backend/src/core/chart/charts/test-intersection.ts4
-rw-r--r--packages/backend/src/core/chart/charts/test-unique.ts4
-rw-r--r--packages/backend/src/core/chart/charts/test.ts4
-rw-r--r--packages/backend/src/core/chart/charts/users.ts4
-rw-r--r--packages/backend/src/core/chart/core.ts24
-rw-r--r--packages/backend/src/core/remote/RemoteLoggerService.ts6
24 files changed, 147 insertions, 41 deletions
diff --git a/packages/backend/src/core/CoreModule.ts b/packages/backend/src/core/CoreModule.ts
index 523362818f..da07728d22 100644
--- a/packages/backend/src/core/CoreModule.ts
+++ b/packages/backend/src/core/CoreModule.ts
@@ -50,6 +50,7 @@ import { WebhookService } from './WebhookService.js';
import { ProxyAccountService } from './ProxyAccountService.js';
import { UtilityService } from './UtilityService.js';
import { FileInfoService } from './FileInfoService.js';
+import { ChartLoggerService } from './chart/ChartLoggerService.js';
import FederationChart from './chart/charts/federation.js';
import NotesChart from './chart/charts/notes.js';
import UsersChart from './chart/charts/users.js';
@@ -113,9 +114,11 @@ import { ApPersonService } from './remote/activitypub/models/ApPersonService.js'
import { ApQuestionService } from './remote/activitypub/models/ApQuestionService.js';
import { QueueModule } from './queue/QueueModule.js';
import { QueueService } from './QueueService.js';
+import { LoggerService } from './LoggerService.js';
import type { Provider } from '@nestjs/common';
//#region 文字列ベースでのinjection用(循環参照対応のため)
+const $LoggerService: Provider = { provide: 'LoggerService', useExisting: LoggerService };
const $AccountUpdateService: Provider = { provide: 'AccountUpdateService', useExisting: AccountUpdateService };
const $AiService: Provider = { provide: 'AiService', useExisting: AiService };
const $AntennaService: Provider = { provide: 'AntennaService', useExisting: AntennaService };
@@ -166,6 +169,7 @@ const $VideoProcessingService: Provider = { provide: 'VideoProcessingService', u
const $WebhookService: Provider = { provide: 'WebhookService', useExisting: WebhookService };
const $UtilityService: Provider = { provide: 'UtilityService', useExisting: UtilityService };
const $FileInfoService: Provider = { provide: 'FileInfoService', useExisting: FileInfoService };
+const $ChartLoggerService: Provider = { provide: 'ChartLoggerService', useExisting: ChartLoggerService };
const $FederationChart: Provider = { provide: 'FederationChart', useExisting: FederationChart };
const $NotesChart: Provider = { provide: 'NotesChart', useExisting: NotesChart };
const $UsersChart: Provider = { provide: 'UsersChart', useExisting: UsersChart };
@@ -236,6 +240,7 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
QueueModule,
],
providers: [
+ LoggerService,
AccountUpdateService,
AiService,
AntennaService,
@@ -286,6 +291,7 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
WebhookService,
UtilityService,
FileInfoService,
+ ChartLoggerService,
FederationChart,
NotesChart,
UsersChart,
@@ -350,6 +356,7 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
QueueService,
//#region 文字列ベースでのinjection用(循環参照対応のため)
+ $LoggerService,
$AccountUpdateService,
$AiService,
$AntennaService,
@@ -400,6 +407,7 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
$WebhookService,
$UtilityService,
$FileInfoService,
+ $ChartLoggerService,
$FederationChart,
$NotesChart,
$UsersChart,
@@ -465,6 +473,7 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
],
exports: [
QueueModule,
+ LoggerService,
AccountUpdateService,
AiService,
AntennaService,
@@ -579,6 +588,7 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
QueueService,
//#region 文字列ベースでのinjection用(循環参照対応のため)
+ $LoggerService,
$AccountUpdateService,
$AiService,
$AntennaService,
diff --git a/packages/backend/src/core/DownloadService.ts b/packages/backend/src/core/DownloadService.ts
index 84d5ca2e8b..9c5c45ed2c 100644
--- a/packages/backend/src/core/DownloadService.ts
+++ b/packages/backend/src/core/DownloadService.ts
@@ -8,10 +8,11 @@ import got, * as Got from 'got';
import chalk from 'chalk';
import { DI } from '@/di-symbols.js';
import { Config } from '@/config.js';
-import Logger from '@/logger.js';
import { HttpRequestService } from '@/core/HttpRequestService.js';
import { createTemp } from '@/misc/create-temp.js';
import { StatusError } from '@/misc/status-error.js';
+import { LoggerService } from '@/core/LoggerService.js';
+import type Logger from '@/logger.js';
const pipeline = util.promisify(stream.pipeline);
@@ -24,8 +25,9 @@ export class DownloadService {
private config: Config,
private httpRequestService: HttpRequestService,
+ private loggerService: LoggerService,
) {
- this.#logger = new Logger('download');
+ this.#logger = this.loggerService.getLogger('download');
}
public async downloadUrl(url: string, path: string): Promise<void> {
diff --git a/packages/backend/src/core/EmailService.ts b/packages/backend/src/core/EmailService.ts
index 7d6960b73b..a593922acc 100644
--- a/packages/backend/src/core/EmailService.ts
+++ b/packages/backend/src/core/EmailService.ts
@@ -4,8 +4,9 @@ import { validate as validateEmail } from 'deep-email-validator';
import { MetaService } from '@/core/MetaService.js';
import { DI } from '@/di-symbols.js';
import { Config } from '@/config.js';
-import Logger from '@/logger.js';
+import type Logger from '@/logger.js';
import { UserProfilesRepository } from '@/models/index.js';
+import { LoggerService } from '@/core/LoggerService.js';
@Injectable()
export class EmailService {
@@ -19,8 +20,9 @@ export class EmailService {
private userProfilesRepository: UserProfilesRepository,
private metaService: MetaService,
+ private loggerService: LoggerService,
) {
- this.#logger = new Logger('email');
+ this.#logger = this.loggerService.getLogger('email');
}
public async sendEmail(to: string, subject: string, html: string, text: string) {
diff --git a/packages/backend/src/core/FetchInstanceMetadataService.ts b/packages/backend/src/core/FetchInstanceMetadataService.ts
index 6353784c13..4414d83942 100644
--- a/packages/backend/src/core/FetchInstanceMetadataService.ts
+++ b/packages/backend/src/core/FetchInstanceMetadataService.ts
@@ -6,13 +6,12 @@ import tinycolor from 'tinycolor2';
import type { Instance } from '@/models/entities/Instance.js';
import { InstancesRepository } from '@/models/index.js';
import { AppLockService } from '@/core/AppLockService.js';
-import Logger from '@/logger.js';
+import type Logger from '@/logger.js';
import { DI } from '@/di-symbols.js';
+import { LoggerService } from '@/core/LoggerService.js';
import { HttpRequestService } from './HttpRequestService.js';
import type { DOMWindow } from 'jsdom';
-const logger = new Logger('metadata', 'cyan');
-
type NodeInfo = {
openRegistrations?: any;
software?: {
@@ -33,13 +32,17 @@ type NodeInfo = {
@Injectable()
export class FetchInstanceMetadataService {
+ #logger: Logger;
+
constructor(
@Inject(DI.instancesRepository)
private instancesRepository: InstancesRepository,
private appLockService: AppLockService,
private httpRequestService: HttpRequestService,
+ private loggerService: LoggerService,
) {
+ this.#logger = this.loggerService.getLogger('metadata', 'cyan');
}
public async fetchInstanceMetadata(instance: Instance, force = false): Promise<void> {
@@ -54,7 +57,7 @@ export class FetchInstanceMetadataService {
}
}
- logger.info(`Fetching metadata of ${instance.host} ...`);
+ this.#logger.info(`Fetching metadata of ${instance.host} ...`);
try {
const [info, dom, manifest] = await Promise.all([
@@ -71,7 +74,7 @@ export class FetchInstanceMetadataService {
this.#getDescription(info, dom, manifest).catch(() => null),
]);
- logger.succ(`Successfuly fetched metadata of ${instance.host}`);
+ this.#logger.succ(`Successfuly fetched metadata of ${instance.host}`);
const updates = {
infoUpdatedAt: new Date(),
@@ -93,16 +96,16 @@ export class FetchInstanceMetadataService {
await this.instancesRepository.update(instance.id, updates);
- logger.succ(`Successfuly updated metadata of ${instance.host}`);
+ this.#logger.succ(`Successfuly updated metadata of ${instance.host}`);
} catch (e) {
- logger.error(`Failed to update metadata of ${instance.host}: ${e}`);
+ this.#logger.error(`Failed to update metadata of ${instance.host}: ${e}`);
} finally {
unlock();
}
}
async #fetchNodeinfo(instance: Instance): Promise<NodeInfo> {
- logger.info(`Fetching nodeinfo of ${instance.host} ...`);
+ this.#logger.info(`Fetching nodeinfo of ${instance.host} ...`);
try {
const wellknown = await this.httpRequestService.getJson('https://' + instance.host + '/.well-known/nodeinfo')
@@ -134,18 +137,18 @@ export class FetchInstanceMetadataService {
throw err.statusCode ?? err.message;
});
- logger.succ(`Successfuly fetched nodeinfo of ${instance.host}`);
+ this.#logger.succ(`Successfuly fetched nodeinfo of ${instance.host}`);
return info as NodeInfo;
} catch (err) {
- logger.error(`Failed to fetch nodeinfo of ${instance.host}: ${err}`);
+ this.#logger.error(`Failed to fetch nodeinfo of ${instance.host}: ${err}`);
throw err;
}
}
async #fetchDom(instance: Instance): Promise<DOMWindow['document']> {
- logger.info(`Fetching HTML of ${instance.host} ...`);
+ this.#logger.info(`Fetching HTML of ${instance.host} ...`);
const url = 'https://' + instance.host;
diff --git a/packages/backend/src/core/LoggerService.ts b/packages/backend/src/core/LoggerService.ts
new file mode 100644
index 0000000000..d844b38841
--- /dev/null
+++ b/packages/backend/src/core/LoggerService.ts
@@ -0,0 +1,33 @@
+import { Inject, Injectable } from '@nestjs/common';
+import * as SyslogPro from 'syslog-pro';
+import { DI } from '@/di-symbols.js';
+import { Config } from '@/config.js';
+import Logger from '@/logger.js';
+
+@Injectable()
+export class LoggerService {
+ #syslogClient;
+
+ constructor(
+ @Inject(DI.config)
+ private config: Config,
+ ) {
+ if (this.config.syslog) {
+ this.#syslogClient = new SyslogPro.RFC5424({
+ applacationName: 'Misskey',
+ timestamp: true,
+ encludeStructuredData: true,
+ color: true,
+ extendedColor: true,
+ server: {
+ target: config.syslog.host,
+ port: config.syslog.port,
+ },
+ });
+ }
+ }
+
+ public getLogger(domain: string, color?: string | undefined, store?: boolean) {
+ return new Logger(domain, color, store, this.#syslogClient);
+ }
+}
diff --git a/packages/backend/src/core/chart/ChartLoggerService.ts b/packages/backend/src/core/chart/ChartLoggerService.ts
new file mode 100644
index 0000000000..544a006ac9
--- /dev/null
+++ b/packages/backend/src/core/chart/ChartLoggerService.ts
@@ -0,0 +1,14 @@
+import { Inject, Injectable } from '@nestjs/common';
+import type Logger from '@/logger.js';
+import { LoggerService } from '@/core/LoggerService.js';
+
+@Injectable()
+export class ChartLoggerService {
+ public logger: Logger;
+
+ constructor(
+ private loggerService: LoggerService,
+ ) {
+ this.logger = this.loggerService.getLogger('chart', 'white', process.env.NODE_ENV !== 'test');
+ }
+}
diff --git a/packages/backend/src/core/chart/charts/active-users.ts b/packages/backend/src/core/chart/charts/active-users.ts
index a5d9f166ed..40c60910ea 100644
--- a/packages/backend/src/core/chart/charts/active-users.ts
+++ b/packages/backend/src/core/chart/charts/active-users.ts
@@ -4,6 +4,7 @@ import { AppLockService } from '@/core/AppLockService.js';
import type { User } from '@/models/entities/User.js';
import { DI } from '@/di-symbols.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/active-users.js';
import type { KVs } from '../core.js';
@@ -22,8 +23,9 @@ export default class ActiveUsersChart extends Chart<typeof schema> {
private db: DataSource,
private appLockService: AppLockService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/ap-request.ts b/packages/backend/src/core/chart/charts/ap-request.ts
index c857cea98c..4b91fbbf18 100644
--- a/packages/backend/src/core/chart/charts/ap-request.ts
+++ b/packages/backend/src/core/chart/charts/ap-request.ts
@@ -3,6 +3,7 @@ import { DataSource } from 'typeorm';
import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/ap-request.js';
import type { KVs } from '../core.js';
@@ -17,8 +18,9 @@ export default class ApRequestChart extends Chart<typeof schema> {
private db: DataSource,
private appLockService: AppLockService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/drive.ts b/packages/backend/src/core/chart/charts/drive.ts
index dd6d002030..494dfbbe57 100644
--- a/packages/backend/src/core/chart/charts/drive.ts
+++ b/packages/backend/src/core/chart/charts/drive.ts
@@ -4,6 +4,7 @@ import type { DriveFile } from '@/models/entities/DriveFile.js';
import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/drive.js';
import type { KVs } from '../core.js';
@@ -18,8 +19,9 @@ export default class DriveChart extends Chart<typeof schema> {
private db: DataSource,
private appLockService: AppLockService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/federation.ts b/packages/backend/src/core/chart/charts/federation.ts
index 372e0f1fae..4366d4cce1 100644
--- a/packages/backend/src/core/chart/charts/federation.ts
+++ b/packages/backend/src/core/chart/charts/federation.ts
@@ -5,6 +5,7 @@ import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { MetaService } from '@/core/MetaService.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/federation.js';
import type { KVs } from '../core.js';
@@ -26,8 +27,9 @@ export default class FederationChart extends Chart<typeof schema> {
private metaService: MetaService,
private appLockService: AppLockService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/hashtag.ts b/packages/backend/src/core/chart/charts/hashtag.ts
index 66ac0b882b..8b8c795cfd 100644
--- a/packages/backend/src/core/chart/charts/hashtag.ts
+++ b/packages/backend/src/core/chart/charts/hashtag.ts
@@ -5,6 +5,7 @@ import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/hashtag.js';
import type { KVs } from '../core.js';
@@ -20,8 +21,9 @@ export default class HashtagChart extends Chart<typeof schema> {
private appLockService: AppLockService,
private userEntityService: UserEntityService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema, true);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true);
}
protected async tickMajor(): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/instance.ts b/packages/backend/src/core/chart/charts/instance.ts
index c43ebeddc1..be70bc79c0 100644
--- a/packages/backend/src/core/chart/charts/instance.ts
+++ b/packages/backend/src/core/chart/charts/instance.ts
@@ -7,6 +7,7 @@ import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { UtilityService } from '@/core/UtilityService.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/instance.js';
import type { KVs } from '../core.js';
@@ -34,8 +35,9 @@ export default class InstanceChart extends Chart<typeof schema> {
private utilityService: UtilityService,
private appLockService: AppLockService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema, true);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true);
}
protected async tickMajor(group: string): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/notes.ts b/packages/backend/src/core/chart/charts/notes.ts
index 1597b5727e..e1bfeabf99 100644
--- a/packages/backend/src/core/chart/charts/notes.ts
+++ b/packages/backend/src/core/chart/charts/notes.ts
@@ -5,6 +5,7 @@ import type { Note } from '@/models/entities/Note.js';
import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/notes.js';
import type { KVs } from '../core.js';
@@ -22,8 +23,9 @@ export default class NotesChart extends Chart<typeof schema> {
private notesRepository: NotesRepository,
private appLockService: AppLockService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/per-user-drive.ts b/packages/backend/src/core/chart/charts/per-user-drive.ts
index 181b9a38bb..752203daaf 100644
--- a/packages/backend/src/core/chart/charts/per-user-drive.ts
+++ b/packages/backend/src/core/chart/charts/per-user-drive.ts
@@ -6,6 +6,7 @@ import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/per-user-drive.js';
import type { KVs } from '../core.js';
@@ -24,8 +25,9 @@ export default class PerUserDriveChart extends Chart<typeof schema> {
private appLockService: AppLockService,
private driveFileEntityService: DriveFileEntityService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema, true);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true);
}
protected async tickMajor(group: string): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/per-user-following.ts b/packages/backend/src/core/chart/charts/per-user-following.ts
index 5195723a25..48bf3d7c62 100644
--- a/packages/backend/src/core/chart/charts/per-user-following.ts
+++ b/packages/backend/src/core/chart/charts/per-user-following.ts
@@ -6,6 +6,7 @@ import { DI } from '@/di-symbols.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { FollowingsRepository } from '@/models/index.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/per-user-following.js';
import type { KVs } from '../core.js';
@@ -24,8 +25,9 @@ export default class PerUserFollowingChart extends Chart<typeof schema> {
private appLockService: AppLockService,
private userEntityService: UserEntityService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema, true);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true);
}
protected async tickMajor(group: string): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/per-user-notes.ts b/packages/backend/src/core/chart/charts/per-user-notes.ts
index 6dbe309b7c..ffe52dcd56 100644
--- a/packages/backend/src/core/chart/charts/per-user-notes.ts
+++ b/packages/backend/src/core/chart/charts/per-user-notes.ts
@@ -6,6 +6,7 @@ import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { NotesRepository } from '@/models/index.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/per-user-notes.js';
import type { KVs } from '../core.js';
@@ -23,8 +24,9 @@ export default class PerUserNotesChart extends Chart<typeof schema> {
private notesRepository: NotesRepository,
private appLockService: AppLockService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema, true);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true);
}
protected async tickMajor(group: string): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/per-user-reactions.ts b/packages/backend/src/core/chart/charts/per-user-reactions.ts
index 73a58656f8..4160219720 100644
--- a/packages/backend/src/core/chart/charts/per-user-reactions.ts
+++ b/packages/backend/src/core/chart/charts/per-user-reactions.ts
@@ -6,6 +6,7 @@ import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/per-user-reactions.js';
import type { KVs } from '../core.js';
@@ -21,8 +22,9 @@ export default class PerUserReactionsChart extends Chart<typeof schema> {
private appLockService: AppLockService,
private userEntityService: UserEntityService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema, true);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true);
}
protected async tickMajor(group: string): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/test-grouped.ts b/packages/backend/src/core/chart/charts/test-grouped.ts
index e6cbe89790..103cf2a27e 100644
--- a/packages/backend/src/core/chart/charts/test-grouped.ts
+++ b/packages/backend/src/core/chart/charts/test-grouped.ts
@@ -3,6 +3,7 @@ import { DataSource } from 'typeorm';
import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/test-grouped.js';
import type { KVs } from '../core.js';
@@ -19,8 +20,9 @@ export default class TestGroupedChart extends Chart<typeof schema> {
private db: DataSource,
private appLockService: AppLockService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema, true);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true);
}
protected async tickMajor(group: string): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/test-intersection.ts b/packages/backend/src/core/chart/charts/test-intersection.ts
index f2f17c8de6..0e38769165 100644
--- a/packages/backend/src/core/chart/charts/test-intersection.ts
+++ b/packages/backend/src/core/chart/charts/test-intersection.ts
@@ -3,6 +3,7 @@ import { DataSource } from 'typeorm';
import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/test-intersection.js';
import type { KVs } from '../core.js';
@@ -17,8 +18,9 @@ export default class TestIntersectionChart extends Chart<typeof schema> {
private db: DataSource,
private appLockService: AppLockService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/test-unique.ts b/packages/backend/src/core/chart/charts/test-unique.ts
index ce01594520..44e1b8365d 100644
--- a/packages/backend/src/core/chart/charts/test-unique.ts
+++ b/packages/backend/src/core/chart/charts/test-unique.ts
@@ -3,6 +3,7 @@ import { DataSource } from 'typeorm';
import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/test-unique.js';
import type { KVs } from '../core.js';
@@ -17,8 +18,9 @@ export default class TestUniqueChart extends Chart<typeof schema> {
private db: DataSource,
private appLockService: AppLockService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/test.ts b/packages/backend/src/core/chart/charts/test.ts
index bd59b7aa63..6269674023 100644
--- a/packages/backend/src/core/chart/charts/test.ts
+++ b/packages/backend/src/core/chart/charts/test.ts
@@ -3,6 +3,7 @@ import { DataSource } from 'typeorm';
import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/test.js';
import type { KVs } from '../core.js';
@@ -19,8 +20,9 @@ export default class TestChart extends Chart<typeof schema> {
private db: DataSource,
private appLockService: AppLockService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/charts/users.ts b/packages/backend/src/core/chart/charts/users.ts
index 4fdddcc0a3..b3187997cf 100644
--- a/packages/backend/src/core/chart/charts/users.ts
+++ b/packages/backend/src/core/chart/charts/users.ts
@@ -6,6 +6,7 @@ import { DI } from '@/di-symbols.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { UsersRepository } from '@/models/index.js';
import Chart from '../core.js';
+import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/users.js';
import type { KVs } from '../core.js';
@@ -24,8 +25,9 @@ export default class UsersChart extends Chart<typeof schema> {
private appLockService: AppLockService,
private userEntityService: UserEntityService,
+ private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), name, schema);
+ super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise<Partial<KVs<typeof schema>>> {
diff --git a/packages/backend/src/core/chart/core.ts b/packages/backend/src/core/chart/core.ts
index 1933e80c7b..93a6c3ce05 100644
--- a/packages/backend/src/core/chart/core.ts
+++ b/packages/backend/src/core/chart/core.ts
@@ -7,11 +7,9 @@
import * as nestedProperty from 'nested-property';
import { EntitySchema, LessThan, Between } from 'typeorm';
import { dateUTC, isTimeSame, isTimeBefore, subtractTime, addTime } from '@/misc/prelude/time.js';
-import Logger from '@/logger.js';
+import type Logger from '@/logger.js';
import type { Repository, DataSource } from 'typeorm';
-const logger = new Logger('chart', 'white', process.env.NODE_ENV !== 'test');
-
const columnPrefix = '___' as const;
const uniqueTempColumnPrefix = 'unique_temp___' as const;
const columnDot = '_' as const;
@@ -111,6 +109,8 @@ export function getJsonSchema<S extends Schema>(schema: S): ToJsonSchema<Unflatt
*/
// eslint-disable-next-line import/no-default-export
export default abstract class Chart<T extends Schema> {
+ #logger: Logger;
+
public schema: T;
private name: string;
@@ -231,10 +231,18 @@ export default abstract class Chart<T extends Schema> {
private lock: (key: string) => Promise<() => void>;
- constructor(db: DataSource, lock: (key: string) => Promise<() => void>, name: string, schema: T, grouped = false) {
+ constructor(
+ db: DataSource,
+ lock: (key: string) => Promise<() => void>,
+ logger: Logger,
+ name: string,
+ schema: T,
+ grouped = false,
+ ) {
this.name = name;
this.schema = schema;
this.lock = lock;
+ this.#logger = logger;
const { hour, day } = Chart.schemaToEntity(name, schema, grouped);
this.repositoryForHour = db.getRepository<{ id: number; group?: string | null; date: number; }>(hour);
@@ -325,7 +333,7 @@ export default abstract class Chart<T extends Schema> {
// 初期ログデータを作成
data = this.getNewLog(null);
- logger.info(`${this.name + (group ? `:${group}` : '')}(${span}): Initial commit created`);
+ this.#logger.info(`${this.name + (group ? `:${group}` : '')}(${span}): Initial commit created`);
}
const date = Chart.dateToTimestamp(current);
@@ -355,7 +363,7 @@ export default abstract class Chart<T extends Schema> {
...columns,
}).then(x => repository.findOneByOrFail(x.identifiers[0])) as RawRecord<T>;
- logger.info(`${this.name + (group ? `:${group}` : '')}(${span}): New commit created`);
+ this.#logger.info(`${this.name + (group ? `:${group}` : '')}(${span}): New commit created`);
return log;
} finally {
@@ -374,7 +382,7 @@ export default abstract class Chart<T extends Schema> {
public async save(): Promise<void> {
if (this.buffer.length === 0) {
- logger.info(`${this.name}: Write skipped`);
+ this.#logger.info(`${this.name}: Write skipped`);
return;
}
@@ -473,7 +481,7 @@ export default abstract class Chart<T extends Schema> {
.execute(),
]);
- logger.info(`${this.name + (logHour.group ? `:${logHour.group}` : '')}: Updated`);
+ this.#logger.info(`${this.name + (logHour.group ? `:${logHour.group}` : '')}: Updated`);
// TODO: この一連の処理が始まった後に新たにbufferに入ったものは消さないようにする
this.buffer = this.buffer.filter(q => q.group != null && (q.group !== logHour.group));
diff --git a/packages/backend/src/core/remote/RemoteLoggerService.ts b/packages/backend/src/core/remote/RemoteLoggerService.ts
index 7ce8fe6cfc..68246466c8 100644
--- a/packages/backend/src/core/remote/RemoteLoggerService.ts
+++ b/packages/backend/src/core/remote/RemoteLoggerService.ts
@@ -1,12 +1,14 @@
import { Inject, Injectable } from '@nestjs/common';
-import Logger from '@/logger.js';
+import type Logger from '@/logger.js';
+import { LoggerService } from '@/core/LoggerService.js';
@Injectable()
export class RemoteLoggerService {
public logger: Logger;
constructor(
+ private loggerService: LoggerService,
) {
- this.logger = new Logger('remote', 'cyan');
+ this.logger = this.loggerService.getLogger('remote', 'cyan');
}
}