feat(server): add LogFormat enum and configuration

This commit is contained in:
Daniel Ramos
2025-12-22 12:40:14 +00:00
parent f053ce548d
commit 565e95ae68
4 changed files with 15 additions and 2 deletions
+5 -1
View File
@@ -1,6 +1,6 @@
import { Transform, Type } from 'class-transformer'; import { Transform, Type } from 'class-transformer';
import { IsEnum, IsInt, IsString, Matches } from 'class-validator'; import { IsEnum, IsInt, IsString, Matches } from 'class-validator';
import { DatabaseSslMode, ImmichEnvironment, LogLevel } from 'src/enum'; import { DatabaseSslMode, ImmichEnvironment, LogFormat, LogLevel } from 'src/enum';
import { IsIPRange, Optional, ValidateBoolean } from 'src/validation'; import { IsIPRange, Optional, ValidateBoolean } from 'src/validation';
export class EnvDto { export class EnvDto {
@@ -48,6 +48,10 @@ export class EnvDto {
@Optional() @Optional()
IMMICH_LOG_LEVEL?: LogLevel; IMMICH_LOG_LEVEL?: LogLevel;
@IsEnum(LogFormat)
@Optional()
IMMICH_LOG_FORMAT?: LogFormat;
@Optional() @Optional()
@Matches(/^\//, { message: 'IMMICH_MEDIA_LOCATION must be an absolute path' }) @Matches(/^\//, { message: 'IMMICH_MEDIA_LOCATION must be an absolute path' })
IMMICH_MEDIA_LOCATION?: string; IMMICH_MEDIA_LOCATION?: string;
+5
View File
@@ -454,6 +454,11 @@ export enum LogLevel {
Fatal = 'fatal', Fatal = 'fatal',
} }
export enum LogFormat {
Console = 'console',
Json = 'json',
}
export enum ApiCustomExtension { export enum ApiCustomExtension {
Permission = 'x-immich-permission', Permission = 'x-immich-permission',
AdminOnly = 'x-immich-admin-only', AdminOnly = 'x-immich-admin-only',
@@ -17,6 +17,7 @@ import {
ImmichHeader, ImmichHeader,
ImmichTelemetry, ImmichTelemetry,
ImmichWorker, ImmichWorker,
LogFormat,
LogLevel, LogLevel,
QueueName, QueueName,
} from 'src/enum'; } from 'src/enum';
@@ -29,6 +30,7 @@ export interface EnvData {
environment: ImmichEnvironment; environment: ImmichEnvironment;
configFile?: string; configFile?: string;
logLevel?: LogLevel; logLevel?: LogLevel;
logFormat: LogFormat;
buildMetadata: { buildMetadata: {
build?: string; build?: string;
@@ -227,6 +229,7 @@ const getEnv = (): EnvData => {
environment, environment,
configFile: dto.IMMICH_CONFIG_FILE, configFile: dto.IMMICH_CONFIG_FILE,
logLevel: dto.IMMICH_LOG_LEVEL, logLevel: dto.IMMICH_LOG_LEVEL,
logFormat: dto.IMMICH_LOG_FORMAT || LogFormat.Console,
buildMetadata: { buildMetadata: {
build: dto.IMMICH_BUILD, build: dto.IMMICH_BUILD,
@@ -1,4 +1,4 @@
import { DatabaseExtension, ImmichEnvironment, ImmichWorker } from 'src/enum'; import { DatabaseExtension, ImmichEnvironment, ImmichWorker, LogFormat } from 'src/enum';
import { ConfigRepository, EnvData } from 'src/repositories/config.repository'; import { ConfigRepository, EnvData } from 'src/repositories/config.repository';
import { RepositoryInterface } from 'src/types'; import { RepositoryInterface } from 'src/types';
import { Mocked, vitest } from 'vitest'; import { Mocked, vitest } from 'vitest';
@@ -6,6 +6,7 @@ import { Mocked, vitest } from 'vitest';
const envData: EnvData = { const envData: EnvData = {
port: 2283, port: 2283,
environment: ImmichEnvironment.Production, environment: ImmichEnvironment.Production,
logFormat: LogFormat.Console,
buildMetadata: {}, buildMetadata: {},
bull: { bull: {