/*
* Copyright 2008-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package es.alvsanand.webpage.common;
import java.util.logging.Level;
import javax.faces.context.FacesContext;
import es.alvsanand.webpage.model.User;
/**
*
*
* @author alvaro.santos
* @date 04/12/2009
*
*/
public class Logger{
private java.util.logging.Logger logger;
public Logger(Class<?> clazz){
logger = java.util.logging.Logger.getLogger(clazz.getName());
}
public void error(String message, java.lang.Throwable e){
StackTraceElement stackTraceElement = getLastStackTraceElement();
StringBuffer sb = new StringBuffer(getMessageLogHead() + message);
sb.append("\n");
sb.append("Caused by: ");
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
e.printStackTrace(new java.io.PrintStream(out));
sb.append(out);
logger.logp(Level.SEVERE, stackTraceElement.getClassName(), stackTraceElement.getMethodName(), sb.toString(), e);
}
public void error(String message){
StackTraceElement stackTraceElement = getLastStackTraceElement();
logger.logp(Level.SEVERE, stackTraceElement.getClassName(), stackTraceElement.getMethodName(), getMessageLogHead() + message);
}
public void warn(String message, java.lang.Throwable e){
StackTraceElement stackTraceElement = getLastStackTraceElement();
StringBuffer sb = new StringBuffer(getMessageLogHead() + message);
sb.append("\n");
sb.append("Caused by: ");
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
e.printStackTrace(new java.io.PrintStream(out));
sb.append(out);
logger.logp(Level.WARNING, stackTraceElement.getClassName(), stackTraceElement.getMethodName(), sb.toString(), e);
}
public void warn(String message){
StackTraceElement stackTraceElement = getLastStackTraceElement();
logger.logp(Level.WARNING, stackTraceElement.getClassName(), stackTraceElement.getMethodName(), getMessageLogHead() + message);
}
public void info(String message){
StackTraceElement stackTraceElement = getLastStackTraceElement();
logger.logp(Level.INFO, stackTraceElement.getClassName(), stackTraceElement.getMethodName(), getMessageLogHead() + message);
}
public void debug(String message){
StackTraceElement stackTraceElement = getLastStackTraceElement();
logger.logp(Level.FINE, stackTraceElement.getClassName(), stackTraceElement.getMethodName(), getMessageLogHead() + message);
}
private StackTraceElement getLastStackTraceElement(){
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
return stackTraceElements[3];
}
private User getUser(){
if(FacesContext.getCurrentInstance()!=null && FacesContext.getCurrentInstance().getExternalContext()!=null
&& FacesContext.getCurrentInstance().getExternalContext().getSessionMap()!=null){
return (User)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(Globals.SES_USER);
}
else{
return null;
}
}
private String getMessageLogHead(){
User user = getUser();
if(user!=null){
return "[" + user.getLoginName() + "] ";
}
else{
return "";
}
}
}