1 package com.protomatter.syslog.xml; 2 3 52 53 import java.io.*; 54 import java.net.*; 55 import java.util.*; 56 import java.text.*; 57 58 import com.protomatter.xml.*; 59 import com.protomatter.syslog.*; 60 import org.jdom.*; 61 62 65 public class UNIXSyslogLog_Helper 66 extends BasicLogger_Helper 67 { 68 220 public void configure(Object o, Element e) 221 throws SyslogInitException 222 { 223 super.configure(o, e, false, true); 224 225 UNIXSyslogLog log = (UNIXSyslogLog)o; 226 227 String tmp = e.getChildTextTrim("logServer", e.getNamespace()); 228 if (tmp != null) 229 { 230 try 231 { 232 log.setLogServer(InetAddress.getByName(tmp)); 233 } 234 catch (UnknownHostException x) 235 { 236 throw new IllegalArgumentException ( 237 MessageFormat.format(Syslog.getResourceString(MessageConstants.UNIX_UNKNOWN_HOST), 238 new Object [] { tmp } )); 239 } 240 } 241 else 242 { 243 throw new IllegalArgumentException ( 244 MessageFormat.format(Syslog.getResourceString(MessageConstants.XML_MUST_SPECIFY_PARAM_MESSAGE), 245 new Object [] { "logServer" } )); 246 } 247 248 tmp = e.getChildTextTrim("port", e.getNamespace()); 249 if (tmp != null) 250 { 251 try 252 { 253 log.setPort(Integer.parseInt(tmp)); 254 } 255 catch (NumberFormatException x) 256 { 257 throw new IllegalArgumentException ( 258 MessageFormat.format(Syslog.getResourceString(MessageConstants.UNIX_BAD_PORT), 259 new Object [] { tmp } )); 260 } 261 } 262 263 tmp = e.getChildTextTrim("tag", e.getNamespace()); 264 if (tmp != null) 265 { 266 log.setTag(tmp); 267 } 268 269 tmp = e.getChildTextTrim("facility", e.getNamespace()); 270 if (tmp != null) 271 { 272 try 273 { 274 log.setFacility(Integer.parseInt(tmp)); 275 } 276 catch (NumberFormatException x) 277 { 278 throw new IllegalArgumentException ( 279 MessageFormat.format(Syslog.getResourceString(MessageConstants.UNIX_BAD_FACILITY), 280 new Object [] { tmp } )); 281 } 282 } 283 284 tmp = e.getChildTextTrim("showHostname", e.getNamespace()); 285 if (tmp != null) 286 log.setShowHostname("true".equalsIgnoreCase(tmp.trim())); 287 288 tmp = e.getChildTextTrim("messageTemplate", e.getNamespace()); 289 if (tmp != null) 290 log.setMessageTemplate(tmp.trim()); 291 292 Element element = e.getChild("SeverityMap", e.getNamespace()); 293 if (element != null) 294 { 295 Iterator params = element.getChildren("MapEntry", e.getNamespace()).iterator(); 296 Map severityMap = new HashMap(); 297 while (params.hasNext()) 298 { 299 Element param = (Element)params.next(); 300 String syslog = param.getChildTextTrim("syslog", e.getNamespace()); 301 String unix = param.getChildTextTrim("unix", e.getNamespace()); 302 int syslogSeverity = 0; 303 int unixSeverity = 0; 304 if (syslog != null && unix != null) 305 { 306 if ("DEBUG".equalsIgnoreCase(syslog)) 307 syslogSeverity = Syslog.DEBUG; 308 else if ("INFO".equalsIgnoreCase(syslog)) 309 syslogSeverity = Syslog.INFO; 310 else if ("WARNING".equalsIgnoreCase(syslog)) 311 syslogSeverity = Syslog.WARNING; 312 else if ("ERROR".equalsIgnoreCase(syslog)) 313 syslogSeverity = Syslog.ERROR; 314 else if ("FATAL".equalsIgnoreCase(syslog)) 315 syslogSeverity = Syslog.FATAL; 316 else 317 throw new SyslogInitException(MessageFormat.format( 318 Syslog.getResourceString(MessageConstants.UNIX_BAD_SYSLOG_SEVERITY), 319 new Object [] { syslog } )); 320 321 if ("DEBUG".equalsIgnoreCase(unix)) 322 unixSeverity = UNIXSyslogLog.UNIX_DEBUG; 323 else if ("INFO".equalsIgnoreCase(unix)) 324 unixSeverity = UNIXSyslogLog.UNIX_INFO; 325 else if ("NOTICE".equalsIgnoreCase(unix)) 326 unixSeverity = UNIXSyslogLog.UNIX_NOTICE; 327 else if ("WARNING".equalsIgnoreCase(unix)) 328 unixSeverity = UNIXSyslogLog.UNIX_WARNING; 329 else if ("ERROR".equalsIgnoreCase(unix)) 330 unixSeverity = UNIXSyslogLog.UNIX_ERROR; 331 else if ("CRITICAL".equalsIgnoreCase(unix)) 332 unixSeverity = UNIXSyslogLog.UNIX_CRITICAL; 333 else if ("ALERT".equalsIgnoreCase(unix)) 334 unixSeverity = UNIXSyslogLog.UNIX_ALERT; 335 else if ("EMERGENCY".equalsIgnoreCase(unix)) 336 unixSeverity = UNIXSyslogLog.UNIX_EMERGENCY; 337 else 338 throw new SyslogInitException(MessageFormat.format( 339 Syslog.getResourceString(MessageConstants.UNIX_BAD_UNIX_SEVERITY), 340 new Object [] { unix } )); 341 342 severityMap.put(new Integer (syslogSeverity), new Integer (unixSeverity)); 343 } 344 } 345 log.setSeverityMap(severityMap); 346 } 347 else 348 { 349 log.setSeverityMap(UNIXSyslogLog.DEFAULT_SEVERITY_MAP); 350 } 351 352 } 353 354 public Element getConfiguration(Object o, Element element) 355 { 356 Element e = super.getConfiguration(o, element, false, true); 357 358 UNIXSyslogLog log = (UNIXSyslogLog)o; 359 360 Element logServer = new Element("logServer"); 361 logServer.setText(log.getLogServer().getHostName()); 362 e.getChildren().add(logServer); 363 364 Element port = new Element("port"); 365 port.setText(String.valueOf(log.getPort())); 366 e.getChildren().add(port); 367 368 Element facility = new Element("facility"); 369 facility.setText(String.valueOf(log.getFacility())); 370 e.getChildren().add(facility); 371 372 Element tag = new Element("tag"); 373 tag.setText(log.getTag()); 374 e.getChildren().add(tag); 375 376 Element showHostname = new Element("showHostname"); 377 showHostname.setText(String.valueOf(log.getShowHostname())); 378 e.getChildren().add(showHostname); 379 380 Element messageTemplate = new Element("messageTemplate"); 381 messageTemplate.setText(log.getMessageTemplate()); 382 e.getChildren().add(messageTemplate); 383 384 Element param = new Element("SeverityMap"); 385 386 Map severityMap = log.getSeverityMap(); 387 388 Element mapEntry = new Element("MapEntry"); 389 mapEntry.getChildren().add(new Element("syslog").setText("DEBUG")); 390 mapEntry.getChildren().add(new Element("unix").setText(getUNIXSeverityName(severityMap, Syslog.DEBUG))); 391 param.getChildren().add(mapEntry); 392 393 mapEntry = new Element("MapEntry"); 394 mapEntry.getChildren().add(new Element("syslog").setText("INFO")); 395 mapEntry.getChildren().add(new Element("unix").setText(getUNIXSeverityName(severityMap, Syslog.INFO))); 396 param.getChildren().add(mapEntry); 397 398 mapEntry = new Element("MapEntry"); 399 mapEntry.getChildren().add(new Element("syslog").setText("WARNING")); 400 mapEntry.getChildren().add(new Element("unix").setText(getUNIXSeverityName(severityMap, Syslog.WARNING))); 401 param.getChildren().add(mapEntry); 402 403 mapEntry = new Element("MapEntry"); 404 mapEntry.getChildren().add(new Element("syslog").setText("ERROR")); 405 mapEntry.getChildren().add(new Element("unix").setText(getUNIXSeverityName(severityMap, Syslog.ERROR))); 406 param.getChildren().add(mapEntry); 407 408 mapEntry = new Element("MapEntry"); 409 mapEntry.getChildren().add(new Element("syslog").setText("FATAL")); 410 mapEntry.getChildren().add(new Element("unix").setText(getUNIXSeverityName(severityMap, Syslog.FATAL))); 411 param.getChildren().add(mapEntry); 412 413 414 e.getChildren().add(param); 415 416 return e; 417 } 418 419 private static String getUNIXSeverityName(Map severityMap, int syslogSeverity) 420 { 421 int severity = ((Integer )severityMap.get(new Integer (syslogSeverity))).intValue(); 422 switch (severity) 423 { 424 case UNIXSyslogLog.UNIX_DEBUG: 425 return "DEBUG"; 426 case UNIXSyslogLog.UNIX_INFO: 427 return "INFO"; 428 case UNIXSyslogLog.UNIX_NOTICE: 429 return "NOTICE"; 430 case UNIXSyslogLog.UNIX_WARNING: 431 return "WARNING"; 432 case UNIXSyslogLog.UNIX_ERROR: 433 return "ERROR"; 434 case UNIXSyslogLog.UNIX_CRITICAL: 435 return "CRITICAL"; 436 case UNIXSyslogLog.UNIX_ALERT: 437 return "ALERT"; 438 case UNIXSyslogLog.UNIX_EMERGENCY: 439 return "EMERGENCY"; 440 } 441 return "GARBAGE"; 442 } 443 } 444 | Popular Tags |