Sto tentando di accedere tramite il comando Mail di NLog. Funziona bene, ma volevo avvolgere il mailtarget con lo BufferedTargetWrapper
per memorizzare i messaggi di log fino a un punto di codice predefinito, dove voglio svuotare manualmente il buffer e inviare i messaggi di registro buffer preceduti da una singola mail (come definito nel destinazione posta).Memorizzare i messaggi di registro in NLog e svuotarli manualmente sulla destinazione
Se si definisce uno FlushTimeout
o lo BufferSize
dello BufferedTargetWrapper
, tutto funziona correttamente come supposto. Ma se FlushTimeout e BufferSize non sono impostati, non riesco a farlo funzionare.
Come risponde a questa domanda in su SO Force BufferingTargetWrapper to empty non ho qualcosa di simile:
LogManager.Configuration.AllTargets.Where(t => t != null && t is BufferingTargetWrapper).ToList().
ForEach(b => ((BufferingTargetWrapper)b).Flush(null));
Ma la documentazione e questa risposta è in contraddizione con la mia NLog versione (2.0.0.2000). Non esiste un metodo flush senza parametri, solo il metodo flush per le destinazioni asincrone.
C'è un modo per forzare BufferingTargetWrapper a svuotare tutti i messaggi registrati sul target spostato (per inviarlo per posta)?
Funziona bene! Grazie! – dasheddot
Funziona molto bene! –