1 package com.protomatter.syslog; 2 3 52 53 import java.io.PrintWriter ; 54 import java.util.*; 55 import java.text.*; 56 import java.net.*; 57 import java.io.*; 58 59 import com.protomatter.util.*; 60 61 66 public class HTMLSyslogTextFormatter 67 extends SimpleSyslogTextFormatter 68 { 69 private String styleSheet = "syslog-stylesheet.css"; 70 71 private static char[] DEBUG = "DEBUG".toCharArray(); 72 private static char[] INFO = "INFO".toCharArray(); 73 private static char[] WARNING = "WARNING".toCharArray(); 74 private static char[] ERROR = "ERROR".toCharArray(); 75 private static char[] FATAL = "FATAL".toCharArray(); 76 private static char[] UNKNOWN_LEVEL = "UNKNOWN".toCharArray(); 77 78 81 public HTMLSyslogTextFormatter() 82 { 83 super(); 84 } 85 86 89 public void setStyleSheet(String styleSheet) 90 { 91 this.styleSheet = styleSheet; 92 } 93 94 97 public String getStyleSheet() 98 { 99 return this.styleSheet; 100 } 101 102 protected char[] getStringForLevel(int level) 103 { 104 switch (level) 105 { 106 case Syslog.DEBUG: return DEBUG; 107 case Syslog.INFO: return INFO; 108 case Syslog.WARNING: return WARNING; 109 case Syslog.ERROR: return ERROR; 110 case Syslog.FATAL: return FATAL; 111 default: return UNKNOWN_LEVEL; 112 } 113 } 114 115 118 public void formatLogEntry(StringBuffer b, SyslogMessage message) 119 { 120 int columns = 0; 121 122 b.append("<TR>\n"); 123 124 b.append("<TD CLASS=\"SYSLOG-DATE\">"); 125 b.append(formatDate(message.time)); 126 b.append("</TD>\n"); 127 columns++; 128 129 char[] level = getStringForLevel(message.level); 130 b.append("<TD CLASS=\"SYSLOG-LEVEL-"); 131 b.append(level); 132 b.append("\">"); 133 b.append(level); 134 b.append("</TD>\n"); 135 columns++; 136 137 if (getShowChannel()) 138 { 139 b.append("<TD CLASS=\"SYSLOG-CHANNEL\">"); 140 if (message.channel.equals(Syslog.ALL_CHANNEL)) 141 b.append("ALL_CHANNEL"); 142 else if (message.channel.equals(Syslog.DEFAULT_CHANNEL)) 143 b.append("DEFAULT_CHANNEL"); 144 else 145 b.append(message.channel); 146 b.append("</TD>\n"); 147 columns++; 148 } 149 150 if (getShowHostName()) 151 { 152 b.append("<TD CLASS=\"SYSLOG-HOSTNAME\">"); 153 b.append(getHostname(message.host)); 154 b.append("</TD>\n"); 155 columns++; 156 } 157 158 if (getShowThreadName()) 159 { 160 b.append("<TD CLASS=\"SYSLOG-THREADNAME\">"); 161 b.append(message.threadName); 162 b.append("</TD>\n"); 163 columns++; 164 } 165 166 b.append("<TD CLASS=\"SYSLOG-LOGGERCLASS\">"); 167 formatLoggerClassName(b, message); 169 b.append("</TD>\n"); 170 columns++; 171 172 String msg = null; 173 if (message.msg != null) 174 msg = message.msg.toString(); 175 else 176 msg = " "; 177 178 b.append("<TD CLASS=\"SYSLOG-MESSAGE\">"); 179 b.append(msg); 180 b.append("</TD>\n"); 181 columns++; 182 183 b.append("</TR>\n"); 184 185 if (message.detail != null) 186 { 187 b.append("<TR>\n"); 188 b.append("<TD> </TD>\n"); 189 b.append("<TD CLASS=\"SYSLOG-DETAIL\" COLSPAN=\"" 190 + (columns -1) + "\"><PRE>"); 191 int len = b.length(); 192 formatMessageDetail(b, message); 193 if (b.length() == len) 194 b.append(" "); 195 b.append("</PRE></TD>\n</TR>\n"); 196 } 197 } 198 199 202 public String getLogHeader() 203 { 204 StringBuffer b = new StringBuffer (64); 205 b.append("<HTML>\n"); 206 b.append("<HEAD>\n"); 207 b.append("<TITLE>"); 208 b.append(Syslog.getResourceString(MessageConstants.HTML_OUTPUT_MESSAGE)); 209 b.append("</TITLE>\n"); 210 b.append("<LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\""); 211 b.append(getStyleSheet()); 212 b.append("\" TITLE=\"Style\">\n"); 213 b.append("</HEAD>\n"); 214 b.append("<BODY BGCOLOR=\"#FFFFFF\">\n"); 215 b.append("<TABLE BORDER=\"1\" CELLPADDING=\"2\" CELLSPACING=\"0\">\n"); 216 return b.toString(); 217 } 218 219 222 public String getLogFooter() 223 { 224 StringBuffer b = new StringBuffer (64); 225 b.append("</TABLE>\n"); 226 b.append("</BODY>\n"); 227 b.append("</HTML>\n"); 228 return b.toString(); 229 } 230 } 231 | Popular Tags |