Jason Rasmussen před 2 roky
rodič
revize
ba04b753de

+ 4 - 1
server/apps/immich/src/main.ts

@@ -10,11 +10,14 @@ import { SERVER_VERSION } from './constants/server_version.constant';
 import { RedisIoAdapter } from './middlewares/redis-io.adapter.middleware';
 import { json } from 'body-parser';
 import { patchOpenAPI } from './utils/patch-open-api.util';
+import { getLogLevels } from '@app/common';
 
 const logger = new Logger('ImmichServer');
 
 async function bootstrap() {
-  const app = await NestFactory.create<NestExpressApplication>(AppModule);
+  const app = await NestFactory.create<NestExpressApplication>(AppModule, {
+    logger: getLogLevels(),
+  });
 
   app.set('trust proxy');
   app.set('etag', 'strong');

+ 4 - 1
server/apps/microservices/src/main.ts

@@ -1,13 +1,16 @@
 import { Logger } from '@nestjs/common';
 import { NestFactory } from '@nestjs/core';
 import { SERVER_VERSION } from 'apps/immich/src/constants/server_version.constant';
+import { getLogLevels } from '@app/common';
 import { RedisIoAdapter } from '../../immich/src/middlewares/redis-io.adapter.middleware';
 import { MicroservicesModule } from './microservices.module';
 
 const logger = new Logger('ImmichMicroservice');
 
 async function bootstrap() {
-  const app = await NestFactory.create(MicroservicesModule);
+  const app = await NestFactory.create(MicroservicesModule, {
+    logger: getLogLevels(),
+  });
 
   const redisIoAdapter = new RedisIoAdapter(app);
   await redisIoAdapter.connectToRedis();

+ 5 - 12
server/apps/microservices/src/processors/metadata-extraction.processor.ts

@@ -1,4 +1,3 @@
-import { ImmichLogLevel } from '@app/common/constants/log-level.constant';
 import { AssetEntity, ExifEntity } from '@app/infra';
 import {
   IExifExtractionProcessor,
@@ -76,8 +75,8 @@ export type GeoData = {
 
 @Processor(QueueNameEnum.METADATA_EXTRACTION)
 export class MetadataExtractionProcessor {
+  private logger = new Logger(MetadataExtractionProcessor.name);
   private isGeocodeInitialized = false;
-  private logLevel: ImmichLogLevel;
 
   constructor(
     @InjectRepository(AssetEntity)
@@ -86,10 +85,10 @@ export class MetadataExtractionProcessor {
     @InjectRepository(ExifEntity)
     private exifRepository: Repository<ExifEntity>,
 
-    private configService: ConfigService,
+    configService: ConfigService,
   ) {
     if (!configService.get('DISABLE_REVERSE_GEOCODING')) {
-      Logger.log('Initialising Reverse Geocoding');
+      this.logger.log('Initializing Reverse Geocoding');
       geocoderInit({
         // eslint-disable-next-line @typescript-eslint/ban-ts-comment
         // @ts-ignore
@@ -108,8 +107,6 @@ export class MetadataExtractionProcessor {
         Logger.log('Reverse Geocoding Initialised');
       });
     }
-
-    this.logLevel = this.configService.get('LOG_LEVEL') || ImmichLogLevel.SIMPLE;
   }
 
   private async reverseGeocodeExif(
@@ -260,12 +257,8 @@ export class MetadataExtractionProcessor {
       }
 
       await this.exifRepository.save(newExif);
-    } catch (e) {
-      Logger.error(`Error extracting EXIF ${String(e)}`, 'extractExif');
-
-      if (this.logLevel === ImmichLogLevel.VERBOSE) {
-        console.trace('Error extracting EXIF', e);
-      }
+    } catch (error: any) {
+      this.logger.error(`Error extracting EXIF ${error}`, error?.stack);
     }
   }
 

+ 1 - 1
server/libs/common/src/config/app.config.ts

@@ -27,6 +27,6 @@ export const immichAppConfig: ConfigModuleOptions = {
     JWT_SECRET: Joi.string().required().custom(jwtSecretValidator),
     DISABLE_REVERSE_GEOCODING: Joi.boolean().optional().valid(true, false).default(false),
     REVERSE_GEOCODING_PRECISION: Joi.number().optional().valid(0, 1, 2, 3).default(3),
-    LOG_LEVEL: Joi.string().optional().valid('simple', 'verbose').default('simple'),
+    LOG_LEVEL: Joi.string().optional().valid('simple', 'verbose', 'debug', 'log', 'warn', 'error').default('log'),
   }),
 };

+ 0 - 4
server/libs/common/src/constants/log-level.constant.ts

@@ -1,4 +0,0 @@
-export enum ImmichLogLevel {
-  SIMPLE = 'simple',
-  VERBOSE = 'verbose',
-}

+ 12 - 0
server/libs/common/src/utils/index.ts

@@ -1,3 +1,15 @@
+import { LogLevel } from '@nestjs/common';
+
 export * from './time-utils';
 export * from './asset-utils';
 export * from './user-utils';
+
+export function getLogLevels() {
+  const LOG_LEVELS: LogLevel[] = ['verbose', 'debug', 'log', 'warn', 'error'];
+  let logLevel = process.env.LOG_LEVEL || 'log';
+  if (logLevel === 'simple') {
+    logLevel = 'log';
+  }
+  const logLevelIndex = LOG_LEVELS.indexOf(logLevel as LogLevel);
+  return logLevelIndex === -1 ? [] : LOG_LEVELS.slice(logLevelIndex);
+}