1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.log4j.chainsaw.layout;
19
20 import java.io.BufferedReader;
21 import java.io.InputStreamReader;
22 import java.net.URL;
23
24 import org.apache.log4j.LogManager;
25 import org.apache.log4j.PatternLayout;
26
27
28
29
30
31
32
33 public class DefaultLayoutFactory {
34 private volatile static String defaultPatternLayout = null;
35
36 private DefaultLayoutFactory() {
37 }
38
39 public static String getDefaultPatternLayout() {
40 return getPatternLayout("org/apache/log4j/chainsaw/layout/DefaultDetailLayout.html");
41 }
42 public static String getFullPatternLayout() {
43 return getPatternLayout("org/apache/log4j/chainsaw/layout/FullDetailLayout.html");
44 }
45
46 private static String getPatternLayout(String fileNamePath) {
47 StringBuffer content = new StringBuffer();
48 URL defaultLayoutURL =
49 DefaultLayoutFactory.class.getClassLoader().getResource(fileNamePath);
50
51 if (defaultLayoutURL == null) {
52 LogManager.getLogger(DefaultLayoutFactory.class).warn(
53 "Could not locate the default Layout for Event Details and Tooltips");
54 } else {
55 try {
56 BufferedReader reader = null;
57
58 try {
59 reader =
60 new BufferedReader(
61 new InputStreamReader(defaultLayoutURL.openStream()));
62
63 String line = "";
64
65 while ((line = reader.readLine()) != null) {
66 content.append(line).append("\n");
67 }
68 } finally {
69 if (reader != null) {
70 reader.close();
71 }
72 }
73 } catch (Exception e) {
74 content = new StringBuffer(PatternLayout.TTCC_CONVERSION_PATTERN);
75 }
76 String trimmedContent = content.toString().trim();
77
78 String startComment = "<!--";
79 String endComment = "-->";
80 if (trimmedContent.startsWith(startComment)) {
81 int endIndex = trimmedContent.indexOf(endComment);
82 if (endIndex > -1) {
83 trimmedContent = trimmedContent.substring(endIndex + endComment.length()).trim();
84 }
85 }
86 defaultPatternLayout = trimmedContent;
87 }
88
89 return defaultPatternLayout;
90 }
91 }