From e2a611620027063d3c8a60c257004c847bf636da Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Tue, 28 Dec 2021 19:56:09 +0100 Subject: refactor: Simpler logging with loglevel --- packages/main/src/controllers/config.ts | 7 ++-- packages/main/src/controllers/nativeTheme.ts | 5 ++- packages/main/src/utils.ts | 23 ------------- packages/main/src/utils/index.ts | 25 ++++++++++++++ packages/main/src/utils/logging.ts | 49 ++++++++++++++++++++++++++++ 5 files changed, 79 insertions(+), 30 deletions(-) delete mode 100644 packages/main/src/utils.ts create mode 100644 packages/main/src/utils/index.ts create mode 100644 packages/main/src/utils/logging.ts (limited to 'packages/main/src') diff --git a/packages/main/src/controllers/config.ts b/packages/main/src/controllers/config.ts index b6aba35..7187ab4 100644 --- a/packages/main/src/controllers/config.ts +++ b/packages/main/src/controllers/config.ts @@ -18,18 +18,17 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import consola from 'consola'; import { debounce } from 'lodash'; import ms from 'ms'; import { applySnapshot, getSnapshot, onSnapshot } from 'mobx-state-tree'; import type { ConfigPersistenceService } from '../services/ConfigPersistenceService'; import type { Config, ConfigSnapshotOut } from '../stores/Config'; -import { Disposer } from '../utils'; +import { Disposer, getLogger } from '../utils'; const DEFAULT_CONFIG_DEBOUNCE_TIME = ms('1s'); -const logger = consola.withTag('sophie:controller:config'); +const logger = getLogger('controller:config'); export async function initConfig( config: Config, @@ -71,7 +70,7 @@ export async function initConfig( logger.info('Config file was not found'); try { await writeConfig(); - logger.success('Created config file'); + logger.info('Created config file'); } catch (err) { logger.error('Failed to initialize config'); } diff --git a/packages/main/src/controllers/nativeTheme.ts b/packages/main/src/controllers/nativeTheme.ts index 6548771..9f9bc21 100644 --- a/packages/main/src/controllers/nativeTheme.ts +++ b/packages/main/src/controllers/nativeTheme.ts @@ -18,14 +18,13 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import consola from 'consola'; import { nativeTheme } from 'electron'; import { autorun } from 'mobx'; import type { MainStore } from '../stores/MainStore'; -import { Disposer } from '../utils'; +import { Disposer, getLogger } from '../utils'; -const logger = consola.withTag('sophie:controller:nativeTheme'); +const logger = getLogger('controller:nativeTheme'); export function initNativeTheme(store: MainStore): Disposer { logger.debug('Initializing controller'); diff --git a/packages/main/src/utils.ts b/packages/main/src/utils.ts deleted file mode 100644 index 0d469dd..0000000 --- a/packages/main/src/utils.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (C) 2021-2022 Kristóf Marussy - * - * This file is part of Sophie. - * - * Sophie is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - * SPDX-License-Identifier: AGPL-3.0-only - */ - -import { IDisposer } from 'mobx-state-tree'; - -export type Disposer = IDisposer; diff --git a/packages/main/src/utils/index.ts b/packages/main/src/utils/index.ts new file mode 100644 index 0000000..9a57e02 --- /dev/null +++ b/packages/main/src/utils/index.ts @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2021-2022 Kristóf Marussy + * + * This file is part of Sophie. + * + * Sophie is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { IDisposer } from 'mobx-state-tree'; + +export type Disposer = IDisposer; + +export { getLogger } from './logging'; diff --git a/packages/main/src/utils/logging.ts b/packages/main/src/utils/logging.ts new file mode 100644 index 0000000..9f1133f --- /dev/null +++ b/packages/main/src/utils/logging.ts @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2021-2022 Kristóf Marussy + * + * This file is part of Sophie. + * + * Sophie is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import loglevel, { Logger } from 'loglevel'; +import prefix from 'loglevel-plugin-prefix'; + +const isDevelopment = import.meta.env.MODE === 'development'; + +if (isDevelopment) { + loglevel.enableAll(); +} + +prefix.reg(loglevel); +prefix.apply(loglevel, { + format(level, name, timestamp) { + let shortName = 'global'; + if (name !== undefined) { + const nameSegments = name.split(':'); + const lastSegment = nameSegments.pop(); + shortName = [...nameSegments.map((segment) => segment[0]), lastSegment].join(':'); + } + if (isDevelopment) { + // `watch.js` already appends timestamps. + return `${level} (${shortName})`; + } + return `[${timestamp}] ${level} (${shortName})`; + }, +}); + +export function getLogger(loggerName: string): Logger { + return loglevel.getLogger(`sophie:${loggerName}`); +} -- cgit v1.2.3-54-g00ecf