home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 November / PCONLINE_11_99.ISO / filesbbs / OS2 / APCHSSL2.ZIP / OS2HTTPD / jserv / com / bitmechanic / gsp / Logger.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-02-03  |  5.4 KB  |  221 lines

  1. package com.bitmechanic.gsp;
  2.  
  3. import com.bitmechanic.smtp.MailMessage;
  4. import com.bitmechanic.smtp.Mailer;
  5. import java.io.BufferedReader;
  6. import java.io.FileReader;
  7. import java.io.FileWriter;
  8. import java.io.IOException;
  9. import java.io.OutputStreamWriter;
  10. import java.io.PrintWriter;
  11. import java.io.StringWriter;
  12. import java.util.Date;
  13. import java.util.StringTokenizer;
  14. import javax.servlet.ServletContext;
  15.  
  16. public class Logger {
  17.    protected final int MAX_EXCEPTIONS = 100;
  18.    protected ServletContext context;
  19.    protected Mailer mailer;
  20.    protected long nextNotification;
  21.    protected String filename;
  22.    protected String from;
  23.    protected String subject;
  24.    // $FF: renamed from: to java.lang.String[]
  25.    protected String[] field_0;
  26.    protected int frequency;
  27.    protected int exceptionsSinceNotified;
  28.    protected int count;
  29.  
  30.    public void init(GspServlet var1) throws Exception {
  31.       this.context = var1.getServletContext();
  32.       this.mailer = var1.getMailer();
  33.       this.count = 0;
  34.       this.filename = var1.getProperty("logger.filename");
  35.       FileWriter var2 = new FileWriter(this.filename);
  36.       ((OutputStreamWriter)var2).close();
  37.       this.frequency = 0;
  38.  
  39.       try {
  40.          this.frequency = Integer.parseInt(var1.getProperty("logger.mail.frequency"));
  41.       } catch (Exception var6) {
  42.       }
  43.  
  44.       if (this.frequency > 0) {
  45.          String var3 = var1.getProperty("logger.mail.to");
  46.          StringTokenizer var4 = new StringTokenizer(var3, " ");
  47.          if (var4.countTokens() < 1) {
  48.             this.field_0 = new String[1];
  49.             this.field_0[0] = var3;
  50.          } else {
  51.             this.field_0 = new String[var4.countTokens()];
  52.  
  53.             for(int var5 = 0; var4.hasMoreTokens(); ++var5) {
  54.                this.field_0[var5] = var4.nextToken();
  55.             }
  56.          }
  57.  
  58.          this.from = var1.getProperty("logger.mail.from");
  59.          if (this.from == null) {
  60.             this.from = "gsp-exception@bitmechanic.com";
  61.          }
  62.  
  63.          this.subject = var1.getProperty("logger.mail.subject");
  64.          if (this.subject == null) {
  65.             this.subject = "GSP Exception Alert!";
  66.          }
  67.       }
  68.  
  69.       this.nextNotification = 0L;
  70.       this.exceptionsSinceNotified = 0;
  71.    }
  72.  
  73.    public void destroy() {
  74.       try {
  75.          FileWriter var1 = new FileWriter(this.filename);
  76.          ((OutputStreamWriter)var1).close();
  77.       } catch (IOException var2) {
  78.          ((Throwable)var2).printStackTrace();
  79.       }
  80.    }
  81.  
  82.    public void log(Throwable var1, GspRequest var2) {
  83.       this.log(var1, var2.getRelativePath());
  84.    }
  85.  
  86.    public void log(Throwable var1) {
  87.       this.log(var1, "??");
  88.    }
  89.  
  90.    public void log(int var1, String var2) {
  91.       this.log(var2);
  92.    }
  93.  
  94.    public void log(String var1) {
  95.       this.context.log(var1);
  96.    }
  97.  
  98.    public void log(Throwable var1, String var2) {
  99.       String var3 = exceptionToString(var1);
  100.       this.context.log(var3);
  101.       Date var4 = new Date();
  102.       String var5 = var1.getMessage();
  103.       if (var5 != null && !var5.equals("")) {
  104.          var5.replace('\r', ' ');
  105.          var5.replace('\n', ' ');
  106.       } else {
  107.          var5 = "No Message";
  108.       }
  109.  
  110.       try {
  111.          synchronized(this){}
  112.  
  113.          try {
  114.             PrintWriter var8 = new PrintWriter(new FileWriter(this.filename, true));
  115.             var8.println(var4);
  116.             var8.println(var2);
  117.             var8.println(var5);
  118.             var8.println(var3);
  119.             var8.println(".");
  120.             var8.close();
  121.          } catch (Throwable var11) {
  122.             throw var11;
  123.          }
  124.  
  125.          ++this.count;
  126.          ++this.exceptionsSinceNotified;
  127.       } catch (IOException var12) {
  128.          this.context.log(exceptionToString(var12));
  129.       }
  130.    }
  131.  
  132.    public long getExceptionCount() {
  133.       return (long)this.count;
  134.    }
  135.  
  136.    public void flushExceptions(long var1) throws IOException {
  137.       if (this.exceptionsSinceNotified > 0 && this.frequency > 0 && this.nextNotification < var1) {
  138.          this.sendMail(var1);
  139.       }
  140.  
  141.    }
  142.  
  143.    private synchronized void sendMail(long var1) throws IOException {
  144.       Date var3 = new Date(var1);
  145.       this.nextNotification = var1 + (long)(this.frequency * '\uea60');
  146.       int var4 = this.exceptionsSinceNotified;
  147.       if (var4 > 100) {
  148.          var4 = 100;
  149.       }
  150.  
  151.       LoggedException[] var5 = this.getExceptions(var4, 0);
  152.       StringBuffer var6 = new StringBuffer(4096);
  153.       var6.append("GSP Exception Alert\n");
  154.       var6.append("-------------------\n");
  155.       var6.append("          Time: " + var3.toString() + "\n");
  156.       var6.append("  # Exceptions: " + this.exceptionsSinceNotified + "\n\n");
  157.       var6.append("Template                         Message\n");
  158.       var6.append("----------------------------------------------------------\n");
  159.  
  160.       for(int var7 = 0; var7 < var5.length; ++var7) {
  161.          var6.append(var5[var7].getTemplate());
  162.          var6.append("\t");
  163.          var6.append(var5[var7].getMessage());
  164.          var6.append('\n');
  165.       }
  166.  
  167.       this.exceptionsSinceNotified = 0;
  168.       MailMessage var8 = new MailMessage(this.field_0, this.from, this.subject, var6.toString());
  169.       this.mailer.send(var8);
  170.    }
  171.  
  172.    public synchronized LoggedException[] getExceptions(int var1, int var2) throws IOException {
  173.       BufferedReader var4 = new BufferedReader(new FileReader(this.filename));
  174.       if (var2 > this.count) {
  175.          LoggedException[] var13 = new LoggedException[0];
  176.          return var13;
  177.       } else {
  178.          if (var1 + var2 > this.count) {
  179.             var1 = this.count - var2;
  180.          }
  181.  
  182.          int var5 = 0;
  183.          String var6 = "";
  184.          if (var5 < this.count - (var2 + var1)) {
  185.             do {
  186.                var6 = var4.readLine();
  187.                if (var6.equals(".")) {
  188.                   ++var5;
  189.                }
  190.             } while(var6 != null && var5 < this.count - (var2 + var1));
  191.          }
  192.  
  193.          var5 = 0;
  194.  
  195.          LoggedException[] var3;
  196.          for(var3 = new LoggedException[var1]; var5 < var1 && var6 != null; ++var5) {
  197.             String var7 = var4.readLine();
  198.             String var8 = var4.readLine();
  199.             String var9 = var4.readLine();
  200.             StringBuffer var10 = new StringBuffer();
  201.  
  202.             for(String var11 = var4.readLine(); !var11.equals("."); var11 = var4.readLine()) {
  203.                var10.append(var11);
  204.                var10.append('\n');
  205.             }
  206.  
  207.             LoggedException var12 = new LoggedException(var7, var9, var10.toString(), var8);
  208.             var3[var1 - var5 - 1] = var12;
  209.          }
  210.  
  211.          return var3;
  212.       }
  213.    }
  214.  
  215.    public static String exceptionToString(Throwable var0) {
  216.       StringWriter var1 = new StringWriter();
  217.       var0.printStackTrace(new PrintWriter(var1));
  218.       return var1.toString();
  219.    }
  220. }
  221.