Added airavata logger implementation and Fixed AIRAVATA-1462

Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/595be55f
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/595be55f
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/595be55f

Branch: refs/heads/master
Commit: 595be55fd0dfe89fd045e0c2eacc5ab234f69731
Parents: 2bbeb7a
Author: shamrath <shameerai...@gmail.com>
Authored: Thu Oct 2 20:57:14 2014 -0400
Committer: shamrath <shameerai...@gmail.com>
Committed: Thu Oct 2 20:57:14 2014 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   | 272 ++++----
 .../airavata/common/logger/AiravataLogger.java  | 677 +++++++++++++++++++
 .../common/logger/AiravataLoggerFactory.java    |  34 +
 .../common/logger/AiravataLoggerImpl.java       | 323 +++++++++
 .../airavata/gfac/server/GfacServerHandler.java |  24 +-
 .../airavata/gfac/core/monitor/MonitorID.java   |  17 +-
 .../handlers/GridPullMonitorHandler.java        |   9 +-
 .../monitor/impl/pull/qstat/HPCPullMonitor.java |  36 +-
 .../airavata/gfac/monitor/util/CommonUtils.java |  18 +-
 .../server/OrchestratorServerHandler.java       |  47 +-
 .../registry/jpa/impl/ExperimentRegistry.java   |  19 +-
 .../registry/cpi/CompositeIdentifier.java       |  12 +
 12 files changed, 1274 insertions(+), 214 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/595be55f/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
 
b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 1051654..e75f099 100644
--- 
a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ 
b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -42,6 +42,8 @@ import org.apache.airavata.api.Airavata;
 import org.apache.airavata.api.airavataAPIConstants;
 import org.apache.airavata.api.server.util.DataModelUtils;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.logger.AiravataLogger;
+import org.apache.airavata.common.logger.AiravataLoggerFactory;
 import org.apache.airavata.common.utils.AiravataUtils;
 import org.apache.airavata.common.utils.AiravataZKUtils;
 import org.apache.airavata.common.utils.ServerSettings;
@@ -58,7 +60,6 @@ import org.apache.airavata.model.error.AiravataErrorType;
 import org.apache.airavata.model.error.AiravataSystemException;
 import org.apache.airavata.model.error.ExperimentNotFoundException;
 import org.apache.airavata.model.error.InvalidRequestException;
-import org.apache.airavata.model.error.LaunchValidationException;
 import org.apache.airavata.model.error.ProjectNotFoundException;
 import org.apache.airavata.model.util.ExecutionType;
 import org.apache.airavata.model.workspace.Project;
@@ -68,7 +69,6 @@ import 
org.apache.airavata.orchestrator.cpi.OrchestratorService;
 import org.apache.airavata.orchestrator.cpi.OrchestratorService.Client;
 import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
 import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory;
-import org.apache.airavata.persistance.registry.jpa.model.JobDetail;
 import org.apache.airavata.registry.cpi.ChildDataType;
 import org.apache.airavata.registry.cpi.ParentDataType;
 import org.apache.airavata.registry.cpi.Registry;
