Fix Serilog email sink: configure in code, not JSON config
Serilog.Settings.Configuration cannot deserialize NetworkCredential or MailKit's SecureSocketOptions from JSON, causing an InvalidOperationException in the binder and preventing containers from starting. Fix: remove Email from the WriteTo JSON array entirely and wire it in code inside ConfigureJsonSerilog using a dedicated SerilogEmail:* config section. The sink is skipped when From/To/Host are absent, so local dev is unaffected. Also renames the docker-compose env vars from the verbose Serilog__WriteTo__2__Args__* prefix to the clean SerilogEmail__* prefix. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -35,13 +35,12 @@ services:
|
||||
- Ai__Ollama__EmbeddingModel=${Ai__Ollama__EmbeddingModel:-nomic-embed-text}
|
||||
- Ai__Ollama__TimeoutSeconds=${Ai__Ollama__TimeoutSeconds:-180}
|
||||
|
||||
- Serilog__WriteTo__2__Args__from=${Serilog__WriteTo__2__Args__from:-}
|
||||
- Serilog__WriteTo__2__Args__to=${Serilog__WriteTo__2__Args__to:-}
|
||||
- Serilog__WriteTo__2__Args__host=${Serilog__WriteTo__2__Args__host:-}
|
||||
- Serilog__WriteTo__2__Args__credentials__userName=${Serilog__WriteTo__2__Args__credentials__userName:-}
|
||||
- Serilog__WriteTo__2__Args__credentials__password=${Serilog__WriteTo__2__Args__credentials__password:-}
|
||||
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
|
||||
- Serilog__WriteTo__2__Args__connectionSecurity=${Serilog__WriteTo__2__Args__connectionSecurity:-StartTls}
|
||||
- SerilogEmail__From=${SerilogEmail__From:-}
|
||||
- SerilogEmail__To=${SerilogEmail__To:-}
|
||||
- SerilogEmail__Host=${SerilogEmail__Host:-}
|
||||
- SerilogEmail__Port=${SerilogEmail__Port:-587}
|
||||
- SerilogEmail__UserName=${SerilogEmail__UserName:-}
|
||||
- SerilogEmail__Password=${SerilogEmail__Password:-}
|
||||
volumes:
|
||||
- ${LOGS_PATH:-/opt/myai/logs}/rag-api:/app/logs
|
||||
networks:
|
||||
@@ -85,13 +84,12 @@ services:
|
||||
- Matcher__DeepScoreTopN=${Matcher__DeepScoreTopN:-5}
|
||||
- Matcher__MaxJobTextChars=${Matcher__MaxJobTextChars:-60000}
|
||||
|
||||
- Serilog__WriteTo__2__Args__from=${Serilog__WriteTo__2__Args__from:-}
|
||||
- Serilog__WriteTo__2__Args__to=${Serilog__WriteTo__2__Args__to:-}
|
||||
- Serilog__WriteTo__2__Args__host=${Serilog__WriteTo__2__Args__host:-}
|
||||
- Serilog__WriteTo__2__Args__credentials__userName=${Serilog__WriteTo__2__Args__credentials__userName:-}
|
||||
- Serilog__WriteTo__2__Args__credentials__password=${Serilog__WriteTo__2__Args__credentials__password:-}
|
||||
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
|
||||
- Serilog__WriteTo__2__Args__connectionSecurity=${Serilog__WriteTo__2__Args__connectionSecurity:-StartTls}
|
||||
- SerilogEmail__From=${SerilogEmail__From:-}
|
||||
- SerilogEmail__To=${SerilogEmail__To:-}
|
||||
- SerilogEmail__Host=${SerilogEmail__Host:-}
|
||||
- SerilogEmail__Port=${SerilogEmail__Port:-587}
|
||||
- SerilogEmail__UserName=${SerilogEmail__UserName:-}
|
||||
- SerilogEmail__Password=${SerilogEmail__Password:-}
|
||||
volumes:
|
||||
- ${LOGS_PATH:-/opt/myai/logs}/cv-matcher-api:/app/logs
|
||||
networks:
|
||||
@@ -126,13 +124,12 @@ services:
|
||||
|
||||
- FileStorage__Path=${FileStorage__Path:-Files}
|
||||
|
||||
- Serilog__WriteTo__2__Args__from=${Serilog__WriteTo__2__Args__from:-}
|
||||
- Serilog__WriteTo__2__Args__to=${Serilog__WriteTo__2__Args__to:-}
|
||||
- Serilog__WriteTo__2__Args__host=${Serilog__WriteTo__2__Args__host:-}
|
||||
- Serilog__WriteTo__2__Args__credentials__userName=${Serilog__WriteTo__2__Args__credentials__userName:-}
|
||||
- Serilog__WriteTo__2__Args__credentials__password=${Serilog__WriteTo__2__Args__credentials__password:-}
|
||||
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
|
||||
- Serilog__WriteTo__2__Args__connectionSecurity=${Serilog__WriteTo__2__Args__connectionSecurity:-StartTls}
|
||||
- SerilogEmail__From=${SerilogEmail__From:-}
|
||||
- SerilogEmail__To=${SerilogEmail__To:-}
|
||||
- SerilogEmail__Host=${SerilogEmail__Host:-}
|
||||
- SerilogEmail__Port=${SerilogEmail__Port:-587}
|
||||
- SerilogEmail__UserName=${SerilogEmail__UserName:-}
|
||||
- SerilogEmail__Password=${SerilogEmail__Password:-}
|
||||
volumes:
|
||||
- ${LOGS_PATH:-/opt/myai/logs}/email-api:/app/logs
|
||||
- ${FILES_PATH:-/opt/myai/files}:/app/Files
|
||||
@@ -201,13 +198,12 @@ services:
|
||||
- Cors__AllowedOrigins__0=${Cors__AllowedOrigins__0:-}
|
||||
- Cors__AllowedOrigins__1=${Cors__AllowedOrigins__1:-}
|
||||
|
||||
- Serilog__WriteTo__2__Args__from=${Serilog__WriteTo__2__Args__from:-}
|
||||
- Serilog__WriteTo__2__Args__to=${Serilog__WriteTo__2__Args__to:-}
|
||||
- Serilog__WriteTo__2__Args__host=${Serilog__WriteTo__2__Args__host:-}
|
||||
- Serilog__WriteTo__2__Args__credentials__userName=${Serilog__WriteTo__2__Args__credentials__userName:-}
|
||||
- Serilog__WriteTo__2__Args__credentials__password=${Serilog__WriteTo__2__Args__credentials__password:-}
|
||||
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
|
||||
- Serilog__WriteTo__2__Args__connectionSecurity=${Serilog__WriteTo__2__Args__connectionSecurity:-StartTls}
|
||||
- SerilogEmail__From=${SerilogEmail__From:-}
|
||||
- SerilogEmail__To=${SerilogEmail__To:-}
|
||||
- SerilogEmail__Host=${SerilogEmail__Host:-}
|
||||
- SerilogEmail__Port=${SerilogEmail__Port:-587}
|
||||
- SerilogEmail__UserName=${SerilogEmail__UserName:-}
|
||||
- SerilogEmail__Password=${SerilogEmail__Password:-}
|
||||
volumes:
|
||||
- ${LOGS_PATH:-/opt/myai/logs}/api:/app/logs
|
||||
- ${FILES_PATH:-/opt/myai/files}:/app/Files
|
||||
@@ -232,13 +228,12 @@ services:
|
||||
- Jobs__Tasks__0__Interval=${Jobs__CvStorageCleanupInterval:-01:00:00}
|
||||
- Jobs__Tasks__0__Parameters__MaxTotalSizeMegabytes=${Jobs__CvStorageMaxTotalSizeMegabytes:-40}
|
||||
|
||||
- Serilog__WriteTo__2__Args__from=${Serilog__WriteTo__2__Args__from:-}
|
||||
- Serilog__WriteTo__2__Args__to=${Serilog__WriteTo__2__Args__to:-}
|
||||
- Serilog__WriteTo__2__Args__host=${Serilog__WriteTo__2__Args__host:-}
|
||||
- Serilog__WriteTo__2__Args__credentials__userName=${Serilog__WriteTo__2__Args__credentials__userName:-}
|
||||
- Serilog__WriteTo__2__Args__credentials__password=${Serilog__WriteTo__2__Args__credentials__password:-}
|
||||
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
|
||||
- Serilog__WriteTo__2__Args__connectionSecurity=${Serilog__WriteTo__2__Args__connectionSecurity:-StartTls}
|
||||
- SerilogEmail__From=${SerilogEmail__From:-}
|
||||
- SerilogEmail__To=${SerilogEmail__To:-}
|
||||
- SerilogEmail__Host=${SerilogEmail__Host:-}
|
||||
- SerilogEmail__Port=${SerilogEmail__Port:-587}
|
||||
- SerilogEmail__UserName=${SerilogEmail__UserName:-}
|
||||
- SerilogEmail__Password=${SerilogEmail__Password:-}
|
||||
volumes:
|
||||
- ${LOGS_PATH:-/opt/myai/logs}/cv-cleanup-job:/app/logs
|
||||
- ${FILES_PATH:-/opt/myai/files}:/app/Files
|
||||
@@ -283,13 +278,12 @@ services:
|
||||
- Jobs__Tasks__0__Enabled=${Jobs__CvSearchEnabled:-true}
|
||||
- Jobs__Tasks__0__Interval=${Jobs__CvSearchInterval:-00:00:30}
|
||||
|
||||
- Serilog__WriteTo__2__Args__from=${Serilog__WriteTo__2__Args__from:-}
|
||||
- Serilog__WriteTo__2__Args__to=${Serilog__WriteTo__2__Args__to:-}
|
||||
- Serilog__WriteTo__2__Args__host=${Serilog__WriteTo__2__Args__host:-}
|
||||
- Serilog__WriteTo__2__Args__credentials__userName=${Serilog__WriteTo__2__Args__credentials__userName:-}
|
||||
- Serilog__WriteTo__2__Args__credentials__password=${Serilog__WriteTo__2__Args__credentials__password:-}
|
||||
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
|
||||
- Serilog__WriteTo__2__Args__connectionSecurity=${Serilog__WriteTo__2__Args__connectionSecurity:-StartTls}
|
||||
- SerilogEmail__From=${SerilogEmail__From:-}
|
||||
- SerilogEmail__To=${SerilogEmail__To:-}
|
||||
- SerilogEmail__Host=${SerilogEmail__Host:-}
|
||||
- SerilogEmail__Port=${SerilogEmail__Port:-587}
|
||||
- SerilogEmail__UserName=${SerilogEmail__UserName:-}
|
||||
- SerilogEmail__Password=${SerilogEmail__Password:-}
|
||||
volumes:
|
||||
- ${LOGS_PATH:-/opt/myai/logs}/cv-search-job:/app/logs
|
||||
- ${FILES_PATH:-/opt/myai/files}:/app/Files
|
||||
|
||||
Reference in New Issue
Block a user