Bij de ontwikkeling van een dashboard applicatie voor het weergeven van de status van een systeem, is het nodig om bepaalde log-bestanden te monitoren zodat error boodschappen in het systeem (database) bewaard kunnen worden. Dit werkt vrij aardig.
Nu stel ik me de vraag wat het gedrag zal zijn op het moment dat een dergelijke logfile, bij het bereiken van zijn treshold, zal rollen. Momenteel gebeurd de implementatie aan de hand van een FileReader:
In unit tests lijkt dit onder Windows wel vrij goed te blijven functioneren na een roll; het kan enkel wel zijn dat er op het moment van de roll een aantal log lijnen verloren gaan (tussen de poll periode). Maar de nieuwe entries worden wel correct gelezen in de "nieuwe" file. Er zijn echter meerdere systemen waarop de applicatie zal komen te draaien, waaronder Solaris en AIX. Welke problemen mogen we daar precies verwachten?
Zal de referentie (handle) naar de file hetzelfde blijven bij een roll?
Op welke manier zouden we dit kunnen oplossen? Door een roll te detecteren en dan de readers opnieuw te initialiseren??
Graag uw input!
Nu stel ik me de vraag wat het gedrag zal zijn op het moment dat een dergelijke logfile, bij het bereiken van zijn treshold, zal rollen. Momenteel gebeurd de implementatie aan de hand van een FileReader:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| public void readLogs() { String line; try { while ((line = reader.readLine()) != null) { try { saveLogLine(LogLine.fromString(line), reader); } catch (MalformedLogLineException e) { logger.warn("Couldn't parse the log line", e); } } } catch (IOException e) { logger.error("An exception occured while reading the log files", e); } } |
In unit tests lijkt dit onder Windows wel vrij goed te blijven functioneren na een roll; het kan enkel wel zijn dat er op het moment van de roll een aantal log lijnen verloren gaan (tussen de poll periode). Maar de nieuwe entries worden wel correct gelezen in de "nieuwe" file. Er zijn echter meerdere systemen waarop de applicatie zal komen te draaien, waaronder Solaris en AIX. Welke problemen mogen we daar precies verwachten?
Zal de referentie (handle) naar de file hetzelfde blijven bij een roll?
Op welke manier zouden we dit kunnen oplossen? Door een roll te detecteren en dan de readers opnieuw te initialiseren??
Graag uw input!