enhance(logging): ログの情報を増やす (MisskeyIO#351)
This commit is contained in:
parent
38469c2b87
commit
91e4522a96
21 changed files with 100 additions and 57 deletions
|
@ -11,6 +11,8 @@ import * as nsfw from 'nsfwjs';
|
|||
import si from 'systeminformation';
|
||||
import { Mutex } from 'async-mutex';
|
||||
import { bindThis } from '@/decorators.js';
|
||||
import type Logger from '@/logger.js';
|
||||
import { LoggerService } from '@/core/LoggerService.js';
|
||||
|
||||
const _filename = fileURLToPath(import.meta.url);
|
||||
const _dirname = dirname(_filename);
|
||||
|
@ -20,11 +22,14 @@ let isSupportedCpu: undefined | boolean = undefined;
|
|||
|
||||
@Injectable()
|
||||
export class AiService {
|
||||
private logger: Logger;
|
||||
private model: nsfw.NSFWJS;
|
||||
private modelLoadMutex: Mutex = new Mutex();
|
||||
|
||||
constructor(
|
||||
private loggerService: LoggerService,
|
||||
) {
|
||||
this.logger = this.loggerService.getLogger('ai');
|
||||
}
|
||||
|
||||
@bindThis
|
||||
|
@ -36,7 +41,7 @@ export class AiService {
|
|||
}
|
||||
|
||||
if (!isSupportedCpu) {
|
||||
console.error('This CPU cannot use TensorFlow.');
|
||||
this.logger.error('This CPU cannot use TensorFlow.');
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -59,7 +64,7 @@ export class AiService {
|
|||
image.dispose();
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
this.logger.error('Failed to detect sensitive', { error: err });
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -403,7 +403,7 @@ export class DriveService {
|
|||
})
|
||||
.catch(
|
||||
err => {
|
||||
this.registerLogger.error(`Upload Failed: key = ${key}, filename = ${filename}`, err);
|
||||
this.registerLogger.error(`Upload Failed: key = ${key}, filename = ${filename}`, { error: err });
|
||||
},
|
||||
);
|
||||
}
|
||||
|
@ -620,7 +620,7 @@ export class DriveService {
|
|||
userId: user ? user.id : IsNull(),
|
||||
}) as MiDriveFile;
|
||||
} else {
|
||||
this.registerLogger.error(err as Error);
|
||||
this.registerLogger.error(`failed to register ${file.uri}`, { error: err });
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
@ -863,7 +863,7 @@ export class DriveService {
|
|||
} catch (err) {
|
||||
this.downloaderLogger.error(`Failed to create drive file: ${err}`, {
|
||||
url: url,
|
||||
e: err,
|
||||
error: err,
|
||||
});
|
||||
throw err;
|
||||
} finally {
|
||||
|
|
|
@ -148,7 +148,7 @@ export class EmailService {
|
|||
|
||||
this.logger.info(`Message sent: ${info.messageId}`);
|
||||
} catch (err) {
|
||||
this.logger.error(err as Error);
|
||||
this.logger.error('Failed to send email', { error: err });
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
@ -286,18 +286,18 @@ export class EmailService {
|
|||
Authorization: truemailAuthKey
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
const json = (await res.json()) as {
|
||||
email: string;
|
||||
success: boolean;
|
||||
errors?: {
|
||||
errors?: {
|
||||
list_match?: string;
|
||||
regex?: string;
|
||||
mx?: string;
|
||||
smtp?: string;
|
||||
} | null;
|
||||
};
|
||||
|
||||
|
||||
if (json.email === undefined || (json.email !== undefined && json.errors?.regex)) {
|
||||
return {
|
||||
valid: false,
|
||||
|
@ -322,7 +322,7 @@ export class EmailService {
|
|||
reason: json.errors?.list_match as T || 'blacklist',
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
valid: true,
|
||||
reason: null,
|
||||
|
|
|
@ -116,7 +116,7 @@ export class FetchInstanceMetadataService {
|
|||
|
||||
this.logger.succ(`Successfuly updated metadata of ${instance.host}`);
|
||||
} catch (e) {
|
||||
this.logger.error(`Failed to update metadata of ${instance.host}: ${e}`);
|
||||
this.logger.error(`Failed to update metadata of ${instance.host}: ${e}`, { error: e });
|
||||
} finally {
|
||||
await this.unlock(host);
|
||||
}
|
||||
|
@ -160,7 +160,7 @@ export class FetchInstanceMetadataService {
|
|||
|
||||
return info as NodeInfo;
|
||||
} catch (err) {
|
||||
this.logger.error(`Failed to fetch nodeinfo of ${instance.host}: ${err}`);
|
||||
this.logger.error(`Failed to fetch nodeinfo of ${instance.host}: ${err}`, { error: err });
|
||||
|
||||
throw err;
|
||||
}
|
||||
|
|
|
@ -32,10 +32,12 @@ import { RelayService } from '@/core/RelayService.js';
|
|||
import { FederatedInstanceService } from '@/core/FederatedInstanceService.js';
|
||||
import { DI } from '@/di-symbols.js';
|
||||
import type { Config } from '@/config.js';
|
||||
import type Logger from '@/logger.js';
|
||||
import NotesChart from '@/core/chart/charts/notes.js';
|
||||
import PerUserNotesChart from '@/core/chart/charts/per-user-notes.js';
|
||||
import InstanceChart from '@/core/chart/charts/instance.js';
|
||||
import ActiveUsersChart from '@/core/chart/charts/active-users.js';
|
||||
import { LoggerService } from '@/core/LoggerService.js';
|
||||
import { GlobalEventService } from '@/core/GlobalEventService.js';
|
||||
import { NotificationService } from '@/core/NotificationService.js';
|
||||
import { WebhookService } from '@/core/WebhookService.js';
|
||||
|
@ -149,6 +151,7 @@ type Option = {
|
|||
|
||||
@Injectable()
|
||||
export class NoteCreateService implements OnApplicationShutdown {
|
||||
private logger: Logger;
|
||||
#shutdownController = new AbortController();
|
||||
|
||||
constructor(
|
||||
|
@ -217,7 +220,10 @@ export class NoteCreateService implements OnApplicationShutdown {
|
|||
private instanceChart: InstanceChart,
|
||||
private utilityService: UtilityService,
|
||||
private userBlockingService: UserBlockingService,
|
||||
) { }
|
||||
private loggerService: LoggerService,
|
||||
) {
|
||||
this.logger = this.loggerService.getLogger('note:create');
|
||||
}
|
||||
|
||||
@bindThis
|
||||
public async create(user: {
|
||||
|
@ -472,7 +478,7 @@ export class NoteCreateService implements OnApplicationShutdown {
|
|||
throw err;
|
||||
}
|
||||
|
||||
console.error(e);
|
||||
this.logger.error(`Failed to create note: ${e}`, { error: e });
|
||||
|
||||
throw e;
|
||||
}
|
||||
|
|
|
@ -145,7 +145,7 @@ export class RemoteUserResolveService {
|
|||
private async resolveSelf(acctLower: string): Promise<ILink> {
|
||||
this.logger.info(`WebFinger for ${chalk.yellow(acctLower)}`);
|
||||
const finger = await this.webfingerService.webfinger(acctLower).catch(err => {
|
||||
this.logger.error(`Failed to WebFinger for ${chalk.yellow(acctLower)}: ${ err.statusCode ?? err.message }`);
|
||||
this.logger.error(`Failed to WebFinger for ${chalk.yellow(acctLower)}: ${ err.statusCode ?? err.message }`, { error: err });
|
||||
throw new Error(`Failed to WebFinger for ${acctLower}: ${ err.statusCode ?? err.message }`);
|
||||
});
|
||||
const self = finger.links.find(link => link.rel != null && link.rel.toLowerCase() === 'self');
|
||||
|
|
|
@ -15,8 +15,10 @@ import { AttestationFormat, isoCBOR } from '@simplewebauthn/server/helpers';
|
|||
import { DI } from '@/di-symbols.js';
|
||||
import type { UserSecurityKeysRepository } from '@/models/_.js';
|
||||
import type { Config } from '@/config.js';
|
||||
import type Logger from '@/logger.js';
|
||||
import { bindThis } from '@/decorators.js';
|
||||
import { MetaService } from '@/core/MetaService.js';
|
||||
import { LoggerService } from '@/core/LoggerService.js';
|
||||
import { MiUser } from '@/models/_.js';
|
||||
import { IdentifiableError } from '@/misc/identifiable-error.js';
|
||||
import type {
|
||||
|
@ -31,6 +33,8 @@ import type {
|
|||
|
||||
@Injectable()
|
||||
export class WebAuthnService {
|
||||
private logger: Logger;
|
||||
|
||||
constructor(
|
||||
@Inject(DI.redis)
|
||||
private redisClient: Redis.Redis,
|
||||
|
@ -42,7 +46,9 @@ export class WebAuthnService {
|
|||
private userSecurityKeysRepository: UserSecurityKeysRepository,
|
||||
|
||||
private metaService: MetaService,
|
||||
private loggerService: LoggerService,
|
||||
) {
|
||||
this.logger = this.loggerService.getLogger('webauthn');
|
||||
}
|
||||
|
||||
@bindThis
|
||||
|
@ -118,7 +124,7 @@ export class WebAuthnService {
|
|||
requireUserVerification: true,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
this.logger.error('Failed to verify registration response', { error });
|
||||
throw new IdentifiableError('5c1446f8-8ca7-4d31-9f39-656afe9c5d87', 'verification failed');
|
||||
}
|
||||
|
||||
|
@ -228,7 +234,7 @@ export class WebAuthnService {
|
|||
requireUserVerification: true,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
this.logger.error('Failed to verify authentication response', { error });
|
||||
throw new IdentifiableError('b18c89a7-5b5e-4cec-bb5b-0419f332d430', 'verification failed');
|
||||
}
|
||||
|
||||
|
|
|
@ -197,7 +197,7 @@ export class ApInboxService {
|
|||
const resolver = this.apResolverService.createResolver();
|
||||
|
||||
const object = await resolver.resolve(activity.object).catch(err => {
|
||||
this.logger.error(`Resolution failed: ${err}`);
|
||||
this.logger.error(`Resolution failed: ${err}`, { error: err });
|
||||
throw err;
|
||||
});
|
||||
|
||||
|
@ -370,7 +370,7 @@ export class ApInboxService {
|
|||
const resolver = this.apResolverService.createResolver();
|
||||
|
||||
const object = await resolver.resolve(activity.object).catch(e => {
|
||||
this.logger.error(`Resolution failed: ${e}`);
|
||||
this.logger.error(`Resolution failed: ${e}`, { error: e });
|
||||
throw e;
|
||||
});
|
||||
|
||||
|
@ -544,7 +544,7 @@ export class ApInboxService {
|
|||
const resolver = this.apResolverService.createResolver();
|
||||
|
||||
const object = await resolver.resolve(activity.object).catch(e => {
|
||||
this.logger.error(`Resolution failed: ${e}`);
|
||||
this.logger.error(`Resolution failed: ${e}`, { error: e });
|
||||
throw e;
|
||||
});
|
||||
|
||||
|
@ -610,7 +610,7 @@ export class ApInboxService {
|
|||
const resolver = this.apResolverService.createResolver();
|
||||
|
||||
const object = await resolver.resolve(activity.object).catch(e => {
|
||||
this.logger.error(`Resolution failed: ${e}`);
|
||||
this.logger.error(`Resolution failed: ${e}`, { error: e });
|
||||
throw e;
|
||||
});
|
||||
|
||||
|
@ -741,7 +741,7 @@ export class ApInboxService {
|
|||
const resolver = this.apResolverService.createResolver();
|
||||
|
||||
const object = await resolver.resolve(activity.object).catch(e => {
|
||||
this.logger.error(`Resolution failed: ${e}`);
|
||||
this.logger.error(`Resolution failed: ${e}`, { error: e });
|
||||
throw e;
|
||||
});
|
||||
|
||||
|
@ -749,7 +749,7 @@ export class ApInboxService {
|
|||
await this.apPersonService.updatePerson(actor.uri, resolver, object);
|
||||
return 'ok: Person updated';
|
||||
} else if (getApType(object) === 'Question') {
|
||||
await this.apQuestionService.updateQuestion(object, resolver).catch(err => console.error(err));
|
||||
await this.apQuestionService.updateQuestion(object, resolver).catch(err => this.logger.error(`err: failed to update question: ${err}`, { error: err }));
|
||||
return 'ok: Question updated';
|
||||
} else {
|
||||
return `skip: Unknown type: ${getApType(object)}`;
|
||||
|
|
|
@ -126,6 +126,7 @@ export class ApNoteService {
|
|||
resolver: { history: resolver.getHistory() },
|
||||
value,
|
||||
object,
|
||||
error: err
|
||||
});
|
||||
throw new Error('invalid note');
|
||||
}
|
||||
|
|
|
@ -301,7 +301,7 @@ export class ApPersonService implements OnModuleInit {
|
|||
const emojis = await this.apNoteService.extractEmojis(person.tag ?? [], host)
|
||||
.then(_emojis => _emojis.map(emoji => emoji.name))
|
||||
.catch(err => {
|
||||
this.logger.error('error occurred while fetching user emojis', { stack: err });
|
||||
this.logger.error('error occurred while fetching user emojis', { error: err });
|
||||
return [];
|
||||
});
|
||||
//#endregion
|
||||
|
@ -369,7 +369,7 @@ export class ApPersonService implements OnModuleInit {
|
|||
|
||||
user = u as MiRemoteUser;
|
||||
} else {
|
||||
this.logger.error(e instanceof Error ? e : new Error(e as string));
|
||||
this.logger.error('error occurred while creating user', { error: e });
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
@ -402,7 +402,7 @@ export class ApPersonService implements OnModuleInit {
|
|||
// Register to the cache
|
||||
this.cacheService.uriPersonCache.set(user.uri, user);
|
||||
} catch (err) {
|
||||
this.logger.error('error occurred while fetching user avatar/banner', { stack: err });
|
||||
this.logger.error('error occurred while fetching user avatar/banner', { error: err });
|
||||
}
|
||||
//#endregion
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue