Fix #17: Fehler und Warnungen nicht mehr als INFO loggen
Verarbeitungsfehler (PreCheckFailed, AiFunctionalFailure) und Retry-Entscheidungen (FAILED_RETRYABLE, FAILED_FINAL) werden nun auf WARN-Level geloggt. EmptyList- und IncompleteConfiguration-Ergebnisse des Modellabrufs sowie fehlende Quelldateien im Mini-Lauf ebenfalls. Tests angepasst: Assertions prüfen jetzt das korrekte WARN-Level. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+4
-4
@@ -688,12 +688,12 @@ public class DocumentProcessingCoordinator {
|
||||
});
|
||||
|
||||
if (!retryable) {
|
||||
logger.info("Retry decision for '{}' (fingerprint: {}): FAILED_FINAL — "
|
||||
logger.warn("Retry decision for '{}' (fingerprint: {}): FAILED_FINAL — "
|
||||
+ "transient error limit reached ({}/{} attempts). No further retry.",
|
||||
candidate.uniqueIdentifier(), fingerprint.sha256Hex(),
|
||||
updatedCounters.transientErrorCount(), maxRetriesTransient);
|
||||
} else {
|
||||
logger.info("Retry decision for '{}' (fingerprint: {}): FAILED_RETRYABLE — "
|
||||
logger.warn("Retry decision for '{}' (fingerprint: {}): FAILED_RETRYABLE — "
|
||||
+ "transient error, will retry in later run ({}/{} attempts).",
|
||||
candidate.uniqueIdentifier(), fingerprint.sha256Hex(),
|
||||
updatedCounters.transientErrorCount(), maxRetriesTransient);
|
||||
@@ -1060,14 +1060,14 @@ public class DocumentProcessingCoordinator {
|
||||
});
|
||||
|
||||
if (outcome.overallStatus() == ProcessingStatus.FAILED_RETRYABLE) {
|
||||
logger.info("Retry decision for '{}' (fingerprint: {}): FAILED_RETRYABLE — "
|
||||
logger.warn("Retry decision for '{}' (fingerprint: {}): FAILED_RETRYABLE — "
|
||||
+ "will retry in later scheduler run. "
|
||||
+ "ContentErrors={}, TransientErrors={}.",
|
||||
candidate.uniqueIdentifier(), fingerprint.sha256Hex(),
|
||||
outcome.counters().contentErrorCount(),
|
||||
outcome.counters().transientErrorCount());
|
||||
} else if (outcome.overallStatus() == ProcessingStatus.FAILED_FINAL) {
|
||||
logger.info("Retry decision for '{}' (fingerprint: {}): FAILED_FINAL — "
|
||||
logger.warn("Retry decision for '{}' (fingerprint: {}): FAILED_FINAL — "
|
||||
+ "permanently failed, no further retry. "
|
||||
+ "ContentErrors={}, TransientErrors={}.",
|
||||
candidate.uniqueIdentifier(), fingerprint.sha256Hex(),
|
||||
|
||||
+2
-2
@@ -554,7 +554,7 @@ public class DefaultBatchRunProcessingUseCase implements BatchRunProcessingUseCa
|
||||
private void logProcessingOutcome(SourceDocumentCandidate candidate, DocumentProcessingOutcome outcome) {
|
||||
switch (outcome) {
|
||||
case de.gecheckt.pdf.umbenenner.domain.model.PreCheckFailed failed ->
|
||||
logger.info("Pre-checks failed for '{}': {} (deterministic content error).",
|
||||
logger.warn("Pre-checks failed for '{}': {} (deterministic content error).",
|
||||
candidate.uniqueIdentifier(), failed.failureReasonDescription());
|
||||
case de.gecheckt.pdf.umbenenner.domain.model.TechnicalDocumentError technicalError ->
|
||||
logger.warn("Processing failed for '{}': {} (transient technical error – retryable).",
|
||||
@@ -568,7 +568,7 @@ public class DefaultBatchRunProcessingUseCase implements BatchRunProcessingUseCa
|
||||
logger.warn("AI invocation failed for '{}': {} (transient technical error – retryable).",
|
||||
candidate.uniqueIdentifier(), aiTechnical.errorMessage());
|
||||
case de.gecheckt.pdf.umbenenner.domain.model.AiFunctionalFailure aiFunctional ->
|
||||
logger.info("AI naming failed for '{}': {} (deterministic content error).",
|
||||
logger.warn("AI naming failed for '{}': {} (deterministic content error).",
|
||||
candidate.uniqueIdentifier(), aiFunctional.errorMessage());
|
||||
default -> { /* other outcomes are handled elsewhere */ }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user