From c4fcec5f90f10de02e22e03736774afa8f51215f Mon Sep 17 00:00:00 2001
From: Richard Petersen <richard.petersen@open-xchange.com>
Date: Tue, 24 May 2022 11:29:27 +0200
Subject: [PATCH] Add trace logging for the cache

---
 src/cache.js     | 13 +++++++++++--
 src/config.js    |  2 ++
 src/files.js     |  2 +-
 src/index.js     |  2 +-
 src/manifests.js |  2 +-
 src/redis.js     |  4 ++--
 src/version.js   |  6 +++---
 7 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/src/cache.js b/src/cache.js
index 3076a23..1d64904 100644
--- a/src/cache.js
+++ b/src/cache.js
@@ -1,8 +1,10 @@
+import { logger } from './logger.js'
 import * as redis from './redis.js'
 
 const cache = {}
 
 export async function setAsync (key, asyncValue) {
+  logger.trace(`[Cache] Set async ${key}`)
   cache[key] = asyncValue
   const value = await asyncValue
   await set(key, value)
@@ -10,6 +12,7 @@ export async function setAsync (key, asyncValue) {
 }
 
 export function set (key, value) {
+  logger.trace(`[Cache] Set ${key}`)
   if (cache[key] === value) return
   cache[key] = value
   if (redis.isEnabled()) {
@@ -28,11 +31,17 @@ export async function clear () {
 }
 
 export async function get (key, { method = 'get' } = {}) {
-  if (cache[key]) return cache[key]
+  if (cache[key]) {
+    logger.trace(`[Cache] Resolve "${key}" from memory`)
+    return cache[key]
+  }
 
   if (redis.isEnabled()) {
     const result = await redis.client[method]?.(key)
-    cache[key] = result
+    if (result) {
+      logger.trace(`[Cache] Resolve "${key}" from redis`)
+      cache[key] = result
+    }
     return result
   }
 }
diff --git a/src/config.js b/src/config.js
index b6e21d9..0719fa8 100644
--- a/src/config.js
+++ b/src/config.js
@@ -1,10 +1,12 @@
 import fs from 'fs/promises'
 import yaml from 'js-yaml'
+import { logger } from './logger.js'
 
 class Config {
   async load () {
     const urlsSource = await fs.readFile('./config/config.yaml', 'utf8')
     this._urls = yaml.load(urlsSource).baseUrls
+    logger.trace('[Config] Config has been loaded')
   }
 
   get urls () {
diff --git a/src/files.js b/src/files.js
index dfe10b8..6f1261e 100644
--- a/src/files.js
+++ b/src/files.js
@@ -43,7 +43,7 @@ export async function fetchFileWithHeaders ({ path, version }) {
     try {
       return fetchFileWithHeadersFromBaseUrl(path, module.meta.baseUrl, version)
     } catch (err) {
-      logger.debug(`File ${path} had a baseUrl but could not be found on that server: ${err}`)
+      logger.debug(`[Files] File ${path} had a baseUrl but could not be found on that server: ${err}`)
     }
   }
 
diff --git a/src/index.js b/src/index.js
index 6cbdee3..796ef76 100644
--- a/src/index.js
+++ b/src/index.js
@@ -14,7 +14,7 @@ createQueues()
 
 // Binds and listens for connections on the specified host and port
 root.listen(process.env.PORT, () => {
-  logger.info(`ui-middleware listening on port ${process.env.PORT}`)
+  logger.info(`[Server] ui-middleware listening on port ${process.env.PORT}`)
 })
 
 process.on('uncaughtException', err => {
diff --git a/src/manifests.js b/src/manifests.js
index 9cb1bdd..94bd2dd 100644
--- a/src/manifests.js
+++ b/src/manifests.js
@@ -14,7 +14,7 @@ export async function fetchViteManifests () {
     try {
       const manifest = await result.json()
       for (const file in manifest) {
-        logger.debug(`retrieved ${file} from ${baseUrl}`)
+        logger.debug(`[Manifest] Retrieved ${file} from ${baseUrl}`)
         manifest[file].meta = manifest[file].meta || {}
         manifest[file].meta.baseUrl = baseUrl
       }
diff --git a/src/redis.js b/src/redis.js
index f0c513f..0c16567 100644
--- a/src/redis.js
+++ b/src/redis.js
@@ -20,8 +20,8 @@ const createClient = (type, options = {}) => {
     password: process.env.REDIS_PASSWORD,
     ...options
   })
-  client.on('ready', () => logger.info(`Connected ${type} to redis on ${process.env.REDIS_HOST}`))
-  client.on('error', (err) => logger.error(`Redis connect error: ${err}`))
+  client.on('ready', () => logger.info(`[Redis] Connected ${type} to redis on ${process.env.REDIS_HOST}`))
+  client.on('error', (err) => logger.error(`[Redis] Connect error: ${err}`))
 
   return client
 }
diff --git a/src/version.js b/src/version.js
index 0496d32..45c3991 100644
--- a/src/version.js
+++ b/src/version.js
@@ -16,7 +16,7 @@ export const fetchLatestVersion = async () => {
       if (!version) throw new Error()
       return version
     } catch (err) {
-      logger.debug(`UI container at ${baseUrl} does not have meta.json. Fall back to version hash based on manifest.`)
+      logger.debug(`[Version] UI container at ${baseUrl} does not have meta.json. Fall back to version hash based on manifest.`)
     }
     try {
       const response = await fetch(new URL('manifest.json', baseUrl))
@@ -24,7 +24,7 @@ export const fetchLatestVersion = async () => {
       const manifest = await response.json()
       return hash(manifest)
     } catch (err) {
-      logger.error(`Cannot fetch manifest from ${baseUrl}. Version info will not be correct.`)
+      logger.error(`[Version] Cannot fetch manifest from ${baseUrl}. Version info will not be correct.`)
     }
   }))
   return hash(infos)
@@ -51,7 +51,7 @@ export async function getLatestVersion () {
 export function registerLatestVersionListener (client) {
   if (redis.isEnabled()) {
     const key = getRedisKey({ name: 'updateLatestVersion' })
-    client.subscribe(key, (errs, count) => logger.info(`Subscribed to ${key}.`))
+    client.subscribe(key, (errs, count) => logger.info(`[Redis] Subscribed to ${key}.`))
     client.on('message', async (channel, message) => {
       if (channel !== key) return
       await config.load()
-- 
GitLab