00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 package de.picana.ant;
00014
00015 import org.apache.tools.ant.*;
00016
00017 import java.io.*;
00018 import java.text.*;
00019 import java.util.*;
00020
00021
00028 public class PicanaLogger implements BuildLogger {
00029
00030 private int log_level;
00031 private PrintStream out;
00032 private PrintStream err;
00033 private PrintWriter pw;
00034
00035 private boolean console_logger = false;
00036 private boolean console_logger_info = false;
00037 private boolean console_logger_warn = false;
00038 private boolean console_logger_err = false;
00039 private boolean console_logger_verb = false;
00040 private boolean console_logger_dbg = false;
00041
00042 private boolean file_logger = false;
00043 private boolean file_logger_info = false;
00044 private boolean file_logger_warn = false;
00045 private boolean file_logger_err = false;
00046 private boolean file_logger_verb = false;
00047 private boolean file_logger_dbg = false;
00048
00049
00051 public PicanaLogger() {
00052 }
00053
00054 public void buildFinished(BuildEvent ev) {
00055 if (console_logger) out.println("BUILD SUCCESSFUL");
00056 if (file_logger) pw.println("BUILD SUCCESSFUL");
00057 if (pw != null)
00058 pw.close();
00059 }
00060
00061 public void buildStarted(BuildEvent ev) {
00062
00063 }
00064
00065 public void messageLogged(BuildEvent ev) {
00066
00067 String level = "";
00068 String taskname = "???";
00069
00070
00071
00072
00073
00074
00075 if (!console_logger) {
00076
00077 if (ev.getProject() != null) {
00078
00079 if (ev.getProject().getProperty("logger.console.level") != null) {
00080
00081 StringTokenizer tk = new StringTokenizer(
00082 ev.getProject().getProperty("logger.console.level"), ",");
00083
00084 while (tk.hasMoreTokens()) {
00085 String token = tk.nextToken().trim().toLowerCase();
00086
00087 if (token.equals("info"))
00088 console_logger_info = true;
00089 if (token.equals("warn"))
00090 console_logger_warn = true;
00091 if (token.equals("error"))
00092 console_logger_err = true;
00093 if (token.equals("verbose"))
00094 console_logger_verb = true;
00095 if (token.equals("debug"))
00096 console_logger_dbg = true;
00097 if (token.equals("default")) {
00098 console_logger_info = true;
00099 console_logger_warn = true;
00100 console_logger_err = true;
00101 }
00102 if (token.equals("all")) {
00103 console_logger_info = true;
00104 console_logger_warn = true;
00105 console_logger_err = true;
00106 console_logger_verb = true;
00107 console_logger_dbg = true;
00108 }
00109 }
00110
00111 console_logger = true;
00112 }
00113 }
00114 }
00115
00116
00117
00118 if (!file_logger) {
00119
00120 if (ev.getProject() != null) {
00121
00122 if ((ev.getProject().getProperty("logger.file.level") != null) &&
00123 (ev.getProject().getProperty("logger.file.name") != null)) {
00124
00125 File logfile = new File(ev.getProject().getProperty("logger.file.name"));
00126 try {
00127 FileOutputStream logoutput = new FileOutputStream(logfile);
00128 pw = new PrintWriter(logoutput);
00129
00130 StringTokenizer tk = new StringTokenizer(
00131 ev.getProject().getProperty("logger.file.level"), ",");
00132
00133 while (tk.hasMoreTokens()) {
00134 String token = tk.nextToken().trim().toLowerCase();
00135
00136 if (token.equals("info"))
00137 file_logger_info = true;
00138 if (token.equals("warn"))
00139 file_logger_warn = true;
00140 if (token.equals("error"))
00141 file_logger_err = true;
00142 if (token.equals("verbose"))
00143 file_logger_verb = true;
00144 if (token.equals("debug"))
00145 file_logger_dbg = true;
00146 if (token.equals("default")) {
00147 file_logger_info = true;
00148 file_logger_warn = true;
00149 file_logger_err = true;
00150 }
00151 if (token.equals("all")) {
00152 file_logger_info = true;
00153 file_logger_warn = true;
00154 file_logger_err = true;
00155 file_logger_verb = true;
00156 file_logger_dbg = true;
00157 }
00158 }
00159
00160 file_logger = true;
00161
00162 } catch (FileNotFoundException fnf) {}
00163 }
00164 }
00165 }
00166
00167 if (ev.getTask() != null)
00168 taskname = ev.getTask().getTaskName();
00169
00170
00171
00172 if (console_logger) {
00173 if ((ev.getPriority() == Project.MSG_INFO) && console_logger_info) {
00174 out.println(" " + getDateTimeString() + " " + getFilledString(taskname, 20)
00175 + " [INFO] : " + ev.getMessage());
00176 }
00177 if ((ev.getPriority() == Project.MSG_WARN) && console_logger_warn) {
00178 out.println(" " + getDateTimeString() + " " + getFilledString(taskname, 20)
00179 + " [WARN] : " + ev.getMessage());
00180 }
00181 if ((ev.getPriority() == Project.MSG_ERR) && console_logger_err) {
00182 out.println(" " + getDateTimeString() + " " + getFilledString(taskname, 20)
00183 + " [ERROR] : " + ev.getMessage());
00184 }
00185 if ((ev.getPriority() == Project.MSG_DEBUG) && console_logger_dbg) {
00186 out.println(" " + getDateTimeString() + " " + getFilledString(taskname, 20)
00187 + " [DEBUG] : " + ev.getMessage());
00188 }
00189 if ((ev.getPriority() == Project.MSG_VERBOSE) && console_logger_verb) {
00190 out.println(" " + getDateTimeString() + " " + getFilledString(taskname, 20)
00191 + " [VERB] : " + ev.getMessage());
00192 }
00193 }
00194
00195
00196
00197 if (file_logger) {
00198 if ((ev.getPriority() == Project.MSG_INFO) && file_logger_info) {
00199 pw.println(" " + getDateTimeString() + " " + getFilledString(taskname, 20)
00200 + " [INFO] : " + ev.getMessage());
00201 }
00202 if ((ev.getPriority() == Project.MSG_WARN) && file_logger_warn) {
00203 pw.println(" " + getDateTimeString() + " " + getFilledString(taskname, 20)
00204 + " [WARN] : " + ev.getMessage());
00205 }
00206 if ((ev.getPriority() == Project.MSG_ERR) && file_logger_err) {
00207 pw.println(" " + getDateTimeString() + " " + getFilledString(taskname, 20)
00208 + " [ERROR] : " + ev.getMessage());
00209 }
00210 if ((ev.getPriority() == Project.MSG_DEBUG) && file_logger_dbg) {
00211 pw.println(" " + getDateTimeString() + " " + getFilledString(taskname, 20)
00212 + " [DEBUG] : " + ev.getMessage());
00213 }
00214 if ((ev.getPriority() == Project.MSG_VERBOSE) && file_logger_verb) {
00215 pw.println(" " + getDateTimeString() + " " + getFilledString(taskname, 20)
00216 + " [VERB] : " + ev.getMessage());
00217 }
00218 pw.flush();
00219 }
00220
00221
00222
00223 }
00224
00225 public void targetFinished(BuildEvent ev) {
00226 if (console_logger) out.println();
00227 if (file_logger) pw.println();
00228 }
00229
00230 public void targetStarted(BuildEvent ev) {
00231 if (console_logger) out.println(ev.getTarget().getName()+":");
00232 if (file_logger) pw.println(ev.getTarget().getName()+":");
00233 }
00234
00235 public void taskFinished(BuildEvent ev) {
00236 }
00237
00238 public void taskStarted(BuildEvent ev) {
00239 }
00240
00241 public void setMessageOutputLevel(int level) {
00242 this.log_level = level;
00243 }
00244
00245 public void setOutputPrintStream(PrintStream out) {
00246 this.out = out;
00247 }
00248
00249 public void setEmacsMode(boolean emacsMode) {
00250 }
00251
00252 public void setErrorPrintStream(PrintStream err) {
00253 this.err = err;
00254 }
00255
00256 protected String getDateTimeString() {
00257 Date now = new Date(System.currentTimeMillis());
00258 DateFormat df = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.GERMAN);
00259 return df.format(now);
00260 }
00261
00262 protected String getFilledString(String str, int length) {
00263 StringBuffer buffer = new StringBuffer(str);
00264 if (str.length() >= length)
00265 return str;
00266 else {
00267 for (int i=0; i < length - str.length(); i++)
00268 buffer.insert(0, ' ');
00269 }
00270 return buffer.toString();
00271 }
00272 }