home *** CD-ROM | disk | FTP | other *** search
- package com.bitmechanic.gsp;
-
- import com.bitmechanic.smtp.MailMessage;
- import com.bitmechanic.smtp.Mailer;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.io.StringWriter;
- import java.util.Date;
- import java.util.StringTokenizer;
- import javax.servlet.ServletContext;
-
- public class Logger {
- protected final int MAX_EXCEPTIONS = 100;
- protected ServletContext context;
- protected Mailer mailer;
- protected long nextNotification;
- protected String filename;
- protected String from;
- protected String subject;
- // $FF: renamed from: to java.lang.String[]
- protected String[] field_0;
- protected int frequency;
- protected int exceptionsSinceNotified;
- protected int count;
-
- public void init(GspServlet var1) throws Exception {
- this.context = var1.getServletContext();
- this.mailer = var1.getMailer();
- this.count = 0;
- this.filename = var1.getProperty("logger.filename");
- FileWriter var2 = new FileWriter(this.filename);
- ((OutputStreamWriter)var2).close();
- this.frequency = 0;
-
- try {
- this.frequency = Integer.parseInt(var1.getProperty("logger.mail.frequency"));
- } catch (Exception var6) {
- }
-
- if (this.frequency > 0) {
- String var3 = var1.getProperty("logger.mail.to");
- StringTokenizer var4 = new StringTokenizer(var3, " ");
- if (var4.countTokens() < 1) {
- this.field_0 = new String[1];
- this.field_0[0] = var3;
- } else {
- this.field_0 = new String[var4.countTokens()];
-
- for(int var5 = 0; var4.hasMoreTokens(); ++var5) {
- this.field_0[var5] = var4.nextToken();
- }
- }
-
- this.from = var1.getProperty("logger.mail.from");
- if (this.from == null) {
- this.from = "gsp-exception@bitmechanic.com";
- }
-
- this.subject = var1.getProperty("logger.mail.subject");
- if (this.subject == null) {
- this.subject = "GSP Exception Alert!";
- }
- }
-
- this.nextNotification = 0L;
- this.exceptionsSinceNotified = 0;
- }
-
- public void destroy() {
- try {
- FileWriter var1 = new FileWriter(this.filename);
- ((OutputStreamWriter)var1).close();
- } catch (IOException var2) {
- ((Throwable)var2).printStackTrace();
- }
- }
-
- public void log(Throwable var1, GspRequest var2) {
- this.log(var1, var2.getRelativePath());
- }
-
- public void log(Throwable var1) {
- this.log(var1, "??");
- }
-
- public void log(int var1, String var2) {
- this.log(var2);
- }
-
- public void log(String var1) {
- this.context.log(var1);
- }
-
- public void log(Throwable var1, String var2) {
- String var3 = exceptionToString(var1);
- this.context.log(var3);
- Date var4 = new Date();
- String var5 = var1.getMessage();
- if (var5 != null && !var5.equals("")) {
- var5.replace('\r', ' ');
- var5.replace('\n', ' ');
- } else {
- var5 = "No Message";
- }
-
- try {
- synchronized(this){}
-
- try {
- PrintWriter var8 = new PrintWriter(new FileWriter(this.filename, true));
- var8.println(var4);
- var8.println(var2);
- var8.println(var5);
- var8.println(var3);
- var8.println(".");
- var8.close();
- } catch (Throwable var11) {
- throw var11;
- }
-
- ++this.count;
- ++this.exceptionsSinceNotified;
- } catch (IOException var12) {
- this.context.log(exceptionToString(var12));
- }
- }
-
- public long getExceptionCount() {
- return (long)this.count;
- }
-
- public void flushExceptions(long var1) throws IOException {
- if (this.exceptionsSinceNotified > 0 && this.frequency > 0 && this.nextNotification < var1) {
- this.sendMail(var1);
- }
-
- }
-
- private synchronized void sendMail(long var1) throws IOException {
- Date var3 = new Date(var1);
- this.nextNotification = var1 + (long)(this.frequency * '\uea60');
- int var4 = this.exceptionsSinceNotified;
- if (var4 > 100) {
- var4 = 100;
- }
-
- LoggedException[] var5 = this.getExceptions(var4, 0);
- StringBuffer var6 = new StringBuffer(4096);
- var6.append("GSP Exception Alert\n");
- var6.append("-------------------\n");
- var6.append(" Time: " + var3.toString() + "\n");
- var6.append(" # Exceptions: " + this.exceptionsSinceNotified + "\n\n");
- var6.append("Template Message\n");
- var6.append("----------------------------------------------------------\n");
-
- for(int var7 = 0; var7 < var5.length; ++var7) {
- var6.append(var5[var7].getTemplate());
- var6.append("\t");
- var6.append(var5[var7].getMessage());
- var6.append('\n');
- }
-
- this.exceptionsSinceNotified = 0;
- MailMessage var8 = new MailMessage(this.field_0, this.from, this.subject, var6.toString());
- this.mailer.send(var8);
- }
-
- public synchronized LoggedException[] getExceptions(int var1, int var2) throws IOException {
- BufferedReader var4 = new BufferedReader(new FileReader(this.filename));
- if (var2 > this.count) {
- LoggedException[] var13 = new LoggedException[0];
- return var13;
- } else {
- if (var1 + var2 > this.count) {
- var1 = this.count - var2;
- }
-
- int var5 = 0;
- String var6 = "";
- if (var5 < this.count - (var2 + var1)) {
- do {
- var6 = var4.readLine();
- if (var6.equals(".")) {
- ++var5;
- }
- } while(var6 != null && var5 < this.count - (var2 + var1));
- }
-
- var5 = 0;
-
- LoggedException[] var3;
- for(var3 = new LoggedException[var1]; var5 < var1 && var6 != null; ++var5) {
- String var7 = var4.readLine();
- String var8 = var4.readLine();
- String var9 = var4.readLine();
- StringBuffer var10 = new StringBuffer();
-
- for(String var11 = var4.readLine(); !var11.equals("."); var11 = var4.readLine()) {
- var10.append(var11);
- var10.append('\n');
- }
-
- LoggedException var12 = new LoggedException(var7, var9, var10.toString(), var8);
- var3[var1 - var5 - 1] = var12;
- }
-
- return var3;
- }
- }
-
- public static String exceptionToString(Throwable var0) {
- StringWriter var1 = new StringWriter();
- var0.printStackTrace(new PrintWriter(var1));
- return var1.toString();
- }
- }
-