From 1a414f1cfb43855c3b09130e3e88dd6a6f6654dd Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Fri, 30 May 2025 09:06:50 -0400 Subject: [PATCH 1/3] log configuration file paths when loading --- packages/backend/src/config.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index 8507420839..d9a7312463 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -379,7 +379,10 @@ export function loadConfig(): Config { process.env['MK_WARNED_ABOUT_CONFIG'] = '1'; } - const config = configFiles.map(path => fs.readFileSync(path, 'utf-8')) + const config = configFiles.map(path => { + console.log(`Reading configuration from ${path}`); + return fs.readFileSync(path, 'utf-8'); + }) .map(contents => yaml.load(contents) as Source) .reduce( (acc: Source, cur: Source) => Object.assign(acc, cur), From 47a81ba23598190967d0eb12c9b81e15936db1a6 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Fri, 30 May 2025 09:09:15 -0400 Subject: [PATCH 2/3] clarify error when configs fail to load --- packages/backend/src/config.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index d9a7312463..a3c50da2dc 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -499,6 +499,10 @@ export function loadConfig(): Config { } function tryCreateUrl(url: string) { + if (!url) { + throw new Error('Failed to load: no "url" property found in config. Please check the value of "MISSKEY_CONFIG_DIR" and "MISSKEY_CONFIG_YML", and verify that all configuration files are correct.'); + } + try { return new URL(url); } catch (e) { From 43d975896af1adedde372ab70a6685dd9a6f8101 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Fri, 30 May 2025 09:15:40 -0400 Subject: [PATCH 3/3] use standard logger class in config.ts --- packages/backend/src/config.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index a3c50da2dc..d61112ae40 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -9,6 +9,7 @@ import { dirname, resolve } from 'node:path'; import * as yaml from 'js-yaml'; import { globSync } from 'glob'; import ipaddr from 'ipaddr.js'; +import Logger from './logger.js'; import type * as Sentry from '@sentry/node'; import type * as SentryVue from '@sentry/vue'; import type { RedisOptions } from 'ioredis'; @@ -155,6 +156,8 @@ type Source = { } }; +const configLogger = new Logger('config'); + export type PrivateNetworkSource = string | { network?: string, ports?: number[] }; export type PrivateNetwork = { @@ -192,7 +195,7 @@ export function parsePrivateNetworks(patterns: PrivateNetworkSource[] | undefine } } - console.warn('[config] Skipping invalid entry in allowedPrivateNetworks: ', e); + configLogger.warn('Skipping invalid entry in allowedPrivateNetworks: ', e); return null; }) .filter(p => p != null); @@ -375,12 +378,12 @@ export function loadConfig(): Config { if (configFiles.length === 0 && !process.env['MK_WARNED_ABOUT_CONFIG']) { - console.log('No config files loaded, check if this is intentional'); + configLogger.warn('No config files loaded, check if this is intentional'); process.env['MK_WARNED_ABOUT_CONFIG'] = '1'; } const config = configFiles.map(path => { - console.log(`Reading configuration from ${path}`); + configLogger.info(`Reading configuration from ${path}`); return fs.readFileSync(path, 'utf-8'); }) .map(contents => yaml.load(contents) as Source)