/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE file at the root of the source * tree and available online at * * https://github.com/keeps/roda */ package org.roda.wui.common.server; import org.apache.log4j.LogManager; import org.roda.wui.common.client.ClientLoggerService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.gwt.user.server.rpc.RemoteServiceServlet; /** * Client logging servlet implementation * * @author Luis Faria * */ public class ClientLoggerImpl extends RemoteServiceServlet implements ClientLoggerService { private static final long serialVersionUID = 3694771724613537482L; private String getUserInfo() { return "[" + this.getThreadLocalRequest().getRemoteAddr() + "] "; } @Override public void debug(String classname, String object) { Logger logger = LoggerFactory.getLogger(classname); logger.debug(String.format("%s%s", getUserInfo(), object)); } @Override public void debug(String classname, String object, Throwable error) { Logger logger = LoggerFactory.getLogger(classname); logger.debug(String.format("%s%s", getUserInfo(), object), error); } @Override public void error(String classname, String object) { Logger logger = LoggerFactory.getLogger(classname); logger.error(String.format("%s%s", getUserInfo(), object)); sendError(classname, object, null); } @Override public void error(String classname, String object, Throwable error) { Logger logger = LoggerFactory.getLogger(classname); logger.error(String.format("%s%s", getUserInfo(), object), error); sendError(classname, object, error); } @Override public void fatal(String classname, String object) { Logger logger = LoggerFactory.getLogger(classname); logger.error(String.format("%s%s", getUserInfo(), object)); sendError(classname, object, null); } @Override public void fatal(String classname, String object, Throwable error) { Logger logger = LoggerFactory.getLogger(classname); logger.error(String.format("%s%s", getUserInfo(), object), error); sendError(classname, object, error); } @Override public void info(String classname, String object) { Logger logger = LoggerFactory.getLogger(classname); logger.info(String.format("%s%s", getUserInfo(), object)); } @Override public void info(String classname, String object, Throwable error) { Logger logger = LoggerFactory.getLogger(classname); logger.info(String.format("%s%s", getUserInfo(), object), error); } @Override public void trace(String classname, String object) { Logger logger = LoggerFactory.getLogger(classname); logger.trace(String.format("%s%s", getUserInfo(), object)); } @Override public void trace(String classname, String object, Throwable error) { Logger logger = LoggerFactory.getLogger(classname); logger.trace(String.format("%s%s", getUserInfo(), object), error); } @Override public void warn(String classname, String object) { Logger logger = LoggerFactory.getLogger(classname); logger.warn(String.format("%s%s", getUserInfo(), object)); } @Override public void warn(String classname, String object, Throwable error) { Logger logger = LoggerFactory.getLogger(classname); logger.warn(String.format("%s%s", getUserInfo(), object), error); } @Override public void pagehit(String pagename) { // try { // RODAClient rodaClient = RodaClientFactory.getRodaWuiClient(); // String username = RodaClientFactory.getRodaClient( // this.getThreadLocalRequest().getSession()).getUsername(); // LogEntryParameter[] parameters = new LogEntryParameter[] { // new LogEntryParameter("hostname", getThreadLocalRequest() // .getRemoteHost()), // new LogEntryParameter("address", getThreadLocalRequest() // .getRemoteAddr()), // new LogEntryParameter("user", getThreadLocalRequest() // .getRemoteUser()), // new LogEntryParameter("pagename", pagename) }; // // LogEntry logEntry = new LogEntry(); // logEntry.setAction(LOG_ACTION_WUI_PAGEHIT); // logEntry.setParameters(parameters); // logEntry.setUsername(username); // // rodaClient.getLoggerService().addLogEntry(logEntry); // } catch (RemoteException e) { // logger.error("Error logging page hit", e); // } catch (RODAClientException e) { // logger.error("Error logging page hit", e); // } catch (LoginException e) { // logger.error("Error logging page hit", e); // } catch (LoggerException e) { // logger.error("Error logging page hit", e); // } } @Override public void destroy() { super.destroy(); LogManager.shutdown(); } /** * Send error to logging services * * @param classname * the name of the class that generated the error * @param message * the error message * @param error * the error throwable */ public void sendError(String classname, String message, Throwable error) { // try { // RODAClient rodaClient = RodaClientFactory.getRodaWuiClient(); // String username = RodaClientFactory.getRodaClient( // this.getThreadLocalRequest().getSession()).getUsername(); // List<LogEntryParameter> parameters = new Vector<LogEntryParameter>(); // parameters.add(new LogEntryParameter("hostname", // getThreadLocalRequest().getRemoteHost())); // parameters.add(new LogEntryParameter("address", // getThreadLocalRequest().getRemoteAddr())); // parameters.add(new LogEntryParameter("port", // getThreadLocalRequest().getRemotePort() + "")); // parameters.add(new LogEntryParameter("classname", classname)); // parameters.add(new LogEntryParameter("error", message)); // if (error != null) { // parameters.add(new LogEntryParameter("message", error // .getMessage())); // } // // LogEntry logEntry = new LogEntry(); // logEntry.setAction(LOG_ACTION_WUI_ERROR); // logEntry.setParameters(parameters // .toArray(new LogEntryParameter[parameters.size()])); // logEntry.setUsername(username); // // rodaClient.getLoggerService().addLogEntry(logEntry); // } catch (RemoteException e) { // logger.error("Error logging login", e); // } catch (LoginException e) { // logger.error("Error logging login", e); // } catch (LoggerException e) { // logger.error("Error logging login", e); // } catch (RODAClientException e) { // logger.error("Error logging login", e); // } } }