adding basic logging api with a filelogger version and a test module
[OpenSRF.git] / src / java / org / opensrf / util / FileLogger.java
1 package org.opensrf.util;
2 import java.io.BufferedWriter;
3 import java.io.FileWriter;
4
5
6 public class FileLogger extends Logger {
7
8     /** File to log to */
9     private String filename;
10
11     /** 
12      * FileLogger constructor
13      * @param filename The path to the log file
14      */
15     public FileLogger(String filename) {
16         this.filename = filename;
17     }
18
19     /**
20      * Logs the mesage to a file.
21      * @param level The log level
22      * @param msg The mesage to log
23      */
24     protected synchronized void log(short level, String msg) {
25         if(level > logLevel) return;
26
27         BufferedWriter out = null;
28         try {
29             out = new BufferedWriter(new FileWriter(this.filename, true));
30             out.write(formatMessage(level, msg) + "\n");
31
32         } catch(Exception e) {
33             /** If we are unable to write our log message, go ahead and
34               * fall back to the default (stdout) logger */
35             Logger.init(logLevel, new Logger());
36             Logger.logByLevel(ERROR, "Unable to write to log file " + this.filename);
37             Logger.logByLevel(level, msg);
38         }
39
40         try {
41             out.close();
42         } catch(Exception e) {}
43     }
44 }