/*
* Created on Nov 22, 2003
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package com.idega.util.logging;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;
/**
* A class which has helper methods for the standard Java 1.4 logging API
* Copyright (c) 2003 idega software
* @author <a href="tryggvi@idega.is">Tryggvi Larusson</a>
*/
public class LoggingHelper {
private static String NEWLINE="\n";
private static String TAB="\t";
private static String COLON = ":";
private static String COLON_WITH_SPACE = " : ";
private static String DOT = ".";
/**
* Logs the exception to the anonymous logger with loglevel Warning:
* @param e the Exception to log
*/
public static void logException(Exception e){
Logger logger = Logger.getAnonymousLogger();
logException(e,null,logger,Level.WARNING);
}
/**
* Logs the exception to the default logger of Object catcher with loglevel Warning:
* @param e the Exception to log
*/
public static void logException(Exception e,Object catcher){
Logger logger = Logger.getLogger(catcher.getClass().getName());
logException(e,catcher,logger,Level.WARNING);
}
/**
* Logs the exception to the specified logger with loglevel Warning:
* @param e the Exception to log
*/
public static void logException(Exception e,Object catcher,Logger logger){
logException(e,catcher,logger,Level.WARNING);
}
public static void logException(Exception e,Object catcher,Logger logger,Level level){
//e.printStackTrace();
StackTraceElement[] ste = e.getStackTrace();
StringBuffer buf = new StringBuffer(e.getClass().getName());
buf.append(COLON_WITH_SPACE);
buf.append(e.getMessage());
buf.append(NEWLINE);
if(ste.length>0){
buf.append(TAB);
buf.append(ste[0].getClassName());
buf.append(DOT);
buf.append(ste[0].getMethodName());
buf.append(COLON);
buf.append(ste[0].getLineNumber());
buf.append(NEWLINE);
}
String str = buf.toString();
logger.log(level,str);
}
public static void getLoggerInfo() {
// Get the Log Manager
LogManager manager = LogManager.getLogManager();
// Get all defined loggers
java.util.Enumeration names = manager.getLoggerNames();
System.out.println("***Begin Logger Information");
// For each logger: show name, level, handlers etc.
while (names.hasMoreElements()) {
String loggername = (String)names.nextElement();
java.util.logging.Logger logger = manager.getLogger(loggername);
System.out.println("-----------------------");
System.out.println("Logger name: >" + logger.getName() + "<");
System.out.println("Logger level: " + logger.getLevel());
// See if a filter is defined
if (logger.getFilter() != null) {
System.out.println("Using a filter");
}
else {
System.out.println("No filter used");
}
// For each handler: show formatter, level, etc.
java.util.logging.Handler[] h = logger.getHandlers();
if (h.length == 0) {
System.out.println("No handlers defined");
}
for (int i = 0; i < h.length; i++) {
if (i == 0) {
System.out.println("Handlers:");
}
java.util.logging.Formatter f = h[i].getFormatter();
System.out.println(h[i].getClass().getName());
System.out.println(" using formatter: " + f.getClass().getName());
System.out.println(" using level: " + h[i].getLevel());
if (h[i].getFilter() != null) {
System.out.println(" using a filter");
}
else {
System.out.println(" no filter");
}
}
// See if a parent exists
java.util.logging.Logger parent = logger.getParent();
if (parent != null) {
System.out.println("Parent: >" + parent.getName() + "<");
}
else {
System.out.println("No parent");
}
}
System.out.println("*** End Logger Information");
}
}