gt: 		error(message, componentName, null, null);
context: /*******************************************************************************
   * ===========================================================
   * Ankush : Big Data Cluster Management Solution
   * ===========================================================
   * 
   * (C) Copyright 2014, by Impetus Technologies
   * 
   * This is free software; you can redistribute it and/or modify it under
   * the terms of the GNU Lesser General Public License (LGPL v3) as
   * published by the Free Software Foundation;
   * 
   * This software is distributed in the hope that it will be useful, but
   * WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   * See the GNU Lesser General Public License for more details.
   * 
   * You should have received a copy of the GNU Lesser General Public License 
   * along with this software; if not, write to the Free Software Foundation, 
   * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
   ******************************************************************************/
  package com.impetus.ankush2.logger;
  
  import java.util.Date;
  
  import org.apache.log4j.Logger;
  
  import com.impetus.ankush.AppStoreWrapper;
  import com.impetus.ankush.common.domain.Log;
  import com.impetus.ankush2.constant.Constant;
  import com.impetus.ankush2.framework.config.ClusterConfig;
  
  // TODO: Auto-generated Javadoc
  /**
   * The Class AnkushLogger.
   */
  public class AnkushLogger {
  
  	/**
  	 * The Enum LogLevel.
  	 */
  	public enum LogLevel {
  
  		/** The debug. */
  		DEBUG,
  		/** The info. */
  		INFO,
  		/** The error. */
  		ERROR,
  		/** The warn. */
  		WARN
  	}
  
  	/** The logger. */
  	private org.apache.log4j.Logger logger;
  
  	/** The cluster id. */
  	private Long clusterId;
  
  	/** The operation id. */
  	private Long operationId;
  
  	/** The cluster name. */
  	private String clusterName;
  
  	/** The record log. */
  	private boolean recordLog = false;
  
  	/**
  	 * Instantiates a new ankush logger.
  	 */
  	public AnkushLogger() {
  	}
  
  	/**
  	 * Instantiates a new ankush logger.
  	 * 
  	 * @param classObj
  	 *            the class obj
  	 */
  	public AnkushLogger(Class classObj) {
  		this.logger = Logger.getLogger(classObj);
  	}
  
  	// Call only if save logs into database
  	/**
  	 * Instantiates a new ankush logger.
  	 * 
  	 * @param classObj
  	 *            the class obj
  	 * @param clusterConf
  	 *            the cluster conf
  	 */
  	public AnkushLogger(Class classObj, ClusterConfig clusterConf) {
  		this(classObj);
  		setCluster(clusterConf);
  	}
  
  	// Add cluster name with logs
  	/**
  	 * Sets the cluster name.
  	 * 
  	 * @param clusterName
  	 *            the new cluster name
  	 */
  	public void setClusterName(String clusterName) {
  		this.clusterName = clusterName;
  	}
  
  	// Call only if save logs into database
  	/**
  	 * Sets the cluster.
  	 * 
  	 * @param clusterConf
  	 *            the new cluster
  	 */
  	public void setCluster(ClusterConfig clusterConf) {
  		setClusterName(clusterConf.getName());
  		this.clusterId = clusterConf.getClusterId();
  		this.operationId = clusterConf.getOperationId();
  
  		// Disable database logs if ids are missing.
  		if (operationId == null || clusterId == null || operationId == 0
  				|| clusterId == 0) {
  			recordLog = false;
  		} else {
  			recordLog = true;
  		}
  	}
  
  	/**
  	 * Db message.
  	 * 
  	 * @param message
  	 *            the message
  	 * @param componentName
  	 *            the component name
  	 * @param host
  	 *            the host
  	 * @param level
  	 *            the level
  	 */
  	private void dbMessage(String message, String componentName, String host,
  			LogLevel level) {
  		// save message into database.
  		if (recordLog) {
  			if (message == null) {
  				message = Constant.Strings.ExceptionsMessage.GENERIC_EXCEPTION_MSG;
  			}
  			Log log = new Log();
  			log.setClusterId(clusterId);
  			log.setOperationId(operationId);
  			log.setMessage(message);
  			log.setType(level.toString());
  			log.setComponentName(componentName);
  			log.setHost(host);
  
  			log.setCreatedAt(new Date());
  			try {
  				AppStoreWrapper.getLogManager().save(log);
  			} catch (Exception e) {
  				this.logger.error(e.getMessage(), e);
  			}
  
  		}
  	}
  
  	/**
  	 * Process message.
  	 * 
  	 * @param message
  	 *            the message
  	 * @param host
  	 *            the host
  	 * @return the string
  	 */
  	private String processMessage(String message, String host) {
  		if (message == null) {
  			message = Constant.Strings.ExceptionsMessage.GENERIC_EXCEPTION_MSG;
  		}
  		if (host != null) {
  			message = host + " : " + message;
  		}
  
  		if (clusterName != null) {
  			return "[" + clusterName + "] " + message;
  		}
  		return message;
  	}
  
  	/**
  	 * Error.
  	 * 
  	 * @param message
  	 *            the message
  	 */
  	public void error(String message) {
  		error(message, null, null, null);
  	}
  
  	/**
  	 * Error.
  	 * 
  	 * @param message
  	 *            the message
  	 * @param t
  	 *            the Exception object
  	 */
  	public void error(String message, Throwable t) {
  		error(message, null, null, t);
  	}
  
  	/**
  	 * Error.
  	 * 
  	 * @param message
  	 *            the message
  	 * @param componentName
  	 *            the component name
  	 */
  	public void error(String message, String componentName) {
  