chore (backend): revise apLogger log levels (#10907)

This commit is contained in:
naskya 2024-04-25 11:42:16 +09:00
parent 76a45fa6ac
commit cdea55ab25
No known key found for this signature in database
GPG key ID: 712D413B3A9FED5C
15 changed files with 88 additions and 80 deletions

View file

@ -133,7 +133,8 @@ export default class DeliverManager {
host: new URL(inbox).host,
});
} catch (error) {
apLogger.error(`Invalid Inbox ${inbox}:\n${inspect(error)}`);
apLogger.info(`Invalid Inbox ${inbox}`);
apLogger.debug(inspect(error));
}
}

View file

@ -6,20 +6,19 @@ import { isFollow, getApType } from "../../type.js";
import { apLogger } from "../../logger.js";
import { inspect } from "node:util";
const logger = apLogger;
export default async (
actor: CacheableRemoteUser,
activity: IAccept,
): Promise<string> => {
const uri = activity.id || activity;
logger.info(`Accept: ${uri}`);
apLogger.info(`Accept: ${uri}`);
const resolver = new Resolver();
const object = await resolver.resolve(activity.object).catch((e) => {
logger.error(`Resolution failed:\n${inspect(e)}`);
apLogger.info(`Failed to resolve AP object: ${e}`);
apLogger.debug(inspect(e));
throw e;
});

View file

@ -5,15 +5,13 @@ import type { IAnnounce } from "../../type.js";
import { getApId } from "../../type.js";
import { apLogger } from "../../logger.js";
const logger = apLogger;
export default async (
actor: CacheableRemoteUser,
activity: IAnnounce,
): Promise<void> => {
const uri = getApId(activity);
logger.info(`Announce: ${uri}`);
apLogger.info(`Announce: ${uri}`);
const resolver = new Resolver();

View file

@ -13,8 +13,6 @@ import { Notes } from "@/models/index.js";
import { isBlockedServer } from "backend-rs";
import { inspect } from "node:util";
const logger = apLogger;
/**
* Handle announcement activities
*/
@ -50,11 +48,14 @@ export default async function (
// Skip if target is 4xx
if (e instanceof StatusError) {
if (e.isClientError) {
logger.warn(`Ignored announce target ${targetUri} - ${e.statusCode}`);
apLogger.info(
`Ignored announce target ${targetUri} - ${e.statusCode}`,
);
return;
}
logger.warn(`Error in announce target ${targetUri}:\n${inspect(e)}`);
apLogger.warn(`Error in announce target ${targetUri}`);
apLogger.debug(inspect(e));
}
throw e;
}
@ -63,7 +64,7 @@ export default async function (
console.log("skip: invalid actor for this activity");
return;
}
logger.info(`Creating the (Re)Note: ${uri}`);
apLogger.info(`Creating (re)note: ${uri}`);
const activityAudience = await parseAudience(
actor,

View file

@ -7,15 +7,13 @@ import { apLogger } from "../../logger.js";
import { toArray, concat, unique } from "@/prelude/array.js";
import { inspect } from "node:util";
const logger = apLogger;
export default async (
actor: CacheableRemoteUser,
activity: ICreate,
): Promise<void> => {
const uri = getApId(activity);
logger.info(`Create: ${uri}`);
apLogger.info(`Create: ${uri}`);
// copy audiences between activity <=> object.
if (typeof activity.object === "object") {
@ -40,13 +38,14 @@ export default async (
const resolver = new Resolver();
const object = await resolver.resolve(activity.object).catch((e) => {
logger.error(`Resolution failed:\n${inspect(e)}`);
apLogger.info(`Failed to resolve AP object: ${e}`);
apLogger.debug(inspect(e));
throw e;
});
if (isPost(object)) {
createNote(resolver, actor, object, false, activity);
} else {
logger.warn(`Unknown type: ${getApType(object)}`);
apLogger.info(`Unknown type: ${getApType(object)}`);
}
};

View file

@ -3,13 +3,11 @@ import { createDeleteAccountJob } from "@/queue/index.js";
import type { CacheableRemoteUser } from "@/models/entities/user.js";
import { Users } from "@/models/index.js";
const logger = apLogger;
export async function deleteActor(
actor: CacheableRemoteUser,
uri: string,
): Promise<string> {
logger.info(`Deleting the Actor: ${uri}`);
apLogger.info(`Deleting Actor: ${uri}`);
if (actor.uri !== uri) {
return `skip: delete actor ${actor.uri} !== ${uri}`;

View file

@ -5,13 +5,11 @@ import DbResolver from "../../db-resolver.js";
import { getApLock } from "@/misc/app-lock.js";
import { deleteMessage } from "@/services/messages/delete.js";
const logger = apLogger;
export default async function (
actor: CacheableRemoteUser,
uri: string,
): Promise<string> {
logger.info(`Deleting the Note: ${uri}`);
apLogger.info(`Deleting note: ${uri}`);
const lock = await getApLock(uri);

View file

@ -54,7 +54,8 @@ export async function performActivity(
try {
await performOneActivity(actor, act);
} catch (err) {
apLogger.error(inspect(err));
apLogger.info(`Failed to perform activity: ${err}`);
apLogger.debug(inspect(err));
}
}
} else {
@ -88,9 +89,15 @@ async function performOneActivity(
} else if (isReject(activity)) {
await reject(actor, activity);
} else if (isAdd(activity)) {
await add(actor, activity).catch((err) => apLogger.error(inspect(err)));
await add(actor, activity).catch((err) => {
apLogger.warn(`Failed to perform 'add' activity: ${err}`);
apLogger.debug(inspect(err));
});
} else if (isRemove(activity)) {
await remove(actor, activity).catch((err) => apLogger.error(inspect(err)));
await remove(actor, activity).catch((err) => {
apLogger.warn(`Failed to perform 'remove' activity: ${err}`);
apLogger.debug(inspect(err));
});
} else if (isAnnounce(activity)) {
await announce(actor, activity);
} else if (isLike(activity)) {
@ -104,7 +111,7 @@ async function performOneActivity(
} else if (isMove(activity)) {
await move(actor, activity);
} else {
apLogger.warn(
apLogger.info(
`Unrecognized activity type: ${(activity as IActivity).type}`,
);
}

View file

@ -14,12 +14,13 @@ export default async (
): Promise<string> => {
const uri = activity.id || activity;
logger.info(`Reject: ${uri}`);
apLogger.info(`Reject: ${uri}`);
const resolver = new Resolver();
const object = await resolver.resolve(activity.object).catch((e) => {
logger.error(`Resolution failed:\n${inspect(e)}`);
apLogger.info(`Failed to resolve AP object: ${e}`);
apLogger.debug(inspect(e));
throw e;
});

View file

@ -17,8 +17,6 @@ import Resolver from "../../resolver.js";
import { apLogger } from "../../logger.js";
import { inspect } from "node:util";
const logger = apLogger;
export default async (
actor: CacheableRemoteUser,
activity: IUndo,
@ -29,12 +27,13 @@ export default async (
const uri = activity.id || activity;
logger.info(`Undo: ${uri}`);
apLogger.info(`Undo: ${uri}`);
const resolver = new Resolver();
const object = await resolver.resolve(activity.object).catch((e) => {
logger.error(`Resolution failed:\n${inspect(e)}`);
apLogger.info(`Failed to resolve AP object: ${e}`);
apLogger.debug(inspect(e));
throw e;
});

View file

@ -18,12 +18,13 @@ export default async (
return "skip: invalid actor";
}
apLogger.debug("Update");
apLogger.info("Update");
const resolver = new Resolver();
const object = await resolver.resolve(activity.object).catch((e) => {
apLogger.error(`Resolution failed:\n${inspect(e)}`);
apLogger.info(`Failed to resolve AP object: ${e}`);
apLogger.debug(inspect(e));
throw e;
});

View file

@ -11,8 +11,6 @@ import { DriveFiles } from "@/models/index.js";
import { truncate } from "@/misc/truncate.js";
import { DB_MAX_IMAGE_COMMENT_LENGTH } from "@/misc/hard-limits.js";
const logger = apLogger;
/**
* create an Image.
*/
@ -36,7 +34,7 @@ export async function createImage(
throw new Error(`Invalid image, unexpected schema: ${image.url}`);
}
logger.info(`Creating the Image: ${image.url}`);
apLogger.info(`Creating an image: ${image.url}`);
const instance = await fetchMeta(true);

View file

@ -50,8 +50,6 @@ import { type Size, getEmojiSize } from "@/misc/emoji-meta.js";
import { langmap } from "@/misc/langmap.js";
import { inspect } from "node:util";
const logger = apLogger;
export function validateNote(object: any, uri: string) {
const expectHost = extractHost(uri);
@ -112,13 +110,16 @@ export async function createNote(
const entryUri = getApId(value);
const err = validateNote(object, entryUri);
if (err) {
logger.error(`${err.message}`, {
resolver: {
history: resolver.getHistory(),
},
value: value,
object: object,
});
apLogger.info(`${err.message}`);
apLogger.debug(
inspect({
resolver: {
history: resolver.getHistory(),
},
value: value,
object: object,
}),
);
throw new Error("invalid note");
}
@ -140,8 +141,8 @@ export async function createNote(
throw new Error(`unexpected schema of note url: ${url}`);
}
logger.debug(`Note fetched: ${JSON.stringify(note, null, 2)}`);
logger.info(`Creating the Note: ${note.id}`);
apLogger.trace(`Note fetched: ${JSON.stringify(note, null, 2)}`);
apLogger.info(`Creating the Note: ${note.id}`);
// Skip if note is made before 2007 (1yr before Fedi was created)
// OR skip if note is made 3 days in advance
@ -150,13 +151,13 @@ export async function createNote(
const FutureCheck = new Date();
FutureCheck.setDate(FutureCheck.getDate() + 3); // Allow some wiggle room for misconfigured hosts
if (DateChecker.getFullYear() < 2007) {
logger.warn(
apLogger.info(
"Note somehow made before Activitypub was created; discarding",
);
return null;
}
if (DateChecker > FutureCheck) {
logger.warn("Note somehow made after today; discarding");
apLogger.info("Note somehow made after today; discarding");
return null;
}
}
@ -169,8 +170,8 @@ export async function createNote(
// Skip if author is suspended.
if (actor.isSuspended) {
logger.debug(
`User ${actor.usernameLower}@${actor.host} suspended; discarding.`,
apLogger.info(
`User ${actor.usernameLower}@${actor.host} is suspended; discarding.`,
);
return null;
}
@ -224,7 +225,7 @@ export async function createNote(
? await resolveNote(note.inReplyTo, resolver)
.then((x) => {
if (x == null) {
logger.warn("Specified inReplyTo, but nout found");
apLogger.info(`Specified inReplyTo not found: ${note.inReplyTo}`);
throw new Error("inReplyTo not found");
} else {
return x;
@ -242,7 +243,8 @@ export async function createNote(
}
}
logger.warn(`Error in inReplyTo ${note.inReplyTo}:\n${inspect(e)}`);
apLogger.info(`Error in inReplyTo ${note.inReplyTo}`);
apLogger.debug(inspect(e));
throw e;
})
: null;
@ -336,11 +338,11 @@ export async function createNote(
index: number,
): Promise<null> => {
if (poll.expiresAt && Date.now() > new Date(poll.expiresAt).getTime()) {
logger.warn(
`vote to expired poll from AP: actor=${actor.username}@${actor.host}, note=${note.id}, choice=${name}`,
apLogger.info(
`discarding vote to expired poll: actor=${actor.username}@${actor.host}, note=${note.id}, choice=${name}`,
);
} else if (index >= 0) {
logger.info(
apLogger.info(
`vote from AP: actor=${actor.username}@${actor.host}, note=${note.id}, choice=${name}`,
);
await vote(actor, reply, index);
@ -357,7 +359,8 @@ export async function createNote(
}
const emojis = await extractEmojis(note.tag || [], actor.host).catch((e) => {
logger.info(`extractEmojis:\n${inspect(e)}`);
apLogger.info("Failed to extract emojis");
apLogger.debug(inspect(e));
return [] as Emoji[];
});
@ -515,7 +518,7 @@ export async function extractEmojis(
return exists;
}
logger.info(`register emoji host=${host}, name=${name}`);
apLogger.info(`register emoji host=${host}, name=${name}`);
let size: Size = { width: 0, height: 0 };
try {

View file

@ -48,8 +48,6 @@ import { resolveNote, extractEmojis } from "./note.js";
import { resolveImage } from "./image.js";
import { inspect } from "node:util";
const logger = apLogger;
const nameLength = 128;
const summaryLength = 2048;
@ -178,7 +176,7 @@ export async function createPerson(
const person = validateActor(object, uri);
logger.info(`Creating the Person: ${person.id}`);
apLogger.info(`Creating Person: ${person.id}`);
const host = toPuny(new URL(object.id).hostname);
@ -347,7 +345,8 @@ export async function createPerson(
throw new Error("already registered");
}
} else {
logger.error(inspect(e));
apLogger.info(`Failed to create a Person actor: ${person.url}`);
apLogger.debug(inspect(e));
throw e;
}
}
@ -388,7 +387,8 @@ export async function createPerson(
//#region Get custom emoji
const emojis = await extractEmojis(person.tag || [], host).catch((e) => {
logger.info(`extractEmojis:\n${inspect(e)}`);
apLogger.info("Failed to extract emojis");
apLogger.debug(inspect(e));
return [] as Emoji[];
});
@ -399,9 +399,10 @@ export async function createPerson(
});
//#endregion
await updateFeatured(user!.id, resolver).catch((err) =>
logger.error(inspect(err)),
);
await updateFeatured(user!.id, resolver).catch((err) => {
apLogger.info(`Failed to update featured collection of ${user.uri}`);
apLogger.debug(inspect(err));
});
return user!;
}
@ -439,7 +440,7 @@ export async function updatePerson(
const person = validateActor(object, uri);
logger.info(`Updating the Person: ${person.id}`);
apLogger.info(`Updating the Person: ${person.id}`);
// Fetch avatar and header image
const [avatar, banner] = await Promise.all(
@ -456,7 +457,8 @@ export async function updatePerson(
// Custom pictogram acquisition
const emojis = await extractEmojis(person.tag || [], user.host).catch((e) => {
logger.info(`extractEmojis:\n${inspect(e)}`);
apLogger.info("Failed to extract emojis");
apLogger.debug(inspect(e));
return [] as Emoji[];
});
@ -626,9 +628,10 @@ export async function updatePerson(
},
);
await updateFeatured(user.id, resolver).catch((err) =>
logger.error(inspect(err)),
);
await updateFeatured(user.id, resolver).catch((err) => {
apLogger.info(`Failed to update featured collection of ${user.uri}`);
apLogger.debug(inspect(err));
});
}
/**
@ -681,7 +684,7 @@ export async function updateFeatured(userId: User["id"], resolver?: Resolver) {
if (!Users.isRemoteUser(user)) return;
if (!user.featured) return;
logger.info(`Updating the featured: ${user.uri}`);
apLogger.info(`Updating the featured collection: ${user.uri}`);
if (resolver == null) resolver = new Resolver();

View file

@ -76,12 +76,12 @@ export default class Resolver {
throw new Error("instance is blocked");
}
}
apLogger.debug("Returning existing object:");
apLogger.debug(JSON.stringify(value, null, 2));
apLogger.debug("Returning the existing object");
apLogger.trace(JSON.stringify(value, null, 2));
return value;
}
apLogger.debug(`Resolving: ${value}`);
apLogger.info(`Resolving: ${value}`);
if (value.includes("#")) {
// URLs with fragment parts cannot be resolved correctly because
@ -115,8 +115,10 @@ export default class Resolver {
this.user = await getInstanceActor();
}
apLogger.debug("Getting object from remote, authenticated as user:");
apLogger.debug(JSON.stringify(this.user, null, 2));
apLogger.info(
`Getting object from remote, authenticated as user ${this.user.id}`,
);
apLogger.trace(JSON.stringify(this.user, null, 2));
const { finalUrl, content: object } = await apGet(value, this.user);