aboutsummaryrefslogtreecommitdiffstats
path: root/code/app/src/help/logger.ts
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-12-09 03:57:12 +0100
committerivarlovlie <git@ivarlovlie.no>2022-12-09 03:57:12 +0100
commit4dbef3fcd7a14437d55c555cf10d50de8e50d7d1 (patch)
tree632589ecfcfb4dfddeafb71d0077257584b5e7ec /code/app/src/help/logger.ts
parent914c75e0ceeb3e11ddd55e94bb461c26b0db5b7a (diff)
downloadgreatoffice-4dbef3fcd7a14437d55c555cf10d50de8e50d7d1.tar.xz
greatoffice-4dbef3fcd7a14437d55c555cf10d50de8e50d7d1.zip
feat: Move everything out of $lib
Diffstat (limited to 'code/app/src/help/logger.ts')
-rw-r--r--code/app/src/help/logger.ts86
1 files changed, 86 insertions, 0 deletions
diff --git a/code/app/src/help/logger.ts b/code/app/src/help/logger.ts
new file mode 100644
index 0000000..a5b450b
--- /dev/null
+++ b/code/app/src/help/logger.ts
@@ -0,0 +1,86 @@
+import {browser, dev} from "$app/environment";
+import {StorageKeys} from "$configuration";
+import pino from "pino";
+
+const pinoConfig = dev ? {
+ transport: {
+ target: "pino-pretty",
+ },
+} : {};
+
+const pinoLogger = pino(pinoConfig);
+
+function browser_log_level(): number {
+ if (browser) return LogLevel.to_number(sessionStorage.getItem(StorageKeys.logLevel), LogLevel.INFO);
+ throw new Error("Called browser api in server");
+}
+
+function server_log_level(): number {
+ if (!browser) return LogLevel.to_number(import.meta.env.VITE_LOG_LEVEL, LogLevel.ERROR);
+ throw new Error("Called server api in browser");
+}
+
+export const LogLevel = {
+ DEBUG: 0,
+ INFO: 1,
+ ERROR: 2,
+ SILENT: 3,
+ to_string(levelInt: number): string {
+ switch (levelInt) {
+ case 0:
+ return "DEBUG";
+ case 1:
+ return "INFO";
+ case 2:
+ return "ERROR";
+ case 3:
+ return "SILENT";
+ default:
+ throw new Error("Log level int is unknown");
+ }
+ },
+ to_number(levelString?: string | null, fallback?: number): number {
+ if (!levelString && fallback) return fallback;
+ else if (!levelString && !fallback) throw new Error("levelString was empty, and no fallback was specified");
+ switch (levelString?.toUpperCase()) {
+ case "DEBUG":
+ return 0;
+ case "INFO":
+ return 1;
+ case "ERROR":
+ return 2;
+ case "SILENT":
+ return 3;
+ default:
+ if (!fallback) throw new Error("Log level string is unknown");
+ else return fallback;
+ }
+ },
+};
+
+export function log_debug(message: string, ...additional: any[]): void {
+ if (browser && browser_log_level() <= LogLevel.DEBUG) {
+ pinoLogger.debug(message, additional);
+ }
+ if (!browser && server_log_level() <= LogLevel.DEBUG) {
+ pinoLogger.debug(message, additional);
+ }
+}
+
+export function log_info(message: string, ...additional: any[]): void {
+ if (browser && browser_log_level() <= LogLevel.INFO) {
+ pinoLogger.info(message, additional);
+ }
+ if (!browser && server_log_level() <= LogLevel.INFO) {
+ pinoLogger.info(message, additional);
+ }
+}
+
+export function log_error(message: any, ...additional: any[]): void {
+ if (browser && browser_log_level() <= LogLevel.ERROR) {
+ pinoLogger.error(message, additional);
+ }
+ if (!browser && server_log_level() <= LogLevel.ERROR) {
+ pinoLogger.error(message, additional);
+ }
+} \ No newline at end of file