diff --git a/packages/backend/src/queue/processors/db/delete-account.ts b/packages/backend/src/queue/processors/db/delete-account.ts index b5218064de..6e638821c1 100644 --- a/packages/backend/src/queue/processors/db/delete-account.ts +++ b/packages/backend/src/queue/processors/db/delete-account.ts @@ -13,7 +13,7 @@ const logger = queueLogger.createSubLogger("delete-account"); export async function deleteAccount( job: Bull.Job<DbUserDeleteJobData>, ): Promise<string | void> { - logger.info(`Deleting account of ${job.data.user.id} ...`); + logger.info(`Deleting account ${job.data.user.id} ...`); const user = await Users.findOneBy({ id: job.data.user.id }); if (!user) return; @@ -43,7 +43,7 @@ export async function deleteAccount( await Notes.delete(notes.map((note) => note.id)); } - logger.info("All of notes deleted"); + logger.info(`All posts of user ${job.data.user.id} were deleted`); } { @@ -73,7 +73,7 @@ export async function deleteAccount( } } - logger.info("All of files deleted"); + logger.info(`All files of user ${job.data.user.id} were deleted`); } { diff --git a/packages/backend/src/queue/processors/db/delete-drive-files.ts b/packages/backend/src/queue/processors/db/delete-drive-files.ts index f44814e6a9..c89b11ef03 100644 --- a/packages/backend/src/queue/processors/db/delete-drive-files.ts +++ b/packages/backend/src/queue/processors/db/delete-drive-files.ts @@ -54,8 +54,6 @@ export async function deleteDriveFiles( job.progress(deletedCount / total); } - logger.info( - `All drive files (${deletedCount}) of ${user.id} has been deleted.`, - ); + logger.info(`${deletedCount} drive files of user ${user.id} were deleted.`); done(); } diff --git a/packages/backend/src/queue/processors/db/export-blocking.ts b/packages/backend/src/queue/processors/db/export-blocking.ts index 73c7047bed..d4597ec2a2 100644 --- a/packages/backend/src/queue/processors/db/export-blocking.ts +++ b/packages/backend/src/queue/processors/db/export-blocking.ts @@ -9,6 +9,7 @@ import { createTemp } from "@/misc/create-temp.js"; import { Users, Blockings } from "@/models/index.js"; import { MoreThan } from "typeorm"; import type { DbUserJobData } from "@/queue/types.js"; +import { inspect } from "node:util"; const logger = queueLogger.createSubLogger("export-blocking"); @@ -27,7 +28,7 @@ export async function exportBlocking( // Create temp file const [path, cleanup] = await createTemp(); - logger.info(`Temp file is ${path}`); + logger.info(`temp file created: ${path}`); try { const stream = fs.createWriteStream(path, { flags: "a" }); @@ -63,9 +64,10 @@ export async function exportBlocking( const content = getFullApAccount(u.username, u.host); await new Promise<void>((res, rej) => { - stream.write(content + "\n", (err) => { + stream.write(`${content}\n`, (err) => { if (err) { - logger.error(err); + logger.warn("failed"); + logger.info(inspect(err)); rej(err); } else { res(); diff --git a/packages/backend/src/queue/processors/db/export-custom-emojis.ts b/packages/backend/src/queue/processors/db/export-custom-emojis.ts index 1817e10078..9a947aeb6a 100644 --- a/packages/backend/src/queue/processors/db/export-custom-emojis.ts +++ b/packages/backend/src/queue/processors/db/export-custom-emojis.ts @@ -29,7 +29,7 @@ export async function exportCustomEmojis( const [path, cleanup] = await createTempDir(); - logger.info(`Temp dir is ${path}`); + logger.info(`temp dir created: ${path}`); const metaPath = `${path}/meta.json`; @@ -41,7 +41,8 @@ export async function exportCustomEmojis( return new Promise<void>((res, rej) => { metaStream.write(text, (err) => { if (err) { - logger.error(err); + logger.warn("Failed to export custom emojis"); + logger.info(inspect(err)); rej(err); } else { res(); diff --git a/packages/backend/src/queue/processors/db/export-following.ts b/packages/backend/src/queue/processors/db/export-following.ts index bbaf7e5fd5..3209edb4f6 100644 --- a/packages/backend/src/queue/processors/db/export-following.ts +++ b/packages/backend/src/queue/processors/db/export-following.ts @@ -10,6 +10,7 @@ import { Users, Followings, Mutings } from "@/models/index.js"; import { In, MoreThan, Not } from "typeorm"; import type { DbUserJobData } from "@/queue/types.js"; import type { Following } from "@/models/entities/following.js"; +import { inspect } from "node:util"; const logger = queueLogger.createSubLogger("export-following"); @@ -28,7 +29,7 @@ export async function exportFollowing( // Create temp file const [path, cleanup] = await createTemp(); - logger.info(`Temp file is ${path}`); + logger.info(`temp file created: ${path}`); try { const stream = fs.createWriteStream(path, { flags: "a" }); @@ -78,9 +79,12 @@ export async function exportFollowing( const content = getFullApAccount(u.username, u.host); await new Promise<void>((res, rej) => { - stream.write(content + "\n", (err) => { + stream.write(`${content}\n`, (err) => { if (err) { - logger.error(err); + logger.warn( + `failed to export following users of ${job.data.user.id}`, + ); + logger.info(inspect(err)); rej(err); } else { res(); diff --git a/packages/backend/src/queue/processors/db/export-mute.ts b/packages/backend/src/queue/processors/db/export-mute.ts index 072ddf1ddf..0f097d1bc5 100644 --- a/packages/backend/src/queue/processors/db/export-mute.ts +++ b/packages/backend/src/queue/processors/db/export-mute.ts @@ -9,6 +9,7 @@ import { createTemp } from "@/misc/create-temp.js"; import { Users, Mutings } from "@/models/index.js"; import { IsNull, MoreThan } from "typeorm"; import type { DbUserJobData } from "@/queue/types.js"; +import { inspect } from "node:util"; const logger = queueLogger.createSubLogger("export-mute"); @@ -16,7 +17,7 @@ export async function exportMute( job: Bull.Job<DbUserJobData>, done: any, ): Promise<void> { - logger.info(`Exporting mute of ${job.data.user.id} ...`); + logger.info(`Exporting mutes of ${job.data.user.id} ...`); const user = await Users.findOneBy({ id: job.data.user.id }); if (user == null) { @@ -27,7 +28,7 @@ export async function exportMute( // Create temp file const [path, cleanup] = await createTemp(); - logger.info(`Temp file is ${path}`); + logger.info(`temp file created: ${path}`); try { const stream = fs.createWriteStream(path, { flags: "a" }); @@ -64,9 +65,10 @@ export async function exportMute( const content = getFullApAccount(u.username, u.host); await new Promise<void>((res, rej) => { - stream.write(content + "\n", (err) => { + stream.write(`${content}\n`, (err) => { if (err) { - logger.error(err); + logger.warn("failed"); + logger.info(inspect(err)); rej(err); } else { res(); diff --git a/packages/backend/src/queue/processors/db/export-notes.ts b/packages/backend/src/queue/processors/db/export-notes.ts index 9a2b823bf5..5635e9ab24 100644 --- a/packages/backend/src/queue/processors/db/export-notes.ts +++ b/packages/backend/src/queue/processors/db/export-notes.ts @@ -10,6 +10,7 @@ import type { Note } from "@/models/entities/note.js"; import type { Poll } from "@/models/entities/poll.js"; import type { DbUserJobData } from "@/queue/types.js"; import { createTemp } from "@/misc/create-temp.js"; +import { inspect } from "node:util"; const logger = queueLogger.createSubLogger("export-notes"); @@ -28,7 +29,7 @@ export async function exportNotes( // Create temp file const [path, cleanup] = await createTemp(); - logger.info(`Temp file is ${path}`); + logger.info(`temp file created: ${path}`); try { const stream = fs.createWriteStream(path, { flags: "a" }); @@ -37,7 +38,8 @@ export async function exportNotes( return new Promise<void>((res, rej) => { stream.write(text, (err) => { if (err) { - logger.error(err); + logger.warn(`failed to export posts of ${job.data.user.id}`); + logger.info(inspect(err)); rej(err); } else { res(); diff --git a/packages/backend/src/queue/processors/db/export-user-lists.ts b/packages/backend/src/queue/processors/db/export-user-lists.ts index 709da535c8..8e8f665dfe 100644 --- a/packages/backend/src/queue/processors/db/export-user-lists.ts +++ b/packages/backend/src/queue/processors/db/export-user-lists.ts @@ -9,6 +9,7 @@ import { createTemp } from "@/misc/create-temp.js"; import { Users, UserLists, UserListJoinings } from "@/models/index.js"; import { In } from "typeorm"; import type { DbUserJobData } from "@/queue/types.js"; +import { inspect } from "node:util"; const logger = queueLogger.createSubLogger("export-user-lists"); @@ -31,7 +32,7 @@ export async function exportUserLists( // Create temp file const [path, cleanup] = await createTemp(); - logger.info(`Temp file is ${path}`); + logger.info(`temp file created: ${path}`); try { const stream = fs.createWriteStream(path, { flags: "a" }); @@ -46,9 +47,10 @@ export async function exportUserLists( const acct = getFullApAccount(u.username, u.host); const content = `${list.name},${acct}`; await new Promise<void>((res, rej) => { - stream.write(content + "\n", (err) => { + stream.write(`${content}\n`, (err) => { if (err) { - logger.error(err); + logger.warn(`failed to export ${list.id}`); + logger.info(inspect(err)); rej(err); } else { res(); diff --git a/packages/backend/src/queue/processors/db/import-blocking.ts b/packages/backend/src/queue/processors/db/import-blocking.ts index 512d2f8c4b..ed5e045af0 100644 --- a/packages/backend/src/queue/processors/db/import-blocking.ts +++ b/packages/backend/src/queue/processors/db/import-blocking.ts @@ -66,11 +66,12 @@ export async function importBlocking( // skip myself if (target.id === job.data.user.id) continue; - logger.info(`Block[${linenum}] ${target.id} ...`); + logger.debug(`Block[${linenum}] ${target.id} ...`); await block(user, target); } catch (e) { - logger.warn(`Error in line ${linenum}:\n${inspect(e)}`); + logger.warn(`failed: error in line ${linenum}`); + logger.info(inspect(e)); } } diff --git a/packages/backend/src/queue/processors/db/import-custom-emojis.ts b/packages/backend/src/queue/processors/db/import-custom-emojis.ts index edbaf99b5a..da0b4796c7 100644 --- a/packages/backend/src/queue/processors/db/import-custom-emojis.ts +++ b/packages/backend/src/queue/processors/db/import-custom-emojis.ts @@ -32,7 +32,7 @@ export async function importCustomEmojis( const [tempPath, cleanup] = await createTempDir(); - logger.info(`Temp dir is ${tempPath}`); + logger.debug(`temp dir created: ${tempPath}`); const destPath = `${tempPath}/emojis.zip`; diff --git a/packages/backend/src/queue/processors/db/import-firefish-post.ts b/packages/backend/src/queue/processors/db/import-firefish-post.ts index 6599519751..c1052751d0 100644 --- a/packages/backend/src/queue/processors/db/import-firefish-post.ts +++ b/packages/backend/src/queue/processors/db/import-firefish-post.ts @@ -49,7 +49,7 @@ export async function importCkPost( }); files.push(file); } catch (e) { - logger.error(`Skipped adding file to drive: ${url}`); + logger.info(`Skipped adding file to drive: ${url}`); } } const { text, cw, localOnly, createdAt, visibility } = Post.parse(post); @@ -71,12 +71,12 @@ export async function importCkPost( fileIds: note.fileIds, updatedAt: new Date(), }); - logger.info(`Note file updated`); + logger.info("Post updated"); } if (!note) { note = await create(user, { createdAt: createdAt, - files: files.length == 0 ? undefined : files, + files: files.length === 0 ? undefined : files, poll: undefined, text: text || undefined, reply: post.replyId ? job.data.parent : null, @@ -90,9 +90,9 @@ export async function importCkPost( apHashtags: undefined, apEmojis: undefined, }); - logger.info(`Create new note`); + logger.debug("New post has been created"); } else { - logger.info(`Note exist`); + logger.info("This post already exists"); } logger.info("Imported"); if (post.childNotes) { diff --git a/packages/backend/src/queue/processors/db/import-following.ts b/packages/backend/src/queue/processors/db/import-following.ts index e09781577e..92a2bac2c8 100644 --- a/packages/backend/src/queue/processors/db/import-following.ts +++ b/packages/backend/src/queue/processors/db/import-following.ts @@ -64,11 +64,12 @@ export async function importFollowing( // skip myself if (target.id === job.data.user.id) continue; - logger.info(`Follow[${linenum}] ${target.id} ...`); + logger.debug(`Follow[${linenum}] ${target.id} ...`); follow(user, target); } catch (e) { - logger.warn(`Error in line ${linenum}:\n${inspect(e)}`); + logger.warn(`Error in line ${linenum}`); + logger.info(inspect(e)); } } } else { @@ -102,11 +103,12 @@ export async function importFollowing( // skip myself if (target.id === job.data.user.id) continue; - logger.info(`Follow[${linenum}] ${target.id} ...`); + logger.debug(`Follow[${linenum}] ${target.id} ...`); follow(user, target); } catch (e) { - logger.warn(`Error in line ${linenum}:\n${inspect(e)}`); + logger.warn(`Error in line ${linenum}`); + logger.info(inspect(e)); } } } diff --git a/packages/backend/src/queue/processors/db/import-masto-post.ts b/packages/backend/src/queue/processors/db/import-masto-post.ts index ccd43ec357..bd896385cd 100644 --- a/packages/backend/src/queue/processors/db/import-masto-post.ts +++ b/packages/backend/src/queue/processors/db/import-masto-post.ts @@ -73,7 +73,7 @@ export async function importMastoPost( }); files.push(file); } catch (e) { - logger.error(`Skipped adding file to drive: ${url}`); + logger.warn(`Skipped adding file to drive: ${url}`); } } } @@ -97,14 +97,14 @@ export async function importMastoPost( fileIds: note.fileIds, updatedAt: new Date(), }); - logger.info(`Note file updated`); + logger.info("Post updated"); } if (!note) { note = await create(user, { createdAt: isRenote ? new Date(post.published) : new Date(post.object.published), - files: files.length == 0 ? undefined : files, + files: files.length === 0 ? undefined : files, poll: undefined, text: text || undefined, reply, @@ -118,9 +118,9 @@ export async function importMastoPost( apHashtags: undefined, apEmojis: undefined, }); - logger.info(`Create new note`); + logger.debug("New post has been created"); } else { - logger.info(`Note exist`); + logger.info("This post already exists"); } job.progress(100); done(); diff --git a/packages/backend/src/queue/processors/db/import-muting.ts b/packages/backend/src/queue/processors/db/import-muting.ts index bdb1899cd5..af65837e29 100644 --- a/packages/backend/src/queue/processors/db/import-muting.ts +++ b/packages/backend/src/queue/processors/db/import-muting.ts @@ -66,11 +66,12 @@ export async function importMuting( // skip myself if (target.id === job.data.user.id) continue; - logger.info(`Mute[${linenum}] ${target.id} ...`); + logger.debug(`Mute[${linenum}] ${target.id} ...`); await mute(user, target); } catch (e) { - logger.warn(`Error in line ${linenum}: ${inspect(e)}`); + logger.warn(`Error in line ${linenum}`); + logger.info(inspect(e)); } } diff --git a/packages/backend/src/queue/processors/db/import-posts.ts b/packages/backend/src/queue/processors/db/import-posts.ts index ac6b69ac17..ff9964dd6b 100644 --- a/packages/backend/src/queue/processors/db/import-posts.ts +++ b/packages/backend/src/queue/processors/db/import-posts.ts @@ -45,7 +45,8 @@ export async function importPosts( } } catch (e) { // handle error - logger.warn(`Failed to read Mastodon archive:\n${inspect(e)}`); + logger.warn("Failed to read Mastodon archive"); + logger.info(inspect(e)); } logger.info("Mastodon archive imported"); done(); @@ -56,21 +57,22 @@ export async function importPosts( try { const parsed = JSON.parse(json); - if (parsed instanceof Array) { - logger.info("Parsing key style posts"); + if (Array.isArray(parsed)) { + logger.info("Parsing *key posts"); const arr = recreateChain(parsed); for (const post of arr) { createImportCkPostJob(job.data.user, post, job.data.signatureCheck); } } else if (parsed instanceof Object) { - logger.info("Parsing animal style posts"); + logger.info("Parsing Mastodon posts"); for (const post of parsed.orderedItems) { createImportMastoPostJob(job.data.user, post, job.data.signatureCheck); } } } catch (e) { // handle error - logger.warn(`Error occured while reading:\n${inspect(e)}`); + logger.warn("an error occured while reading"); + logger.info(inspect(e)); } logger.info("Imported"); diff --git a/packages/backend/src/queue/processors/db/import-user-lists.ts b/packages/backend/src/queue/processors/db/import-user-lists.ts index 1fe44d03e7..f4e8523ba8 100644 --- a/packages/backend/src/queue/processors/db/import-user-lists.ts +++ b/packages/backend/src/queue/processors/db/import-user-lists.ts @@ -86,7 +86,8 @@ export async function importUserLists( pushUserToUserList(target, list!); } catch (e) { - logger.warn(`Error in line ${linenum}:\n${inspect(e)}`); + logger.warn(`Error in line ${linenum}`); + logger.info(inspect(e)); } } diff --git a/packages/backend/src/queue/processors/object-storage/clean-remote-files.ts b/packages/backend/src/queue/processors/object-storage/clean-remote-files.ts index 0911fc4960..87170a8472 100644 --- a/packages/backend/src/queue/processors/object-storage/clean-remote-files.ts +++ b/packages/backend/src/queue/processors/object-storage/clean-remote-files.ts @@ -48,6 +48,6 @@ export default async function cleanRemoteFiles( job.progress(deletedCount / total); } - logger.info("All cached remote files has been deleted."); + logger.info("All cached remote files are deleted."); done(); } diff --git a/packages/backend/src/queue/processors/system/clean.ts b/packages/backend/src/queue/processors/system/clean.ts index 2319d7b484..8d5575e887 100644 --- a/packages/backend/src/queue/processors/system/clean.ts +++ b/packages/backend/src/queue/processors/system/clean.ts @@ -4,7 +4,7 @@ import { UserIps } from "@/models/index.js"; import { queueLogger } from "../../logger.js"; -const logger = queueLogger.createSubLogger("clean"); +const logger = queueLogger.createSubLogger("clean-user-ip-log"); export async function clean( job: Bull.Job<Record<string, unknown>>, diff --git a/packages/backend/src/queue/processors/system/local-emoji-size.ts b/packages/backend/src/queue/processors/system/local-emoji-size.ts index 6a885de54c..bd4dc6b5d4 100644 --- a/packages/backend/src/queue/processors/system/local-emoji-size.ts +++ b/packages/backend/src/queue/processors/system/local-emoji-size.ts @@ -27,9 +27,8 @@ export async function setLocalEmojiSizes( height: size.height || null, }); } catch (e) { - logger.error( - `Unable to set emoji size (${i + 1}/${emojis.length}):\n${inspect(e)}`, - ); + logger.warn(`Unable to set emoji size (${i + 1}/${emojis.length})`); + logger.info(inspect(e)); /* skip if any error happens */ } finally { // wait for 1sec so that this would not overwhelm the object storage. diff --git a/packages/backend/src/queue/processors/system/verify-links.ts b/packages/backend/src/queue/processors/system/verify-links.ts index bcd69d4f15..46eabbd831 100644 --- a/packages/backend/src/queue/processors/system/verify-links.ts +++ b/packages/backend/src/queue/processors/system/verify-links.ts @@ -33,7 +33,8 @@ export async function verifyLinks( fields: user.fields, }); } catch (e) { - logger.error(`Failed to update user ${user.userId}:\n${inspect(e)}`); + logger.error(`Failed to update user ${user.userId}`); + logger.info(inspect(e)); done(e); } } diff --git a/packages/backend/src/server/activitypub.ts b/packages/backend/src/server/activitypub.ts index 1e070f91f9..82deabfecc 100644 --- a/packages/backend/src/server/activitypub.ts +++ b/packages/backend/src/server/activitypub.ts @@ -42,9 +42,11 @@ const router = new Router(); //#region Routing +const inboxLogger = serverLogger.createSubLogger("inbox"); + function inbox(ctx: Router.RouterContext) { if (ctx.req.headers.host !== config.host) { - serverLogger.warn("inbox: Invalid Host"); + inboxLogger.warn(`regecting invalid host (${ctx.req.headers.host})`); ctx.status = 400; ctx.message = "Invalid Host"; return; @@ -57,7 +59,6 @@ function inbox(ctx: Router.RouterContext) { headers: ["(request-target)", "digest", "host", "date"], }); } catch (e) { - serverLogger.warn(`inbox: signature parse error:\n${inspect(e)}`); ctx.status = 401; if (e instanceof Error) { @@ -67,6 +68,9 @@ function inbox(ctx: Router.RouterContext) { ctx.message = "Missing Required Header"; } + inboxLogger.info(`signature parse error: ${ctx.message}`); + inboxLogger.debug(inspect(e)); + return; } @@ -76,8 +80,8 @@ function inbox(ctx: Router.RouterContext) { .toLowerCase() .match(/^((dsa|rsa|ecdsa)-(sha256|sha384|sha512)|ed25519-sha512|hs2019)$/) ) { - serverLogger.warn( - `inbox: invalid signature algorithm ${signature.algorithm}`, + inboxLogger.info( + `rejecting signature: unknown algorithm (${signature.algorithm})`, ); ctx.status = 401; ctx.message = "Invalid Signature Algorithm"; @@ -92,8 +96,8 @@ function inbox(ctx: Router.RouterContext) { const digest = ctx.req.headers.digest; if (typeof digest !== "string") { - serverLogger.warn( - "inbox: zero or more than one digest header(s) are present", + inboxLogger.info( + "rejecting invalid signature: zero or more than one digest header(s)", ); ctx.status = 401; ctx.message = "Invalid Digest Header"; @@ -103,7 +107,7 @@ function inbox(ctx: Router.RouterContext) { const match = digest.match(/^([0-9A-Za-z-]+)=(.+)$/); if (match == null) { - serverLogger.warn("inbox: unrecognized digest header"); + inboxLogger.info("rejecting signature: unrecognized digest header"); ctx.status = 401; ctx.message = "Invalid Digest Header"; return; @@ -113,7 +117,7 @@ function inbox(ctx: Router.RouterContext) { const expectedDigest = match[2]; if (digestAlgo.toUpperCase() !== "SHA-256") { - serverLogger.warn("inbox: unsupported digest algorithm"); + inboxLogger.info("rejecting signature: unsupported digest algorithm"); ctx.status = 401; ctx.message = "Unsupported Digest Algorithm"; return; @@ -125,7 +129,7 @@ function inbox(ctx: Router.RouterContext) { .digest("base64"); if (expectedDigest !== actualDigest) { - serverLogger.warn("inbox: Digest Mismatch"); + inboxLogger.info("rejecting invalid signature: Digest Mismatch"); ctx.status = 401; ctx.message = "Digest Missmatch"; return; @@ -215,7 +219,9 @@ router.get("/notes/:note", async (ctx, next) => { serverLogger.debug(JSON.stringify(remoteUser, null, 2)); if (remoteUser == null) { - serverLogger.debug("Rejecting: no user"); + serverLogger.info( + "rejecting fetch attempt of private post: no authentication", + ); ctx.status = 401; return; } @@ -225,14 +231,14 @@ router.get("/notes/:note", async (ctx, next) => { serverLogger.debug(JSON.stringify(relation, null, 2)); if (!relation.isFollowing || relation.isBlocked) { - serverLogger.debug( - "Rejecting: authenticated user is not following us or was blocked by us", + serverLogger.info( + "rejecting fetch attempt of private post: user is not a follower or is blocked", ); ctx.status = 403; return; } - serverLogger.debug("Accepting: access criteria met"); + serverLogger.debug("accepting fetch attempt of private post"); } ctx.body = renderActivity(await renderNote(note, false)); diff --git a/packages/backend/src/server/file/send-drive-file.ts b/packages/backend/src/server/file/send-drive-file.ts index 01ec93e448..cef94d2659 100644 --- a/packages/backend/src/server/file/send-drive-file.ts +++ b/packages/backend/src/server/file/send-drive-file.ts @@ -28,7 +28,7 @@ const MAX_BYTE_RANGES = 10; const commonReadableHandlerGenerator = (ctx: Koa.Context) => (e: Error): void => { - serverLogger.error(e); + serverLogger.warn(e); ctx.status = 500; ctx.set("Cache-Control", "max-age=300"); }; @@ -109,7 +109,8 @@ export default async function (ctx: Koa.Context) { ); ctx.set("Cache-Control", "max-age=31536000, immutable"); } catch (e) { - serverLogger.error(`${inspect(e)}`); + serverLogger.warn(`failed to fetch/convert ${file.uri}`); + serverLogger.debug(inspect(e)); if (e instanceof StatusError && e.isClientError) { ctx.status = e.statusCode; diff --git a/packages/backend/src/server/index.ts b/packages/backend/src/server/index.ts index 54d6e8bf5f..3b58c63118 100644 --- a/packages/backend/src/server/index.ts +++ b/packages/backend/src/server/index.ts @@ -52,7 +52,7 @@ if (!["production", "test"].includes(process.env.NODE_ENV || "")) { // Logger app.use( koaLogger((str) => { - serverLogger.info(str); + serverLogger.debug(str); }), ); @@ -177,7 +177,7 @@ mastoRouter.post("/oauth/token", async (ctx) => { console.log(body.code, token); token = body.code; } - if (client_id instanceof Array) { + if (Array.isArray(client_id)) { client_id = client_id.toString(); } else if (!client_id) { client_id = null; @@ -194,10 +194,10 @@ mastoRouter.post("/oauth/token", async (ctx) => { scope: body.scope || "read write follow push", created_at: Math.floor(Date.now() / 1000), }; - serverLogger.info("token-response", ret); + serverLogger.debug("Mastodon API token response", ret); ctx.body = ret; } catch (err: any) { - serverLogger.error(inspect(err)); + serverLogger.warn(err); ctx.status = 401; ctx.body = err.response.data; } @@ -246,7 +246,7 @@ export default () => ); break; default: - serverLogger.error(e); + serverLogger.error(inspect(e)); break; } diff --git a/packages/backend/src/server/proxy/proxy-media.ts b/packages/backend/src/server/proxy/proxy-media.ts index a505d74a0f..bb43c21f83 100644 --- a/packages/backend/src/server/proxy/proxy-media.ts +++ b/packages/backend/src/server/proxy/proxy-media.ts @@ -131,7 +131,8 @@ export async function proxyMedia(ctx: Koa.Context) { ctx.set("Cache-Control", "max-age=31536000, immutable"); ctx.body = image.data; } catch (e) { - serverLogger.error(`${inspect(e)}`); + serverLogger.warn(`failed to proxy ${url}`); + serverLogger.debug(inspect(e)); if (e instanceof StatusError && (e.statusCode === 302 || e.isClientError)) { ctx.status = e.statusCode; diff --git a/packages/backend/src/services/logger.ts b/packages/backend/src/services/logger.ts index 640cc41452..92fc7c6e79 100644 --- a/packages/backend/src/services/logger.ts +++ b/packages/backend/src/services/logger.ts @@ -103,9 +103,9 @@ export default class Logger { : level === "warning" ? chalk.yellow("WARN") : level === "info" - ? chalk.green("INFO") + ? chalk.cyan("INFO") : level === "debug" - ? chalk.blue("DEBUG") + ? chalk.green("DEBUG") : level === "trace" ? chalk.gray("TRACE") : null;