logging - Closing Java FileHandler when quitting a routine that runs as a service -
i have little routine schedules timer that:
timer.schedule(new myroutine(), 1000, 60000); in run() method of myroutine logger opened , filehandler attached it:
filehandler fh = new filehandler("app.log"),true); logger.addhandler(fh); since there no real exit point application (as runs service), have no chance close , remove logger´s filehandler, hence file lock (app.log.lck) remains, resulting in new logfile (app.log.1) on next start of service.
is there way ensure filehandler closed , removed?
you add shutdown hook this:
in method schedules timer:
public void schedulefiletask() { final filehandler fh = new filehandler("app.log"),true); runtime.getruntime().addshutdownhook(new thread() { @override public void run() { fh.close(); } }); timer.schedule(new myroutine(fh), 1000, 60000); } and in myroutine.java
public class myroutine extends timertask { private final filehandler handler; public myroutine(filehandler hander) { this.handler = handler; } public void run() { // use handler here handler.dosomething(); } } for more information can look java docs
Comments
Post a Comment