2009-08-27 16 views
7

Abbiamo diversi server di applicazioni Java in esecuzione qui, con diverse app. Registrano tutti con Log4J nello stesso file system, che abbiamo creato solo per questo motivo. Di tanto in tanto capita che il file system esaurisce lo spazio e l'applicazione ottieneLog4J è in grado di ripristinare dal disco pieno?

log4j:ERROR Failed to flush writer,            
java.io.IOException 

Purtroppo Log4J non recuperare da questo errore, in modo che anche dopo che lo spazio viene liberato nel file system, non più registri sono scritti da quell'app. Ci sono opzioni, di programmazione o di impostazione, per far ripartire Log4J, oltre a riavviare l'app?

risposta

1

Che cosa vedi è un risultato accettabile qui? Prenderò in considerazione la possibilità di scrivere un nuovo Appender che avvolge qualunque appender acceda al disco e cerca di fare qualcosa di sensato quando rileva IOExceptions. Magari prendilo per racchiudere i sottostanti metodi di scrittura di Appenders in un blocco try-catch, e manda tu o un amministratore di sistema un'email.

+0

Da ciò che raccolgo da http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/helpers/OnlyOnceErrorHandler.html l'errore viene generato una volta e dopo questo è finito. Quello che desidererei è che, sebbene l'errore venga lanciato una sola volta, l'appender continua a scrivere su quel file system ... forse con pause di 5 minuti ... sembra che un wrapper attorno all'appender sia un'idea valida – dertoni

+4

Se si sta utilizzando OnlyOnceErrorHandler, si potrebbe prendere in considerazione l'utilizzo del FallbackErrorHandler (http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/varia/FallbackErrorHandler.html). In questo modo puoi specificare un secondo appender (magari un appender di posta elettronica) quando il primo non può più scrivere. Questo gestirà molto di ciò che farebbe il wrapping. – GaryF

0

limitare la dimensione dei registri e provare a utilizzare un appender personalizzato per archiviare i registri su una macchina di backup con molto spazio su disco.

3

non ho la prova, ma il sito di logback stati:

Graceful recupero da errori di I/O

di Logback FileAppender e tutte le sue sottoclassi, tra cui RollingFileAppender, può ripristinare con garbo i guasti di I/O. Pertanto, se un file server si interrompe temporaneamente, non è più necessario riavviare l'applicazione solo per ottenere nuovamente il funzionamento della registrazione. Non appena il server del file viene ripristinato, l'appender di logback pertinente sarà in modo trasparente e si ripristinerà rapidamente dalla condizione di errore precedente.

Suppongo che lo stesso sarebbe vero per la situazione di cui sopra.

Problemi correlati