| /* |
| * ========================================================================= |
| * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved. |
| * This product is protected by U.S. and international copyright |
| * and intellectual property laws. Pivotal products are covered by |
| * more patents listed at http://www.pivotal.io/patents. |
| * ======================================================================== |
| */ |
| |
| package com.vmware.gemfire.tools.pulse.internal.log; |
| |
| import java.io.IOException; |
| import java.io.PrintWriter; |
| import java.io.StringWriter; |
| import java.util.logging.FileHandler; |
| import java.util.logging.Level; |
| import java.util.logging.Logger; |
| |
| import com.vmware.gemfire.tools.pulse.internal.data.PulseConfig; |
| import com.vmware.gemfire.tools.pulse.internal.data.Repository; |
| import com.vmware.gemfire.tools.pulse.internal.json.JSONException; |
| import com.vmware.gemfire.tools.pulse.internal.log.MessageFormatter; |
| |
| /** |
| * Class PulseLogWriter |
| * |
| * PulseLogWriter is the implementation of LogWriter. |
| * |
| * @author Sachin K |
| * @since 7.0.1 |
| * |
| */ |
| public class PulseLogWriter implements LogWriter { |
| |
| // Log File handle Object |
| private FileHandler fileHandler; |
| |
| // Message Formatter Object |
| private static MessageFormatter messageformatter; |
| |
| // pulse log writer |
| private static PulseLogWriter pulseLogger = null; |
| |
| // Logger Object |
| private Logger logger; |
| |
| private PulseLogWriter() { |
| PulseConfig pulseConfig = Repository.get().getPulseConfig(); |
| // Create Logger |
| logger = Logger.getLogger(this.getClass().getName()); |
| |
| // Set minimum log level to level passed |
| logger.setLevel(pulseConfig.getLogLevel()); |
| |
| try { |
| // Get file handler to log messages into log file. |
| if (fileHandler == null) { |
| fileHandler = new FileHandler( |
| pulseConfig.getLogFileFullName(), |
| pulseConfig.getLogFileSize(), |
| pulseConfig.getLogFileCount(), |
| pulseConfig.getLogAppend()); |
| |
| // Log Message Formatter |
| messageformatter = new MessageFormatter(); |
| fileHandler.setFormatter(messageformatter); |
| } |
| |
| // Remove any existing handlers |
| // e.g. consoleHandler |
| logger.setUseParentHandlers(false); |
| |
| // Add File Handler to logger object |
| logger.addHandler(fileHandler); |
| } catch (SecurityException e) { |
| logger.setUseParentHandlers(true); |
| e.printStackTrace(); |
| } catch (IOException e) { |
| logger.setUseParentHandlers(true); |
| e.printStackTrace(); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| |
| /** |
| * @param jsonErr |
| * @param errorData |
| */ |
| public void logJSONError(JSONException jsonErr, Object errorData) { |
| |
| // print details of thrown exception and data that couldn't be converted to |
| // json |
| if (this.fineEnabled()) { |
| |
| // write errors |
| StringWriter swBuffer = new StringWriter(); |
| PrintWriter prtWriter = new PrintWriter(swBuffer); |
| jsonErr.printStackTrace(prtWriter); |
| this.fine("JSON Error Details : " + swBuffer.toString() + "\n"); |
| |
| this.fine("Erroneous Data : " |
| + ((errorData != null) ? errorData.toString() |
| : "Not Available for output") + "\n"); |
| } |
| } |
| |
| public static synchronized PulseLogWriter getLogger() { |
| if (null == pulseLogger) { |
| pulseLogger = new PulseLogWriter(); |
| } |
| return pulseLogger; |
| } |
| |
| @Override |
| public boolean severeEnabled() { |
| return logger.isLoggable(Level.SEVERE); |
| } |
| |
| @Override |
| public void severe(String msg, Throwable ex) { |
| logger.logp(Level.SEVERE, "", "", msg, ex); |
| } |
| |
| @Override |
| public void severe(String msg) { |
| logger.severe(msg); |
| } |
| |
| @Override |
| public void severe(Throwable ex) { |
| logger.logp(Level.SEVERE, "", "", "", ex); |
| } |
| |
| /* |
| @Override |
| public boolean errorEnabled() { |
| // TODO Auto-generated method stub |
| return false; |
| } |
| |
| @Override |
| public void error(String msg, Throwable ex) { |
| // TODO Auto-generated method stub |
| |
| } |
| |
| @Override |
| public void error(String msg) { |
| // TODO Auto-generated method stub |
| |
| } |
| |
| @Override |
| public void error(Throwable ex) { |
| // TODO Auto-generated method stub |
| |
| } |
| */ |
| |
| @Override |
| public boolean warningEnabled() { |
| return logger.isLoggable(Level.WARNING); |
| } |
| |
| @Override |
| public void warning(String msg, Throwable ex) { |
| logger.logp(Level.WARNING, "", "", msg, ex); |
| } |
| |
| @Override |
| public void warning(String msg) { |
| logger.warning(msg); |
| } |
| |
| @Override |
| public void warning(Throwable ex) { |
| logger.logp(Level.WARNING, "", "", "", ex); |
| } |
| |
| @Override |
| public boolean infoEnabled() { |
| return logger.isLoggable(Level.INFO); |
| } |
| |
| @Override |
| public void info(String msg, Throwable ex) { |
| logger.logp(Level.INFO, "", "", msg, ex); |
| } |
| |
| @Override |
| public void info(String msg) { |
| logger.info(msg); |
| } |
| |
| @Override |
| public void info(Throwable ex) { |
| logger.logp(Level.WARNING, "", "", "", ex); |
| } |
| |
| @Override |
| public boolean configEnabled() { |
| return logger.isLoggable(Level.CONFIG); |
| } |
| |
| @Override |
| public void config(String msg, Throwable ex) { |
| logger.logp(Level.CONFIG, "", "", msg, ex); |
| } |
| |
| @Override |
| public void config(String msg) { |
| logger.config(msg); |
| } |
| |
| @Override |
| public void config(Throwable ex) { |
| logger.logp(Level.CONFIG, "", "", "", ex); |
| } |
| |
| @Override |
| public boolean fineEnabled() { |
| return logger.isLoggable(Level.FINE); |
| } |
| |
| @Override |
| public void fine(String msg, Throwable ex) { |
| logger.logp(Level.FINE, "", "", msg, ex); |
| } |
| |
| @Override |
| public void fine(String msg) { |
| logger.fine(msg); |
| } |
| |
| @Override |
| public void fine(Throwable ex) { |
| logger.logp(Level.FINE, "", "", "", ex); |
| } |
| |
| @Override |
| public boolean finerEnabled() { |
| return logger.isLoggable(Level.FINER); |
| } |
| |
| @Override |
| public void finer(String msg, Throwable ex) { |
| logger.logp(Level.FINER, "", "", msg, ex); |
| } |
| |
| @Override |
| public void finer(String msg) { |
| logger.finer(msg); |
| } |
| |
| @Override |
| public void finer(Throwable ex) { |
| logger.logp(Level.FINER, "", "", "", ex); |
| } |
| |
| @Override |
| public void entering(String sourceClass, String sourceMethod) { |
| logger.entering(sourceClass, sourceMethod); |
| } |
| |
| @Override |
| public void exiting(String sourceClass, String sourceMethod) { |
| logger.exiting(sourceClass, sourceMethod); |
| } |
| |
| @Override |
| public void throwing(String sourceClass, String sourceMethod, Throwable thrown) { |
| logger.throwing(sourceClass, sourceMethod, thrown); |
| } |
| |
| @Override |
| public boolean finestEnabled() { |
| return logger.isLoggable(Level.FINEST); |
| } |
| |
| @Override |
| public void finest(String msg, Throwable ex) { |
| logger.logp(Level.FINEST, "", "", msg, ex); |
| } |
| |
| @Override |
| public void finest(String msg) { |
| logger.finest(msg); |
| } |
| |
| @Override |
| public void finest(Throwable ex) { |
| logger.logp(Level.FINEST, "", "", "", ex); |
| } |
| |
| } |