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/utils/index.ts | 25 +++++++++++++++++++ packages/main/src/utils/logging.ts | 49 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 packages/main/src/utils/index.ts create mode 100644 packages/main/src/utils/logging.ts (limited to 'packages/main/src/utils') 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-70-g09d2