View Javadoc

1   /* RuntimeErrorFormatter
2    * 
3    * Created on Jul 7, 2003
4    * 
5    * $Id: RuntimeErrorFormatter.java 3124 2005-02-17 23:51:25Z gojomo $
6    * 
7    * Copyright (C) 2003 Internet Archive.
8    *
9    * This file is part of the Heritrix web crawler (crawler.archive.org).
10   *
11   * Heritrix is free software; you can redistribute it and/or modify
12   * it under the terms of the GNU Lesser Public License as published by
13   * the Free Software Foundation; either version 2.1 of the License, or
14   * any later version.
15   *
16   * Heritrix is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU Lesser Public License for more details.
20   *
21   * You should have received a copy of the GNU Lesser Public License
22   * along with Heritrix; if not, write to the Free Software
23   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
24   */
25  package org.archive.crawler.io;
26  
27  import java.io.PrintWriter;
28  import java.io.StringWriter;
29  import java.util.logging.LogRecord;
30  
31  import org.archive.crawler.datamodel.CoreAttributeConstants;
32  import org.archive.crawler.datamodel.CrawlURI;
33  
34  /***
35   * Runtime exception log formatter.
36   *
37   * Used to format unexpected runtime exceptions such as 
38   * OOMEs.
39   * 
40   * @author gojomo
41   */
42  public class RuntimeErrorFormatter extends UriProcessingFormatter
43  implements CoreAttributeConstants {
44      public String format(LogRecord lr) {
45          Object [] parameters = lr.getParameters();
46          String stackTrace = "None retrieved";
47          if (parameters != null) {
48              // CrawlURI is always first parameter.
49              CrawlURI curi = (CrawlURI)parameters[0];
50              if (curi != null) {
51                  Throwable t = (Throwable)curi.getObject(A_RUNTIME_EXCEPTION);
52                  assert t != null : "Null throwable";
53                  StringWriter sw = new StringWriter();
54                  if (t == null) {
55                      sw.write("No exception to report.");
56                  } else {
57                      t.printStackTrace(new PrintWriter(sw));
58                  }
59                  stackTrace = sw.toString();
60              }
61          }
62          return super.format(lr) + " " + stackTrace;
63      }
64  }