From 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 Mon Sep 17 00:00:00 2001 From: AlexanderCurl Date: Sat, 18 Apr 2026 17:46:06 +0100 Subject: Replaced file structures for themes in the correct format --- .../logger.js | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 raveos-gnome-theme/theme-data/extensions/installed/appindicatorsupport@rgcjonas.gmail.com/logger.js (limited to 'raveos-gnome-theme/theme-data/extensions/installed/appindicatorsupport@rgcjonas.gmail.com/logger.js') diff --git a/raveos-gnome-theme/theme-data/extensions/installed/appindicatorsupport@rgcjonas.gmail.com/logger.js b/raveos-gnome-theme/theme-data/extensions/installed/appindicatorsupport@rgcjonas.gmail.com/logger.js new file mode 100644 index 0000000..3c60400 --- /dev/null +++ b/raveos-gnome-theme/theme-data/extensions/installed/appindicatorsupport@rgcjonas.gmail.com/logger.js @@ -0,0 +1,105 @@ +// This file is part of the AppIndicator/KStatusNotifierItem GNOME Shell extension +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +import GLib from 'gi://GLib'; + +/** + * Helper class for logging stuff + */ +export class Logger { + static _logStructured(logLevel, message, extraFields = {}) { + if (!Object.values(GLib.LogLevelFlags).includes(logLevel)) { + Logger._logStructured(GLib.LogLevelFlags.LEVEL_WARNING, + 'logLevel is not a valid GLib.LogLevelFlags'); + return; + } + + if (!Logger._levels.includes(logLevel)) + return; + + let fields = { + 'SYSLOG_IDENTIFIER': Logger._uuid, + 'MESSAGE': `${message}`, + }; + + let thisFile = null; + const {stack} = new Error(); + for (let stackLine of stack.split('\n')) { + stackLine = stackLine.replace('resource:///org/gnome/Shell/', ''); + const [code, line] = stackLine.split(':'); + const [func, file] = code.split(/@(.+)/); + + if (!thisFile || thisFile === file) { + thisFile = file; + continue; + } + + fields = Object.assign(fields, { + 'CODE_FILE': file || '', + 'CODE_LINE': line || '', + 'CODE_FUNC': func || '', + }); + + break; + } + + GLib.log_structured(Logger._domain, logLevel, Object.assign(fields, extraFields)); + } + + static init(extension) { + if (Logger._domain) + return; + + const allLevels = Object.values(GLib.LogLevelFlags); + const domains = GLib.getenv('G_MESSAGES_DEBUG'); + const {name: domain} = extension.metadata; + Logger._uuid = extension.metadata.uuid; + Logger._domain = domain.replaceAll(' ', '-'); + + if (domains === 'all' || (domains && domains.split(' ').includes(Logger._domain))) { + Logger._levels = allLevels; + } else { + Logger._levels = allLevels.filter( + l => l <= GLib.LogLevelFlags.LEVEL_WARNING); + } + } + + static destroy() { + delete Logger._domain; + delete Logger._uuid; + delete Logger._levels; + } + + static debug(message) { + Logger._logStructured(GLib.LogLevelFlags.LEVEL_DEBUG, message); + } + + static message(message) { + Logger._logStructured(GLib.LogLevelFlags.LEVEL_MESSAGE, message); + } + + static warn(message) { + Logger._logStructured(GLib.LogLevelFlags.LEVEL_WARNING, message); + } + + static error(message) { + Logger._logStructured(GLib.LogLevelFlags.LEVEL_ERROR, message); + } + + static critical(message) { + Logger._logStructured(GLib.LogLevelFlags.LEVEL_CRITICAL, message); + } +} -- cgit v1.3