@@ -88,11 +88,9 @@ import org.apache.zookeeper.Watcher;
 import org.apache.zookeeper.ZooDefs;
 import org.apache.zookeeper.ZooKeeper;
 import org.apache.zookeeper.data.Stat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class AiravataServerHandler implements Airavata.Iface, Watcher {
-    private static final Logger logger = 
LoggerFactory.getLogger(AiravataServerHandler.class);
+    private static final AiravataLogger logger = 
AiravataLoggerFactory.getLogger(AiravataServerHandler.class);
     private Registry registry;
     private AppCatalog appCatalog;
 
@@ -682,9 +680,11 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                 exception.setMessage("Cannot create experiments with empty 
experiment name");
                 throw exception;
             }
-            return (String)registry.add(ParentDataType.EXPERIMENT, experiment);
+            String experimentId = 
(String)registry.add(ParentDataType.EXPERIMENT, experiment);
+            logger.infoId(experimentId, "Created new experiment with 
experiment name {}", experiment.getName());
+            return experimentId;
         } catch (Exception e) {
-            logger.error("Error while creating the experiment", e);
+            logger.error("Error while creating the experiment with experiment 
name {}", experiment.getName());
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while creating the experiment. More 
info : " + e.getMessage());
@@ -760,30 +760,20 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
     public void updateExperiment(String airavataExperimentId, Experiment 
experiment) throws InvalidRequestException, ExperimentNotFoundException, 
AiravataClientException, AiravataSystemException, TException {
         try {
             registry = RegistryFactory.getDefaultRegistry();
-            if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)){
+            if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)) {
+                logger.errorId(airavataExperimentId, "Update request failed, 
Experiment {} doesn't exist.", airavataExperimentId);
                 throw new ExperimentNotFoundException("Requested experiment id 
" + airavataExperimentId + " does not exist in the system..");
             }
             ExperimentStatus experimentStatus = 
getExperimentStatus(airavataExperimentId);
             if (experimentStatus != null){
                 ExperimentState experimentState = 
experimentStatus.getExperimentState();
                 switch (experimentState){
-                    case CREATED:
-                        registry.update(RegistryModelType.EXPERIMENT, 
experiment, airavataExperimentId);
-                        break;
-                    case VALIDATED:
-                        registry.update(RegistryModelType.EXPERIMENT, 
experiment, airavataExperimentId);
-                        break;
-                    case CANCELED:
-                        registry.update(RegistryModelType.EXPERIMENT, 
experiment, airavataExperimentId);
-                        break;
-                    case FAILED:
-                        registry.update(RegistryModelType.EXPERIMENT, 
experiment, airavataExperimentId);
-                        break;
-                    case UNKNOWN:
+                    case CREATED: case VALIDATED: case CANCELED: case FAILED: 
case UNKNOWN:
                         registry.update(RegistryModelType.EXPERIMENT, 
experiment, airavataExperimentId);
+                        logger.infoId(airavataExperimentId, "Successfully 
updated experiment {} ", experiment.getName());
                         break;
                     default:
-                        logger.error("Error while updating experiment. Update 
experiment is only valid for experiments " +
+                        logger.errorId(airavataExperimentId, "Error while 
updating experiment. Update experiment is only valid for experiments " +
                                 "with status CREATED, VALIDATED, CANCELLED, 
FAILED and UNKNOWN. Make sure the given " +
                                 "experiment is in one of above statuses... ");
                         AiravataSystemException exception = new 
AiravataSystemException();
@@ -795,7 +785,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                 }
             }
         } catch (Exception e) {
-            logger.error("Error while updating experiment", e);
+            logger.errorId(airavataExperimentId, "Error while updating 
experiment", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while updating experiment. More info : 
" + e.getMessage());
@@ -808,31 +798,21 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
         try {
             registry = RegistryFactory.getDefaultRegistry();
             if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)){
+                logger.errorId(airavataExperimentId, "Update experiment 
configuration failed, experiment {} doesn't exist.", airavataExperimentId);
                 throw new ExperimentNotFoundException("Requested experiment id 
" + airavataExperimentId + " does not exist in the system..");
             }
             ExperimentStatus experimentStatus = 
getExperimentStatus(airavataExperimentId);
             if (experimentStatus != null){
                 ExperimentState experimentState = 
experimentStatus.getExperimentState();
                 switch (experimentState){
-                    case CREATED:
-                        
registry.add(ChildDataType.EXPERIMENT_CONFIGURATION_DATA, userConfiguration, 
airavataExperimentId);
-                        break;
-                    case VALIDATED:
-                        
registry.add(ChildDataType.EXPERIMENT_CONFIGURATION_DATA, userConfiguration, 
airavataExperimentId);
-                        break;
-                    case CANCELED:
-                        
registry.add(ChildDataType.EXPERIMENT_CONFIGURATION_DATA, userConfiguration, 
airavataExperimentId);
-                        break;
-                    case FAILED:
-                        
registry.add(ChildDataType.EXPERIMENT_CONFIGURATION_DATA, userConfiguration, 
airavataExperimentId);
-                        break;
-                    case UNKNOWN:
+                    case CREATED: case VALIDATED: case CANCELED: case FAILED: 
case UNKNOWN:
                         
registry.add(ChildDataType.EXPERIMENT_CONFIGURATION_DATA, userConfiguration, 
airavataExperimentId);
+                        logger.infoId(airavataExperimentId, "Successfully 
updated experiment configuration for experiment {}.", airavataExperimentId);
                         break;
                     default:
-                        logger.error("Error while updating experiment. Update 
experiment is only valid for experiments " +
+                        logger.errorId(airavataExperimentId, "Error while 
updating experiment {}. Update experiment is only valid for experiments " +
                                 "with status CREATED, VALIDATED, CANCELLED, 
FAILED and UNKNOWN. Make sure the given " +
-                                "experiment is in one of above statuses... ");
+                                "experiment is in one of above statuses... ", 
airavataExperimentId);
                         AiravataSystemException exception = new 
AiravataSystemException();
                         
exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
                         exception.setMessage("Error while updating experiment. 
Update experiment is only valid for experiments " +
@@ -842,7 +822,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                 }
             }
         } catch (Exception e) {
-            logger.error("Error while updating user configuration", e);
+            logger.errorId(airavataExperimentId, "Error while updating user 
configuration", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while updating user configuration. " +
@@ -858,29 +838,19 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
         try {
             registry = RegistryFactory.getDefaultRegistry();
             if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)){
+                logger.infoId(airavataExperimentId, "Update resource 
scheduling failed, experiment {} doesn't exist.", airavataExperimentId);
                 throw new ExperimentNotFoundException("Requested experiment id 
" + airavataExperimentId + " does not exist in the system..");
             }
             ExperimentStatus experimentStatus = 
getExperimentStatus(airavataExperimentId);
             if (experimentStatus != null){
                 ExperimentState experimentState = 
experimentStatus.getExperimentState();
                 switch (experimentState){
-                    case CREATED:
-                        
registry.add(ChildDataType.COMPUTATIONAL_RESOURCE_SCHEDULING, 
resourceScheduling, airavataExperimentId);
-                        break;
-                    case VALIDATED:
-                        
registry.add(ChildDataType.COMPUTATIONAL_RESOURCE_SCHEDULING, 
resourceScheduling, airavataExperimentId);
-                        break;
-                    case CANCELED:
-                        
registry.add(ChildDataType.COMPUTATIONAL_RESOURCE_SCHEDULING, 
resourceScheduling, airavataExperimentId);
-                        break;
-                    case FAILED:
-                        
registry.add(ChildDataType.COMPUTATIONAL_RESOURCE_SCHEDULING, 
resourceScheduling, airavataExperimentId);
-                        break;
-                    case UNKNOWN:
+                    case CREATED: case VALIDATED: case CANCELED: case FAILED: 
case UNKNOWN:
                         
registry.add(ChildDataType.COMPUTATIONAL_RESOURCE_SCHEDULING, 
resourceScheduling, airavataExperimentId);
+                        logger.infoId(airavataExperimentId, "Successfully 
updated resource scheduling for the experiment {}.", airavataExperimentId);
                         break;
                     default:
-                        logger.error("Error while updating scheduling info. 
Update experiment is only valid for experiments " +
+                        logger.errorId(airavataExperimentId, "Error while 
updating scheduling info. Update experiment is only valid for experiments " +
                                 "with status CREATED, VALIDATED, CANCELLED, 
FAILED and UNKNOWN. Make sure the given " +
                                 "experiment is in one of above statuses... ");
                         AiravataSystemException exception = new 
AiravataSystemException();
@@ -892,7 +862,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                 }
             }
         } catch (Exception e) {
-            logger.error("Error while updating scheduling info", e);
+            logger.errorId(airavataExperimentId, "Error while updating 
scheduling info", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while updating scheduling info. " +
@@ -918,11 +888,12 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
     public boolean validateExperiment(String airavataExperimentId) throws 
InvalidRequestException, ExperimentNotFoundException, AiravataClientException, 
AiravataSystemException, TException {
        try {
             registry = RegistryFactory.getDefaultRegistry();
-                       if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)){
-                           throw new ExperimentNotFoundException("Requested 
experiment id " + airavataExperimentId + " does not exist in the system..");
-                       }
-               } catch (RegistryException e1) {
-                         logger.error("Error while retrieving projects", e1);
+                       if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)) {
+                logger.errorId(airavataExperimentId, "Experiment validation 
failed , experiment {} doesn't exist.", airavataExperimentId);
+                throw new ExperimentNotFoundException("Requested experiment id 
" + airavataExperimentId + " does not exist in the system..");
+            }
+        } catch (RegistryException e1) {
+                         logger.errorId(airavataExperimentId, "Error while 
retrieving projects", e1);
                    AiravataSystemException exception = new 
AiravataSystemException();
                    
exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
                    exception.setMessage("Error while retrieving projects. More 
info : " + e1.getMessage());
@@ -930,8 +901,10 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                }
 
         if (getOrchestratorClient().validateExperiment(airavataExperimentId)) {
+            logger.infoId(airavataExperimentId, "Experiment validation 
succeed.");
             return true;
         } else {
+            logger.infoId(airavataExperimentId, "Experiment validation 
failed.");
             return false;
         }
     }
@@ -967,12 +940,13 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
         try {
             registry = RegistryFactory.getDefaultRegistry();
             if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)){
+                logger.errorId(airavataExperimentId, "Error while retrieving 
experiment status, experiment {} doesn't exist.", airavataExperimentId);
                 throw new ExperimentNotFoundException("Requested experiment id 
" + airavataExperimentId +
                                                       " does not exist in the 
system..");
             }
             return 
(ExperimentStatus)registry.get(RegistryModelType.EXPERIMENT_STATUS, 
airavataExperimentId);
         } catch (Exception e) {
-            logger.error("Error while retrieving the experiment status", e);
+            logger.errorId(airavataExperimentId, "Error while retrieving the 
experiment status", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while retrieving the experiment 
status. More info : " + e.getMessage());
@@ -985,11 +959,12 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
         try {
             registry = RegistryFactory.getDefaultRegistry();
             if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)){
+                logger.errorId(airavataExperimentId, "Get experiment outputs 
failed, experiment {} doesn't exit.", airavataExperimentId);
                 throw new ExperimentNotFoundException("Requested experiment id 
" + airavataExperimentId + " does not exist in the system..");
             }
             return 
(List<DataObjectType>)registry.get(RegistryModelType.EXPERIMENT_OUTPUT, 
airavataExperimentId);
         } catch (Exception e) {
-            logger.error("Error while retrieving the experiment outputs", e);
+            logger.errorId(airavataExperimentId, "Error while retrieving the 
experiment outputs", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while retrieving the experiment 
outputs. More info : " + e.getMessage());
@@ -1002,6 +977,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
         try {
             registry = RegistryFactory.getDefaultRegistry();
             if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)){
+                logger.errorId(airavataExperimentId, "Error while retrieving 
job status, the experiment {} doesn't exist.", airavataExperimentId);
                 throw new ExperimentNotFoundException("Requested experiment id 
" + airavataExperimentId + " does not exist in the system..");
             }
             List<Object> workflowNodes = 
registry.get(RegistryModelType.WORKFLOW_NODE_DETAIL, 
Constants.FieldConstants.WorkflowNodeConstants.EXPERIMENT_ID, 
airavataExperimentId);
@@ -1024,7 +1000,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                 }
             }
         } catch (Exception e) {
-            logger.error("Error while retrieving the job statuses", e);
+            logger.errorId(airavataExperimentId, "Error while retrieving the 
job statuses", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while retrieving the job statuses. 
More info : " + e.getMessage());
@@ -1039,6 +1015,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
         try {
             registry = RegistryFactory.getDefaultRegistry();
             if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)){
+                logger.errorId(airavataExperimentId, "Error while retrieving 
job details, experiment {} doesn't exist.", airavataExperimentId);
                 throw new ExperimentNotFoundException("Requested experiment id 
" + airavataExperimentId + " does not exist in the system..");
             }
             List<Object> workflowNodes = 
registry.get(RegistryModelType.WORKFLOW_NODE_DETAIL, 
Constants.FieldConstants.WorkflowNodeConstants.EXPERIMENT_ID, 
airavataExperimentId);
@@ -1060,7 +1037,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                 }
             }
         } catch (Exception e) {
-            logger.error("Error while retrieving the job details", e);
+            logger.errorId(airavataExperimentId, "Error while retrieving the 
job details", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while retrieving the job details. More 
info : " + e.getMessage());
@@ -1074,7 +1051,8 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
         List<DataTransferDetails> dataTransferDetailList = new 
ArrayList<DataTransferDetails>();
         try {
             registry = RegistryFactory.getDefaultRegistry();
-            if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)){
+            if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)) {
+                logger.errorId(airavataExperimentId, "Error while retrieving 
data transfer details, experiment {} doesn't exit.", airavataExperimentId);
                 throw new ExperimentNotFoundException("Requested experiment id 
" + airavataExperimentId + " does not exist in the system..");
             }
             List<Object> workflowNodes = 
registry.get(RegistryModelType.WORKFLOW_NODE_DETAIL, 
Constants.FieldConstants.WorkflowNodeConstants.EXPERIMENT_ID, 
airavataExperimentId);
@@ -1096,7 +1074,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                 }
             }
         } catch (Exception e) {
-            logger.error("Error while retrieving the data transfer details", 
e);
+            logger.errorId(airavataExperimentId, "Error while retrieving the 
data transfer details", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while retrieving the data transfer 
details. More info : " + e.getMessage());
@@ -1141,19 +1119,20 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
      *          rather an Airavata Administrator will be notified to take 
corrective action.
      */
     @Override
-    public void launchExperiment(String airavataExperimentId, String 
airavataCredStoreToken) throws InvalidRequestException, 
ExperimentNotFoundException, AiravataClientException, AiravataSystemException, 
LaunchValidationException, TException {
+    public void launchExperiment(final String airavataExperimentId, String 
airavataCredStoreToken) throws TException {
        try {
             registry = RegistryFactory.getDefaultRegistry();
-                       if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)){
-                           throw new ExperimentNotFoundException("Requested 
experiment id " + airavataExperimentId + " does not exist in the system..");
-                       }
-               } catch (RegistryException e1) {
-                         logger.error("Error while retrieving projects", e1);
-                   AiravataSystemException exception = new 
AiravataSystemException();
-                   
exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
-                   exception.setMessage("Error while retrieving projects. More 
info : " + e1.getMessage());
-                   throw exception;
-               }
+                       if (!registry.isExist(RegistryModelType.EXPERIMENT, 
airavataExperimentId)) {
+                logger.errorId(airavataExperimentId, "Error while launching 
experiment, experiment {} doesn't exist.", airavataExperimentId);
+                throw new ExperimentNotFoundException("Requested experiment id 
" + airavataExperimentId + " does not exist in the system..");
+            }
+        } catch (RegistryException e1) {
+            logger.errorId(airavataExperimentId, "Error while retrieving 
projects", e1);
+            AiravataSystemException exception = new AiravataSystemException();
+            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+            exception.setMessage("Error while retrieving projects. More info : 
" + e1.getMessage());
+            throw exception;
+        }
 
         final String expID = airavataExperimentId;
         final String token = airavataCredStoreToken;
@@ -1161,38 +1140,43 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                Experiment experiment = getExperiment(expID);
                        ExecutionType executionType = 
DataModelUtils.getExecutionType(experiment);
                        Thread thread = null;
-                       if (executionType==ExecutionType.SINGLE_APP){
-                               //its an single application execution experiment
-                       final OrchestratorService.Client orchestratorClient = 
getOrchestratorClient();
-                               if 
(orchestratorClient.validateExperiment(expID)) {
-                                       thread = new Thread() {
-                           public void run() {
-                               try {
-                                       launchSingleAppExperiment(expID, token, 
orchestratorClient);
-                               } catch (TException e) {
-                                   e.printStackTrace();  
-                                                       }
-                           }
-                       };      
-                   } else {
-                       throw new InvalidRequestException("Experiment 
Validation Failed, please check the configuration");
-                   }
-                
-                       } else if (executionType == ExecutionType.WORKFLOW){
+                       if (executionType==ExecutionType.SINGLE_APP) {
+                //its an single application execution experiment
+                logger.debugId(airavataExperimentId, "Launching single 
application experiment {}.", airavataExperimentId);
+                final OrchestratorService.Client orchestratorClient = 
getOrchestratorClient();
+                if (orchestratorClient.validateExperiment(expID)) {
+                    thread = new Thread() {
+                        public void run() {
+                            try {
+                                launchSingleAppExperiment(expID, token, 
orchestratorClient);
+                            } catch (TException e) {
+                                // throwing exception from here useless, just 
print the error log
+                                logger.errorId(airavataExperimentId, "Error 
while launching single application experiment.", e);
+                            }
+                        }
+                    };
+                } else {
+                    logger.errorId(airavataExperimentId, "Experiment 
validation failed. Please check the configurations.");
+                    throw new InvalidRequestException("Experiment Validation 
Failed, please check the configuration");
+                }
+
+            } else if (executionType == ExecutionType.WORKFLOW){
                                        //its a workflow execution experiment
+                logger.debugId(airavataExperimentId, "Launching workflow 
experiment {}.", airavataExperimentId);
                                        thread = new Thread() {
                            public void run() {
                                try {
                                        launchWorkflowExperiment(expID, token);
                                } catch (TException e) {
-                                   e.printStackTrace();  //To change body of 
catch statement use File | Settings | File Templates.
+                                e.printStackTrace();  //To change body of 
catch statement use File | Settings | File Templates.
                                                        }
                            }
                        };
                        } else {
-                               throw new InvalidRequestException("Experiment 
'"+expID+"' launch failed. Unable to figureout execution type for application 
"+experiment.getApplicationId());
-                       }
-                       thread.start();
+                logger.errorId(airavataExperimentId, "Couldn't identify 
experiment type, experiment {} is neither single application nor workflow.", 
airavataExperimentId);
+                throw new InvalidRequestException("Experiment '" + expID + "' 
launch failed. Unable to figureout execution type for application " + 
experiment.getApplicationId());
+            }
+            thread.start();
         }
     }
 
@@ -1201,8 +1185,8 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                        WorkflowEngine workflowEngine = 
WorkflowEngineFactory.getWorkflowEngine();
                        workflowEngine.launchExperiment(experimentId, 
airavataCredStoreToken);
                } catch (WorkflowEngineException e) {
-                       e.printStackTrace();
-               }
+            logger.errorId(experimentId, "Error while launching experiment.", 
e);
+        }
     }
     
     private boolean launchSingleAppExperiment(String experimentId, String 
airavataCredStoreToken, OrchestratorService.Client orchestratorClient) throws 
TException {
@@ -1217,7 +1201,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                     //iterate through all the generated tasks and performs the 
job submisssion+monitoring
                     experiment = (Experiment) 
registry.get(RegistryModelType.EXPERIMENT, experimentId);
                     if (experiment == null) {
-                        logger.error("Error retrieving the Experiment by the 
given experimentID: " + experimentId);
+                        logger.errorId(experimentId, "Error retrieving the 
Experiment by the given experimentID: {}", experimentId);
                         return false;
                     }
                     ExperimentStatus status = new ExperimentStatus();
@@ -1243,9 +1227,10 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             try {
                 registry.update(RegistryModelType.EXPERIMENT_STATUS, status, 
experimentId);
             } catch (RegistryException e1) {
+                logger.errorId(experimentId, "Error while updating experiment 
status to " + status.toString(), e);
                 throw new TException(e);
             }
-
+            logger.errorId(experimentId, "Error while updating task status, 
hence updated experiment status to " + status.toString(), e);
             throw new TException(e);
         }
         return true;
@@ -1303,6 +1288,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
         try {
             registry = RegistryFactory.getDefaultRegistry();
             if (!registry.isExist(RegistryModelType.EXPERIMENT, 
existingExperimentID)){
+                logger.errorId(existingExperimentID, "Error while cloning 
experiment {}, experiment doesn't exist.", existingExperimentID);
                 throw new ExperimentNotFoundException("Requested experiment id 
" + existingExperimentID + " does not exist in the system..");
             }
             Experiment existingExperiment = 
(Experiment)registry.get(RegistryModelType.EXPERIMENT, existingExperimentID);
@@ -1318,7 +1304,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             }
             return (String)registry.add(ParentDataType.EXPERIMENT, 
existingExperiment);
         } catch (Exception e) {
-            logger.error("Error while cloning the experiment with existing 
configuration...", e);
+            logger.errorId(existingExperimentID, "Error while cloning the 
experiment with existing configuration...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while cloning the experiment with 
existing configuration. More info : " + e.getMessage());
@@ -1387,7 +1373,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             appCatalog = AppCatalogFactory.getAppCatalog();
             return 
appCatalog.getApplicationInterface().getApplicationModule(appModuleId);
         } catch (AppCatalogException e) {
-            logger.error("Error while retrieving application module...", e);
+            logger.errorId(appModuleId, "Error while retrieving application 
module...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while retrieving the adding 
application module. More info : " + e.getMessage());
@@ -1410,7 +1396,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             
appCatalog.getApplicationInterface().updateApplicationModule(appModuleId, 
applicationModule);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while updating application module...", e);
+            logger.errorId(appModuleId, "Error while updating application 
module...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while updating application module. 
More info : " + e.getMessage());
@@ -1431,7 +1417,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             appCatalog = AppCatalogFactory.getAppCatalog();
             return 
appCatalog.getApplicationInterface().removeApplicationModule(appModuleId);
         } catch (AppCatalogException e) {
-            logger.error("Error while deleting application module...", e);
+            logger.errorId(appModuleId, "Error while deleting application 
module...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while deleting the application module. 
More info : " + e.getMessage());
@@ -1472,7 +1458,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             appCatalog = AppCatalogFactory.getAppCatalog();
             return 
appCatalog.getApplicationDeployment().getApplicationDeployement(appDeploymentId);
         } catch (AppCatalogException e) {
-            logger.error("Error while retrieving application deployment...", 
e);
+            logger.errorId(appDeploymentId, "Error while retrieving 
application deployment...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while retrieving application 
deployment. More info : " + e.getMessage());
@@ -1495,7 +1481,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             
appCatalog.getApplicationDeployment().updateApplicationDeployment(appDeploymentId,
 applicationDeployment);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while updating application deployment...", e);
+            logger.errorId(appDeploymentId, "Error while updating application 
deployment...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while updating application deployment. 
More info : " + e.getMessage());
@@ -1517,7 +1503,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             
appCatalog.getApplicationDeployment().removeAppDeployment(appDeploymentId);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while deleting application deployment...", e);
+            logger.errorId(appDeploymentId, "Error while deleting application 
deployment...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while deleting application deployment. 
More info : " + e.getMessage());
@@ -1545,7 +1531,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             }
             return appDeployments;
         } catch (AppCatalogException e) {
-            logger.error("Error while retrieving application deployments...", 
e);
+            logger.errorId(appModuleId, "Error while retrieving application 
deployments...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while retrieving application 
deployment. More info : " + e.getMessage());
@@ -1586,7 +1572,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             appCatalog = AppCatalogFactory.getAppCatalog();
             return 
appCatalog.getApplicationInterface().getApplicationInterface(appInterfaceId);
         } catch (AppCatalogException e) {
-            logger.error("Error while retrieving application interface...", e);
+            logger.errorId(appInterfaceId, "Error while retrieving application 
interface...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while retrieving application 
interface. More info : " + e.getMessage());
@@ -1609,7 +1595,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             
appCatalog.getApplicationInterface().updateApplicationInterface(appInterfaceId, 
applicationInterface);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while updating application interface...", e);
+            logger.errorId(appInterfaceId, "Error while updating application 
interface...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while updating application interface. 
More info : " + e.getMessage());
@@ -1630,7 +1616,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             appCatalog = AppCatalogFactory.getAppCatalog();
             return 
appCatalog.getApplicationInterface().removeApplicationInterface(appInterfaceId);
         } catch (AppCatalogException e) {
-            logger.error("Error while deleting application interface...", e);
+            logger.errorId(appInterfaceId, "Error while deleting application 
interface...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while deleting application interface. 
More info : " + e.getMessage());
@@ -1698,7 +1684,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             appCatalog = AppCatalogFactory.getAppCatalog();
             return 
appCatalog.getApplicationInterface().getApplicationInputs(appInterfaceId);
         } catch (AppCatalogException e) {
-            logger.error("Error while retrieving application inputs...", e);
+            logger.errorId(appInterfaceId, "Error while retrieving application 
inputs...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while retrieving application inputs. 
More info : " + e.getMessage());
@@ -1719,7 +1705,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             appCatalog = AppCatalogFactory.getAppCatalog();
             return 
appCatalog.getApplicationInterface().getApplicationOutputs(appInterfaceId);
         } catch (AppCatalogException e) {
-            logger.error("Error while retrieving application outputs...", e);
+            logger.errorId(appInterfaceId, "Error while retrieving application 
outputs...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while retrieving application outputs. 
More info : " + e.getMessage());
@@ -1759,7 +1745,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             }
             return availableComputeResources;
         } catch (AppCatalogException e) {
-            logger.error("Error while saving compute resource...", e);
+            logger.errorId(appInterfaceId, "Error while saving compute 
resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while saving compute resource. More 
info : " + e.getMessage());
@@ -1801,7 +1787,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             appCatalog = AppCatalogFactory.getAppCatalog();
             return 
appCatalog.getComputeResource().getComputeResource(computeResourceId);
         } catch (AppCatalogException e) {
-            logger.error("Error while retrieving compute resource...", e);
+            logger.errorId(computeResourceId, "Error while retrieving compute 
resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while retrieving compute resource. 
More info : " + e.getMessage());
@@ -1844,7 +1830,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             
appCatalog.getComputeResource().updateComputeResource(computeResourceId, 
computeResourceDescription);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while updating compute resource...", e);
+            logger.errorId(computeResourceId, "Error while updating compute 
resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while updaing compute resource. More 
info : " + e.getMessage());
@@ -1866,7 +1852,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             
appCatalog.getComputeResource().removeComputeResource(computeResourceId);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while deleting compute resource...", e);
+            logger.errorId(computeResourceId, "Error while deleting compute 
resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while deleting compute resource. More 
info : " + e.getMessage());
@@ -1893,7 +1879,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                        computeResource.addLocalJobSubmission(localSubmission), 
JobSubmissionProtocol.LOCAL, priorityOrder);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while adding job submission interface to 
resource compute resource...", e);
+            logger.errorId(computeResourceId, "Error while adding job 
submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding job submission interface 
to resource compute resource. More info : " + e.getMessage());
@@ -1917,7 +1903,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             submission.save();
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while adding job submission interface to 
resource compute resource...", e);
+            logger.errorId(jobSubmissionInterfaceId, "Error while adding job 
submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding job submission interface 
to resource compute resource. More info : " + e.getMessage());
@@ -1955,7 +1941,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                        computeResource.addSSHJobSubmission(sshJobSubmission), 
JobSubmissionProtocol.SSH, priorityOrder);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while adding job submission interface to 
resource compute resource...", e);
+            logger.errorId(computeResourceId, "Error while adding job 
submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding job submission interface 
to resource compute resource. More info : " + e.getMessage());
@@ -1982,7 +1968,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                     computeResource.addCloudJobSubmission(cloudJobSubmission), 
JobSubmissionProtocol.CLOUD, priorityOrder);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while adding job submission interface to 
resource compute resource...", e);
+            logger.errorId(computeResourceId, "Error while adding job 
submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding job submission interface 
to resource compute resource. More info : " + e.getMessage());
@@ -2006,7 +1992,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             submission.save();
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while adding job submission interface to 
resource compute resource...", e);
+            logger.errorId(jobSubmissionInterfaceId, "Error while adding job 
submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding job submission interface 
to resource compute resource. More info : " + e.getMessage());
@@ -2030,7 +2016,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             submission.save();
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while adding job submission interface to 
resource compute resource...", e);
+            logger.errorId(jobSubmissionInterfaceId, "Error while adding job 
submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding job submission interface 
to resource compute resource. More info : " + e.getMessage());
@@ -2056,7 +2042,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                        
computeResource.addLocalDataMovement(localDataMovement), 
DataMovementProtocol.LOCAL, priorityOrder);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while adding data movement interface to 
resource compute resource...", e);
+            logger.errorId(computeResourceId, "Error while adding data 
movement interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding data movement interface 
to resource compute resource. More info : " + e.getMessage());
@@ -2080,7 +2066,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             movment.save();
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while adding job submission interface to 
resource compute resource...", e);
+            logger.errorId(jobSubmissionInterfaceId, "Error while adding job 
submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding job submission interface 
to resource compute resource. More info : " + e.getMessage());
@@ -2118,7 +2104,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                        computeResource.addScpDataMovement(scpDataMovement), 
DataMovementProtocol.SCP, priorityOrder);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while adding data movement interface to 
resource compute resource...", e);
+            logger.errorId(computeResourceId, "Error while adding data 
movement interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding data movement interface 
to resource compute resource. More info : " + e.getMessage());
@@ -2143,7 +2129,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             movment.save();
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while adding job submission interface to 
resource compute resource...", e);
+            logger.errorId(jobSubmissionInterfaceId, "Error while adding job 
submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding job submission interface 
to resource compute resource. More info : " + e.getMessage());
@@ -2170,7 +2156,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
                        
computeResource.addGridFTPDataMovement(gridFTPDataMovement), 
DataMovementProtocol.GridFTP, priorityOrder);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while adding data movement interface to 
resource compute resource...", e);
+            logger.errorId(computeResourceId, "Error while adding data 
movement interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding data movement interface 
to resource compute resource. More info : " + e.getMessage());
@@ -2195,7 +2181,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             movment.save();
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while adding job submission interface to 
resource compute resource...", e);
+            logger.errorId(jobSubmissionInterfaceId, "Error while adding job 
submission interface to resource compute resource...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while adding job submission interface 
to resource compute resource. More info : " + e.getMessage());
@@ -2267,7 +2253,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             
appCatalog.getComputeResource().removeJobSubmissionInterface(jobSubmissionInterfaceId);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while deleting job submission interface...", 
e);
+            logger.errorId(jobSubmissionInterfaceId, "Error while deleting job 
submission interface...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while deleting job submission 
interface. More info : " + e.getMessage());
@@ -2289,7 +2275,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             
appCatalog.getComputeResource().removeDataMovementInterface(dataMovementInterfaceId);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while deleting data movement interface...", e);
+            logger.errorId(dataMovementInterfaceId, "Error while deleting data 
movement interface...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while deleting data movement 
interface. More info : " + e.getMessage());
@@ -2335,7 +2321,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             GwyResourceProfile gatewayProfile = appCatalog.getGatewayProfile();
             return gatewayProfile.getGatewayProfile(gatewayID);
         } catch (AppCatalogException e) {
-            logger.error("Error while retrieving gateway resource profile...", 
e);
+            logger.errorId(gatewayID, "Error while retrieving gateway resource 
profile...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while retrieving gateway resource 
profile. More info : " + e.getMessage());
@@ -2359,7 +2345,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             gatewayProfile.updateGatewayResourceProfile(gatewayID, 
gatewayResourceProfile);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while updating gateway resource profile...", 
e);
+            logger.errorId(gatewayID, "Error while updating gateway resource 
profile...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while updating gateway resource 
profile. More info : " + e.getMessage());
@@ -2382,7 +2368,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             gatewayProfile.removeGatewayResourceProfile(gatewayID);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while removing gateway resource profile...", 
e);
+            logger.errorId(gatewayID, "Error while removing gateway resource 
profile...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while removing gateway resource 
profile. More info : " + e.getMessage());
@@ -2414,7 +2400,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             gatewayProfile.updateGatewayResourceProfile(gatewayID, profile);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while registering gateway resource profile 
preference...", e);
+            logger.errorId(gatewayID, "Error while registering gateway 
resource profile preference...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while registering gateway resource 
profile preference. More info : " + e.getMessage());
@@ -2437,14 +2423,14 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             GwyResourceProfile gatewayProfile = appCatalog.getGatewayProfile();
             ComputeResource computeResource = appCatalog.getComputeResource();
             if (!gatewayProfile.isGatewayResourceProfileExists(gatewayID)){
-                logger.error("Given gateway profile does not exist in the 
system. Please provide a valid gateway id...");
+                logger.errorId(gatewayID, "Given gateway profile does not 
exist in the system. Please provide a valid gateway id...");
                 AiravataSystemException exception = new 
AiravataSystemException();
                 
exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
                 exception.setMessage("Given gateway profile does not exist in 
the system. Please provide a valid gateway id...");
                 throw exception;
             }
             if (!computeResource.isComputeResourceExists(computeResourceId)){
-                logger.error("Given compute resource does not exist in the 
system. Please provide a valid compute resource id...");
+                logger.errorId(computeResourceId, "Given compute resource does 
not exist in the system. Please provide a valid compute resource id...");
                 AiravataSystemException exception = new 
AiravataSystemException();
                 
exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
                 exception.setMessage("Given compute resource does not exist in 
the system. Please provide a valid compute resource id...");
@@ -2452,7 +2438,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             }
             return gatewayProfile.getComputeResourcePreference(gatewayID, 
computeResourceId);
         } catch (AppCatalogException e) {
-            logger.error("Error while reading gateway compute resource 
preference...", e);
+            logger.errorId(gatewayID, "Error while reading gateway compute 
resource preference...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while reading gateway compute resource 
preference. More info : " + e.getMessage());
@@ -2474,7 +2460,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             GwyResourceProfile gatewayProfile = appCatalog.getGatewayProfile();
             return 
gatewayProfile.getGatewayProfile(gatewayID).getComputeResourcePreferences();
         } catch (AppCatalogException e) {
-            logger.error("Error while reading gateway compute resource 
preferences...", e);
+            logger.errorId(gatewayID, "Error while reading gateway compute 
resource preferences...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while reading gateway compute resource 
preferences. More info : " + e.getMessage());
@@ -2513,7 +2499,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             gatewayProfile.updateGatewayResourceProfile(gatewayID, profile);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while reading gateway compute resource 
preference...", e);
+            logger.errorId(gatewayID, "Error while reading gateway compute 
resource preference...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while updating gateway compute 
resource preference. More info : " + e.getMessage());
@@ -2550,7 +2536,7 @@ public class AiravataServerHandler implements 
Airavata.Iface, Watcher {
             gatewayProfile.updateGatewayResourceProfile(gatewayID, profile);
             return true;
         } catch (AppCatalogException e) {
-            logger.error("Error while reading gateway compute resource 
preference...", e);
+            logger.errorId(gatewayID, "Error while reading gateway compute 
resource preference...", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
             exception.setMessage("Error while updating gateway compute 
resource preference. More info : " + e.getMessage());

http://git-wip-us.apache.org/repos/asf/airavata/blob/595be55f/modules/commons/utils/src/main/java/org/apache/airavata/common/logger/AiravataLogger.java
----------------------------------------------------------------------
diff --git 
a/modules/commons/utils/src/main/java/org/apache/airavata/common/logger/AiravataLogger.java
 
b/modules/commons/utils/src/main/java/org/apache/airavata/common/logger/AiravataLogger.java
new file mode 100644
index 0000000..9477cc9
--- /dev/null
+++ 
b/modules/commons/utils/src/main/java/org/apache/airavata/common/logger/AiravataLogger.java
@@ -0,0 +1,677 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.airavata.common.logger;
+
+public interface AiravataLogger{
+
+    /**
+     * Return the name of this <code>Logger</code> instance.
+     *
+     * @return name of this logger instance
+     */
+    String getName();
+
+    /**
+     * Is the logger instance enabled for the TRACE level?
+     *
+     * @return True if this Logger is enabled for the TRACE level,
+     * false otherwise.
+     * @since 1.4
+     */
+    boolean isTraceEnabled();
+
+    /**
+     * Log a message at the TRACE level.
+     *
+     * @param msg the message string to be logged
+     * @since 1.4
+     */
+    void trace(String msg);
+
+    /**
+     * Log a message at the TRACE level.
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param msg the message string to be logged
+     * @since 1.4
+     */
+    void traceId(String etjId, String msg);
+
+    /**
+     * Log a message at the TRACE level according to the specified format
+     * and argument.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the TRACE level. </p>
+     *
+     * @param format the format string
+     * @param arg    the argument
+     * @since 1.4
+     */
+    void trace(String format, Object arg);
+
+    /**
+     * Log a message at the TRACE level according to the specified format
+     * and argument.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the TRACE level. </p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format the format string
+     * @param arg    the argument
+     * @since 1.4
+     */
+    void traceId(String etjId, String format, Object arg);
+
+    /**
+     * Log a message at the TRACE level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the TRACE level. </p>
+     *
+     * @param format the format string
+     * @param arg1   the first argument
+     * @param arg2   the second argument
+     * @since 1.4
+     */
+    void trace(String format, Object arg1, Object arg2);
+
+    /**
+     * Log a message at the TRACE level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the TRACE level. </p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format the format string
+     * @param arg1   the first argument
+     * @param arg2   the second argument
+     * @since 1.4
+     */
+    void traceId(String etjId, String format, Object arg1, Object arg2);
+
+    /**
+     * Log a message at the TRACE level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous string concatenation when the logger
+     * is disabled for the TRACE level. However, this variant incurs the hidden
+     * (and relatively small) cost of creating an <code>Object[]</code> before 
invoking the method,
+     * even if this logger is disabled for TRACE. The variants taking {@link 
#trace(String, Object) one} and
+     * {@link #trace(String, Object, Object) two} arguments exist solely in 
order to avoid this hidden cost.</p>
+     *
+     * @param format    the format string
+     * @param arguments a list of 3 or more arguments
+     * @since 1.4
+     */
+    void trace(String format, Object... arguments);
+
+    /**
+     * Log a message at the TRACE level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous string concatenation when the logger
+     * is disabled for the TRACE level. However, this variant incurs the hidden
+     * (and relatively small) cost of creating an <code>Object[]</code> before 
invoking the method,
+     * even if this logger is disabled for TRACE. The variants taking {@link 
#trace(String, Object) one} and
+     * {@link #trace(String, Object, Object) two} arguments exist solely in 
order to avoid this hidden cost.</p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format    the format string
+     * @param arguments a list of 3 or more arguments
+     * @since 1.4
+     */
+    void traceId(String etjId, String format, Object... arguments);
+
+    /**
+     * Log an exception (throwable) at the TRACE level with an
+     * accompanying message.
+     *
+     * @param msg the message accompanying the exception
+     * @param t   the exception (throwable) to log
+     * @since 1.4
+     */
+    void trace(String msg, Throwable t);
+
+    /**
+     * Log an exception (throwable) at the TRACE level with an
+     * accompanying message.
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param msg the message accompanying the exception
+     * @param t   the exception (throwable) to log
+     * @since 1.4
+     */
+    void traceId(String etjId, String msg, Throwable t);
+
+    /**
+     * Is the logger instance enabled for the DEBUG level?
+     *
+     * @return True if this Logger is enabled for the DEBUG level,
+     * false otherwise.
+     */
+    boolean isDebugEnabled();
+
+    /**
+     * Log a message at the DEBUG level.
+     *
+     * @param msg the message string to be logged
+     */
+    void debug(String msg);
+
+    /**
+     * Log a message at the DEBUG level.
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param msg the message string to be logged
+     */
+    void debugId(String etjId, String msg);
+
+    /**
+     * Log a message at the DEBUG level according to the specified format
+     * and argument.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the DEBUG level. </p>
+     *
+     * @param format the format string
+     * @param arg    the argument
+     */
+    void debug(String format, Object arg);
+
+    /**
+     * Log a message at the DEBUG level according to the specified format
+     * and argument.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the DEBUG level. </p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format the format string
+     * @param arg    the argument
+     */
+    void debugId(String etjId, String format, Object arg);
+
+    /**
+     * Log a message at the DEBUG level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the DEBUG level. </p>
+     *
+     * @param format the format string
+     * @param arg1   the first argument
+     * @param arg2   the second argument
+     */
+    void debug(String format, Object arg1, Object arg2);
+
+    /**
+     * Log a message at the DEBUG level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the DEBUG level. </p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format the format string
+     * @param arg1   the first argument
+     * @param arg2   the second argument
+     */
+    void debugId(String etjId, String format, Object arg1, Object arg2);
+
+    /**
+     * Log a message at the DEBUG level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous string concatenation when the logger
+     * is disabled for the DEBUG level. However, this variant incurs the hidden
+     * (and relatively small) cost of creating an <code>Object[]</code> before 
invoking the method,
+     * even if this logger is disabled for DEBUG. The variants taking
+     * {@link #debug(String, Object) one} and {@link #debug(String, Object, 
Object) two}
+     * arguments exist solely in order to avoid this hidden cost.</p>
+     *
+     * @param format    the format string
+     * @param arguments a list of 3 or more arguments
+     */
+    void debug(String format, Object... arguments);
+
+    /**
+     * Log a message at the DEBUG level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous string concatenation when the logger
+     * is disabled for the DEBUG level. However, this variant incurs the hidden
+     * (and relatively small) cost of creating an <code>Object[]</code> before 
invoking the method,
+     * even if this logger is disabled for DEBUG. The variants taking
+     * {@link #debug(String, Object) one} and {@link #debug(String, Object, 
Object) two}
+     * arguments exist solely in order to avoid this hidden cost.</p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format    the format string
+     * @param arguments a list of 3 or more arguments
+     */
+    void debugId(String etjId, String format, Object... arguments);
+
+    /**
+     * Log an exception (throwable) at the DEBUG level with an
+     * accompanying message.
+     *
+     * @param msg the message accompanying the exception
+     * @param t   the exception (throwable) to log
+     */
+    void debug(String msg, Throwable t);
+
+    /**
+     * Log an exception (throwable) at the DEBUG level with an
+     * accompanying message.
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param msg the message accompanying the exception
+     * @param t   the exception (throwable) to log
+     */
+    void debugId(String etjId, String msg, Throwable t);
+
+    /**
+     * Is the logger instance enabled for the INFO level?
+     *
+     * @return True if this Logger is enabled for the INFO level,
+     * false otherwise.
+     */
+    boolean isInfoEnabled();
+
+    /**
+     * Log a message at the INFO level.
+     *
+     * @param msg the message string to be logged
+     */
+    void info(String msg);
+
+    /**
+     * Log a message at the INFO level.
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param msg the message string to be logged
+     */
+    void infoId(String etjId, String msg);
+
+    /**
+     * Log a message at the INFO level according to the specified format
+     * and argument.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the INFO level. </p>
+     *
+     * @param format the format string
+     * @param arg    the argument
+     */
+    void info(String format, Object arg);
+
+    /**
+     * Log a message at the INFO level according to the specified format
+     * and argument.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the INFO level. </p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format the format string
+     * @param arg    the argument
+     */
+    void infoId(String etjId, String format, Object arg);
+
+    /**
+     * Log a message at the INFO level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the INFO level. </p>
+     *
+     * @param format the format string
+     * @param arg1   the first argument
+     * @param arg2   the second argument
+     */
+    void info(String format, Object arg1, Object arg2);
+
+    /**
+     * Log a message at the INFO level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the INFO level. </p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format the format string
+     * @param arg1   the first argument
+     * @param arg2   the second argument
+     */
+    void infoId(String etjId, String format, Object arg1, Object arg2);
+
+    /**
+     * Log a message at the INFO level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous string concatenation when the logger
+     * is disabled for the INFO level. However, this variant incurs the hidden
+     * (and relatively small) cost of creating an <code>Object[]</code> before 
invoking the method,
+     * even if this logger is disabled for INFO. The variants taking
+     * {@link #info(String, Object) one} and {@link #info(String, Object, 
Object) two}
+     * arguments exist solely in order to avoid this hidden cost.</p>
+     *
+     * @param format    the format string
+     * @param arguments a list of 3 or more arguments
+     */
+    void info(String format, Object... arguments);
+
+    /**
+     * Log a message at the INFO level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous string concatenation when the logger
+     * is disabled for the INFO level. However, this variant incurs the hidden
+     * (and relatively small) cost of creating an <code>Object[]</code> before 
invoking the method,
+     * even if this logger is disabled for INFO. The variants taking
+     * {@link #info(String, Object) one} and {@link #info(String, Object, 
Object) two}
+     * arguments exist solely in order to avoid this hidden cost.</p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format    the format string
+     * @param arguments a list of 3 or more arguments
+     */
+    void infoId(String etjId, String format, Object... arguments);
+
+    /**
+     * Log an exception (throwable) at the INFO level with an
+     * accompanying message.
+     *
+     * @param msg the message accompanying the exception
+     * @param t   the exception (throwable) to log
+     */
+    void info(String msg, Throwable t);
+
+    /**
+     * Log an exception (throwable) at the INFO level with an
+     * accompanying message.
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param msg the message accompanying the exception
+     * @param t   the exception (throwable) to log
+     */
+    void infoId(String etjId, String msg, Throwable t);
+
+    /**
+     * Is the logger instance enabled for the WARN level?
+     *
+     * @return True if this Logger is enabled for the WARN level,
+     * false otherwise.
+     */
+    boolean isWarnEnabled();
+
+    /**
+     * Log a message at the WARN level.
+     *
+     * @param msg the message string to be logged
+     */
+    void warn(String msg);
+
+    /**
+     * Log a message at the WARN level.
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param msg the message string to be logged
+     */
+    void warnId(String etjId, String msg);
+
+    /**
+     * Log a message at the WARN level according to the specified format
+     * and argument.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the WARN level. </p>
+     *
+     * @param format the format string
+     * @param arg    the argument
+     */
+    void warn(String format, Object arg);
+
+    /**
+     * Log a message at the WARN level according to the specified format
+     * and argument.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the WARN level. </p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format the format string
+     * @param arg    the argument
+     */
+    void warnId(String etjId, String format, Object arg);
+
+    /**
+     * Log a message at the WARN level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous string concatenation when the logger
+     * is disabled for the WARN level. However, this variant incurs the hidden
+     * (and relatively small) cost of creating an <code>Object[]</code> before 
invoking the method,
+     * even if this logger is disabled for WARN. The variants taking
+     * {@link #warn(String, Object) one} and {@link #warn(String, Object, 
Object) two}
+     * arguments exist solely in order to avoid this hidden cost.</p>
+     *
+     * @param format    the format string
+     * @param arguments a list of 3 or more arguments
+     */
+    void warn(String format, Object... arguments);
+
+    /**
+     * Log a message at the WARN level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous string concatenation when the logger
+     * is disabled for the WARN level. However, this variant incurs the hidden
+     * (and relatively small) cost of creating an <code>Object[]</code> before 
invoking the method,
+     * even if this logger is disabled for WARN. The variants taking
+     * {@link #warn(String, Object) one} and {@link #warn(String, Object, 
Object) two}
+     * arguments exist solely in order to avoid this hidden cost.</p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format    the format string
+     * @param arguments a list of 3 or more arguments
+     */
+    void warnId(String etjId, String format, Object... arguments);
+
+    /**
+     * Log a message at the WARN level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the WARN level. </p>
+     *
+     * @param format the format string
+     * @param arg1   the first argument
+     * @param arg2   the second argument
+     */
+    void warn(String format, Object arg1, Object arg2);
+
+    /**
+     * Log a message at the WARN level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the WARN level. </p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format the format string
+     * @param arg1   the first argument
+     * @param arg2   the second argument
+     */
+    void warnId(String etjId, String format, Object arg1, Object arg2);
+
+    /**
+     * Log an exception (throwable) at the WARN level with an
+     * accompanying message.
+     *
+     * @param msg the message accompanying the exception
+     * @param t   the exception (throwable) to log
+     */
+    void warn(String msg, Throwable t);
+
+    /**
+     * Log an exception (throwable) at the WARN level with an
+     * accompanying message.
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param msg the message accompanying the exception
+     * @param t   the exception (throwable) to log
+     */
+    void warnId(String etjId, String msg, Throwable t);
+
+    /**
+     * Is the logger instance enabled for the ERROR level?
+     *
+     * @return True if this Logger is enabled for the ERROR level,
+     * false otherwise.
+     */
+    boolean isErrorEnabled();
+
+    /**
+     * Log a message at the ERROR level.
+     *
+     * @param msg the message string to be logged
+     */
+    void error(String msg);
+
+    /**
+     * Log a message at the ERROR level.
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param msg the message string to be logged
+     */
+    void errorId(String etjId, String msg);
+
+    /**
+     * Log a message at the ERROR level according to the specified format
+     * and argument.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the ERROR level. </p>
+     *
+     * @param format the format string
+     * @param arg    the argument
+     */
+    void error(String format, Object arg);
+
+    /**
+     * Log a message at the ERROR level according to the specified format
+     * and argument.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the ERROR level. </p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format the format string
+     * @param arg    the argument
+     */
+    void errorId(String etjId, String format, Object arg);
+
+    /**
+     * Log a message at the ERROR level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the ERROR level. </p>
+     *
+     * @param format the format string
+     * @param arg1   the first argument
+     * @param arg2   the second argument
+     */
+    void error(String format, Object arg1, Object arg2);
+
+    /**
+     * Log a message at the ERROR level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous object creation when the logger
+     * is disabled for the ERROR level. </p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format the format string
+     * @param arg1   the first argument
+     * @param arg2   the second argument
+     */
+    void errorId(String etjId, String format, Object arg1, Object arg2);
+
+    /**
+     * Log a message at the ERROR level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous string concatenation when the logger
+     * is disabled for the ERROR level. However, this variant incurs the hidden
+     * (and relatively small) cost of creating an <code>Object[]</code> before 
invoking the method,
+     * even if this logger is disabled for ERROR. The variants taking
+     * {@link #error(String, Object) one} and {@link #error(String, Object, 
Object) two}
+     * arguments exist solely in order to avoid this hidden cost.</p>
+     *
+     * @param format    the format string
+     * @param arguments a list of 3 or more arguments
+     */
+    void error(String format, Object... arguments);
+
+    /**
+     * Log a message at the ERROR level according to the specified format
+     * and arguments.
+     * <p/>
+     * <p>This form avoids superfluous string concatenation when the logger
+     * is disabled for the ERROR level. However, this variant incurs the hidden
+     * (and relatively small) cost of creating an <code>Object[]</code> before 
invoking the method,
+     * even if this logger is disabled for ERROR. The variants taking
+     * {@link #error(String, Object) one} and {@link #error(String, Object, 
Object) two}
+     * arguments exist solely in order to avoid this hidden cost.</p>
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param format    the format string
+     * @param arguments a list of 3 or more arguments
+     */
+    void errorId(String etjId, String format, Object... arguments);
+
+    /**
+     * Log an exception (throwable) at the ERROR level with an
+     * accompanying message.
+     *
+     * @param msg the message accompanying the exception
+     * @param t   the exception (throwable) to log
+     */
+    void error(String msg, Throwable t);
+
+    /**
+     * Log an exception (throwable) at the ERROR level with an
+     * accompanying message.
+     *
+     * @param etjId - Experiment , Task or Job Id
+     * @param msg the message accompanying the exception
+     * @param t   the exception (throwable) to log
+     */
+    void errorId(String etjId, String msg, Throwable t);
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/595be55f/modules/commons/utils/src/main/java/org/apache/airavata/common/logger/AiravataLoggerFactory.java
----------------------------------------------------------------------
diff --git 
a/modules/commons/utils/src/main/java/org/apache/airavata/common/logger/AiravataLoggerFactory.java
 
b/modules/commons/utils/src/main/java/org/apache/airavata/common/logger/AiravataLoggerFactory.java
new file mode 100644
index 0000000..a1a9462
--- /dev/null
+++ 
b/modules/commons/utils/src/main/java/org/apache/airavata/common/logger/AiravataLoggerFactory.java
@@ -0,0 +1,34 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.airavata.common.logger;
+
+public class AiravataLoggerFactory {
+
+    public static AiravataLogger getLogger(Class aClass) {
+        return new AiravataLoggerImpl(aClass);
+    }
+
+    public static AiravataLogger getLogger(String className) {
+        return new AiravataLoggerImpl(className);
+    }
+
+}

Reply via email to