Logging implementation 14/93914/1
authorDominik Mizyn <d.mizyn@samsung.com>
Tue, 20 Aug 2019 06:47:15 +0000 (08:47 +0200)
committerDominik Mizyn <d.mizyn@samsung.com>
Tue, 20 Aug 2019 06:47:17 +0000 (08:47 +0200)
Base logging implementation to project.

Issue-ID: PORTAL-705
Change-Id: Ie95a28efdfdce473adca35f7f2cce40c2d1a0df7
Signed-off-by: Dominik Mizyn <d.mizyn@samsung.com>
portal-BE/src/main/java/org/onap/portal/PortalApplication.java
portal-BE/src/main/java/org/onap/portal/logging/format/ApplicationCodes.properties [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/logging/format/EPAppMessagesEnum.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/logging/format/EPErrorCodesEnum.java [new file with mode: 0644]
portal-BE/src/main/java/org/onap/portal/logging/logic/EPLogUtil.java [new file with mode: 0644]

index 4a7f4f8..e779744 100644 (file)
@@ -1,3 +1,43 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
 package org.onap.portal;
 
 import org.springframework.boot.SpringApplication;
diff --git a/portal-BE/src/main/java/org/onap/portal/logging/format/ApplicationCodes.properties b/portal-BE/src/main/java/org/onap/portal/logging/format/ApplicationCodes.properties
new file mode 100644 (file)
index 0000000..b308262
--- /dev/null
@@ -0,0 +1,159 @@
+# ============LICENSE_START==========================================
+# ONAP Portal
+# ===================================================================
+# Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+# ===================================================================
+# Modifications Copyright (c) 2019 Samsung
+# ===================================================================
+#
+# Unless otherwise specified, all software contained herein is licensed
+# under the Apache License, Version 2.0 (the "License");
+# you may not use this software 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.
+# Unless otherwise specified, all documentation contained herein is licensed
+# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+# you may not use this documentation except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#             https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# 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.
+#
+# ============LICENSE_END============================================
+#
+#
+#
+
+#Resource key=Error Code|Message text|Resolution text |Description text
+#######
+#Newlines can be utilized to add some clarity ensuring continuing line
+#has atleast one leading space
+#ResourceKey=\
+#             ERR0000E\
+#             Sample error msg txt\
+#             Sample resolution msg\
+#             Sample description txt
+#
+######
+#Error code classification category
+#100   Permission errors
+#200   Availability errors/Timeouts
+#300   Data errors
+#400   Schema Interface type/validation errors
+#500   Business process errors
+#900   Unknown errors
+#
+########################################################################
+
+# Define Alarm Codes Specific to ECOMP Portal
+BEUEBAUTHENTICATIONERROR_ONE_ARGUMENT= ||Reason: {0}.|\
+                                                                               An Authentication failure occurred during access to UEB server. Please check that UEB keys are configured correctly under fusion.properties file.
+
+BERESTAPIAUTHENTICATIONERROR =                 |||Please check application credentials defined in Database or portal.properties file.
+                                                                               
+INTERNALAUTHENTICATIONINFO_ONE_ARGUMENT=||Description: {0}.|Please check the logs for more information.
+                                                                               
+INTERNALAUTHENTICATIONWARNING_ONE_ARGUMENT=||Description: {0}.|Please check the logs for more information.
+
+INTERNALAUTHENTICATIONERROR_ONE_ARGUMENT=||Description: {0}.|Please check the logs for more information.
+
+INTERNALAUTHENTICATIONFATAL_ONE_ARGUMENT=||Description: {0}.|Please check the logs for more information.
+
+BEHEALTHCHECKERROR=                                            |||Please check the logs for more information.
+
+BEHEALTHCHECKMYSQLERROR=                               ||Please check the logs for more information.|\
+                                                                               Check connectivity to MYSQL is configured correctly under system.properties file.
+
+BEHEALTHCHECKUEBCLUSTERERROR=                  ||Please check the logs for more information.|\
+                                                                               Check connectivity to UEB cluster which is configured under portal.properties file.
+
+FEHEALTHCHECKERROR=                                            |||Please check connectivity from this FE instance towards BE or BE Load Balancer.
+                                                                               
+BEHEALTHCHECKRECOVERY=                                 |||Please check logs for more specific information about the problem.
+
+BEHEALTHCHECKMYSQLRECOVERY=                            |||Please check logs for more specific information about the problem.
+
+BEHEALTHCHECKUEBCLUSTERRECOVERY=               |||Please check logs for more specific information about the problem.
+
+FEHEALTHCHECKRECOVERY=                                 |||Please check logs for more specific information about the problem.
+
+#UEB communication
+BEUEBCONNECTIONERROR_ONE_ARGUMENT=             ||Reason: {0}.|\
+                                                                               Please check UEB server list and keys configured under Portal.Properties file.
+                                                                               
+BEUEBUNKOWNHOSTERROR_ONE_ARGUMENT=             ||Cannot reach host {0}.|\
+                                                                               Please check UEB server list and keys configured under Portal.Properties file.
+
+#Onboarding apps
+BEUEBREGISTERONBOARDINGAPPERROR=               ||Reason: {0}.|\
+                                                                               Please check UEB server list and keys configured under Portal.Properties file.
+
+#HTTP communication
+BEHTTPCONNECTIONERROR_ONE_ARGUMENT=            ||Reason: {0}.|Please check the logs for more information.
+
+INTERNALCONNECTIONINFO_ONE_ARGUMENT=   ||Description: {0}.|Please check the logs for more information.
+
+INTERNALCONNECTIONWARNING_ONE_ARGUMENT=        ||Description: {0}.|Please check the logs for more information.
+
+INTERNALCONNECTIONERROR_ONE_ARGUMENT=  ||Description: {0}.|Please check the logs for more information.
+
+INTERNALCONNECTIONFATAL_ONE_ARGUMENT=  ||Description: {0}.|Please check the logs for more information.
+
+BEUEBOBJECTNOTFOUNDERROR_ONE_ARGUMENT= ||Data not found: {0}.|\
+                                                                               An error occurred during access to UEB Server, {1} failed to either register or unregister to/from UEB topic.
+
+#Login error codes
+BEUSERMISSINGERROR_ONE_ARGUMENT=               |||\
+                                                                               User {0} must be added to the corresponding application with proper user roles.
+                                                                               
+BEUSERINACTIVEWARNING_ONE_ARGUMENT=            |||\
+                                                                               User {0} must be added to the corresponding application with proper user roles.
+                                                                               
+BEUSERADMINPRIVILEGESINFO_ONE_ARGUMENT=        |||\
+                                                                               User {0} should be given proper administrator role for the corresponding application to perform the necessary actions.
+                                                                               
+BEINVALIDJSONINPUT=                                            |||Please check error logs for more information.
+
+BEINCORRECTHTTPSTATUSERROR=                            |||Please check logs for more information.
+
+BEINITIALIZATIONERROR=                                 |||Please check logs for more information.
+
+BEUEBSYSTEMERROR=                                              ||\
+                                                                               Operation: {0}.|\
+                                                                               An error occurred in {1} distribution mechanism. Please check the logs for more information.
+                                                                               
+BEDAOSYSTEMERROR=                                              |||Please check MySQL DB health or look at the logs for more details.
+
+BESYSTEMERROR=                                                 |||Please check logs for more information.
+
+BEEXECUTEROLLBACKERROR=                                        |||Please check MYSQL DB health or look at the logs for more details.
+
+FEHTTPLOGGINGERROR=                                            |||Please check MYSQL DB health or look at the logs for more details.
+                                                                               
+FEPORTALSERVLETERROR=                                  |||Please check logs for more specific information about the problem.
+
+BEDAOCLOSESESSIONERROR=                                        |||Please check MYSQL DB health or look at the logs form more details.
+
+BERESTAPIGENERALERROR=                                 |||Please check error log for more information.
+
+FEHEALTHCHECKGENERALERROR=                             |||Please check error log for more information.
+
+INTERNALUNEXPECTEDINFO_ONE_ARGUMENT=   |||Description: {0}.
+
+INTERNALUNEXPECTEDWARNING_ONE_ARGUMENT=        |||Description: {0}.
+
+INTERNALUNEXPECTEDERROR_ONE_ARGUMENT=  |||Description: {0}.
+
+INTERNALUNEXPECTEDFATAL_ONE_ARGUMENT=  |||Description: {0}.
diff --git a/portal-BE/src/main/java/org/onap/portal/logging/format/EPAppMessagesEnum.java b/portal-BE/src/main/java/org/onap/portal/logging/format/EPAppMessagesEnum.java
new file mode 100644 (file)
index 0000000..d7fbe05
--- /dev/null
@@ -0,0 +1,307 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.logging.format;
+
+import com.att.eelf.i18n.EELFResolvableErrorEnum;
+import org.onap.portalsdk.core.logging.format.AlarmSeverityEnum;
+import org.onap.portalsdk.core.logging.format.ErrorSeverityEnum;
+import org.onap.portalsdk.core.logging.format.ErrorTypeEnum;
+
+/**
+ * 
+ * Add ONAP Portal Specific Error Code Enums here, for generic
+ * ones (ones you think are useful not only Portal but also SDK), add it
+ * to the enum class AppMessagesEnum defined in SDK.
+ */
+public enum EPAppMessagesEnum implements EELFResolvableErrorEnum {
+       /*
+       100-199 Security/Permission Related 
+                                                                               - Authentication problems (from external client, to external server)
+                                                                               - Certification errors
+                                                                               - 
+                                                                                       
+       200-299 Availability/Timeout Related
+                                                                               - connectivity error
+                                                                               - connection timeout
+                                                                               
+       300-399 Data Access/Integrity Related
+                                                                               - Data in graph in invalid(E.g. no creator is found for service) 
+                                                                               - Artifact is missing in ES, but exists in graph.
+                                                                                
+       400-499 Schema Interface Type/Validation
+                                                                               - received Pay-load checksum is invalid
+                                                                               - received JSON is not valid
+                                                         
+       500-599 Business/Flow Processing Related  
+                                                                               -  check out to service is not allowed
+                                                                               -  Roll-back is done
+                                                                               -  failed to generate heat file
+                                                                                 
+
+       600-899 Reserved - do not use
+
+       900-999 Unknown Errors 
+                                                                               - Unexpected exception
+                                                                               */
+       
+       BeUebAuthenticationError(EPErrorCodesEnum.BEUEBAUTHENTICATIONERROR_ONE_ARGUMENT, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                               "ERR100E", "An Authentication failure occurred during access to UEB server", "Details: {0}.", "Please check UEB server list and keys configured under Portal.Properties file."),
+       
+       BeRestApiAuthenticationError(EPErrorCodesEnum.BERESTAPIAUTHENTICATIONERROR, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                               "ERR101E", "Rejected an incoming REST API request due to invalid credentials", "", "Please check application credentials defined in Database or properties files."),
+
+       InternalAuthenticationInfo(EPErrorCodesEnum.INTERNALAUTHENTICATIONINFO_ONE_ARGUMENT, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+                                                               "ERR199I", "Internal authentication problem", "Details: {0}.", "Please check the logs for more information."),
+       
+       InternalAuthenticationWarning(EPErrorCodesEnum.INTERNALAUTHENTICATIONWARNING_ONE_ARGUMENT, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
+                                                               "ERR199W", "Internal authentication problem", "Details: {0}.", "Please check the logs for more information."),
+       
+       InternalAuthenticationError(EPErrorCodesEnum.INTERNALAUTHENTICATIONERROR_ONE_ARGUMENT, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                               "ERR199E", "Internal authentication problem", "Details: {0}.", "Please check the logs for more information."),
+       
+       InternalAuthenticationFatal(EPErrorCodesEnum.INTERNALAUTHENTICATIONFATAL_ONE_ARGUMENT, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.FATAL,
+                                                               "ERR199F", "Internal authentication problem", "Details: {0}.", "Please check the logs for more information."),
+       
+       BeHealthCheckError(EPErrorCodesEnum.BeHEALTHCHECKERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+                                                               "ERR200E", "ECOMP-PORTAL Back-end probably lost connectivity to either one of the following components: MySQL DB, UEB Cluster", "", "Please check the logs for more information."),
+
+       BeHealthCheckMySqlError(EPErrorCodesEnum.BEHEALTHCHECKMYSQLERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+                                                               "ERR201E", "ECOMP-PORTAL Back-end probably lost connectivity to MySQL DB", "", "Check connectivity to MYSQL is configured correctly under system.properties file."),
+
+       BeHealthCheckUebClusterError(EPErrorCodesEnum.BEHEALTHCHECKUEBCLUSTERERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+                                                               "ERR203E", "ECOMP-PORTAL Back-end probably lost connectivity to UEB Cluster", "", "Check connectivity to UEB cluster which is configured under portal.properties file."),
+       
+       FeHealthCheckError(EPErrorCodesEnum.FEHEALTHCHECKERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+                                                               "ERR204E", "Unable to connect to a valid ECOMP-PORTAL Back-end Server.", "", "Please check connectivity from this FE instance towards BE or BE Load Balancer."),
+       
+       BeHealthCheckRecovery(EPErrorCodesEnum.BEHEALTHCHECKRECOVERY, ErrorTypeEnum.RECOVERY, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+                                                               "ERR205I", "ECOMP-PORTAL Back-end Recovery to either one of the following components: MySQL DB, UEB Cluster", "", "Please check logs for more specific information about the problem."),
+       
+       BeHealthCheckMySqlRecovery(EPErrorCodesEnum.BEHEALTHCHECKMYSQLRECOVERY, ErrorTypeEnum.RECOVERY, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+                                                               "ERR206I", "ECOMP-PORTAL Back-end connection recovery to MySQL DB", "", "Please check logs for more specific information about the problem."),
+       
+       BeHealthCheckUebClusterRecovery(EPErrorCodesEnum.BEHEALTHCHECKUEBCLUSTERRECOVERY, ErrorTypeEnum.RECOVERY, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+                                                               "ERR208I", "ECOMP-PORTAL Back-end connection recovery to UEB Cluster", "", "Please check logs for more specific information about the problem."),
+       
+       FeHealthCheckRecovery(EPErrorCodesEnum.FEHEALTHCHECKRECOVERY, ErrorTypeEnum.RECOVERY, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+                                                               "ERR209I", "Connectivity to ECOMP-PORTAL Front-end Server is recovered", "", "Please check logs for more specific information about the problem."),
+    
+       BeUebConnectionError(EPErrorCodesEnum.BEUEBCONNECTIONERROR_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                       "ERR210E", "ECOMP-PORTAL Back-end probably lost connectivity to UEB Cluster", "Details: {0}.", "Please check UEB server list and keys configured under Portal.Properties file."),
+    
+    BeUebUnkownHostError(EPErrorCodesEnum.BEUEBUNKOWNHOSTERROR_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                       "ERR211E", "ECOMP-PORTAL Back-end probably lost connectivity to UEB Cluster", "Cannot reach host: {0}.", "Please check UEB server list and keys configured under Portal.Properties file."),
+       
+    BeUebRegisterOnboardingAppError(EPErrorCodesEnum.BEUEBREGISTERONBOARDINGAPPERROR, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                       "ERR212E", "Failed to register the On-boarding application with UEB Communication server", "Details: {0}.", "Please check UEB server list and keys configured under Portal.Properties file."),
+    
+    BeHttpConnectionError(EPErrorCodesEnum.BEHTTPCONNECTIONERROR_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                               "ERR213E", "It could be that communication to an external application might resulted an exception or failed to reach the external application", 
+                                                               "Details: {0}.", "Please check logs for more information."),
+       MusicHealthCheckZookeeperError(EPErrorCodesEnum.MUSICHEALTHCHECKZOOKEEPERERROR_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                "ERR214E", "Connectivity to Music Cluster -zookeeper server", "Details: {0}.", "Please check zookeeper server list and check the logs for more information"),
+       
+    MusicHealthCheckCassandraError(EPErrorCodesEnum.MUSICHEALTHCHECKCASSANDRAERROR_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                "ERR215E", "Connectivity to Music Cluster -Cassandra server", "Details: {0}.", "Please check Cassandra server list and check the logs for more information"),
+    
+    InternalConnectionInfo(EPErrorCodesEnum.INTERNALCONNECTIONINFO_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+                                                               "ERR299I", "Internal Connection problem", "Details: {0}.", "Please check logs for more information."),
+    
+       InternalConnectionWarning(EPErrorCodesEnum.INTERNALCONNECTIONWARNING_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
+                                                               "ERR299W", "Internal Connection problem", "Details: {0}.", "Please check logs for more information."),
+    
+    InternalConnectionError(EPErrorCodesEnum.INTERNALCONNECTIONERROR_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                       "ERR299E", "Internal Connection problem", "Details: {0}.", "Please check logs for more information."),
+    
+    InternalConnectionFatal(EPErrorCodesEnum.INTERNALCONNECTIONFATAL_ONE_ARGUMENT, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.FATAL,
+                                                       "ERR299F", "Internal Connection problem", "Details: {0}.", "Please check logs for more information."),
+    
+    BeUebObjectNotFoundError(EPErrorCodesEnum.BEUEBOBJECTNOTFOUNDERROR_ONE_ARGUMENT, ErrorTypeEnum.DATA_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                       "ERR303E", "Error occurred during access to U-EB Server.", "Data not found: {0}.", "An error occurred during access to UEB Server, {1} failed to either register or unregister to/from UEB topic."),
+    
+    BeUserMissingError(EPErrorCodesEnum.BEUSERMISSINGERROR_ONE_ARGUMENT, ErrorTypeEnum.DATA_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                       "ERR310E", "User is not found", "", "User {0} must be added to the corresponding application with proper user roles."),
+    
+    BeUserInactiveWarning(EPErrorCodesEnum.BEUSERINACTIVEWARNING_ONE_ARGUMENT, ErrorTypeEnum.DATA_ERROR, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
+                                                       "ERR313W", "User is found but in-active", "", "User {0} must be added to the corresponding application with proper user roles."),
+    
+    BeUserAdminPrivilegesInfo(EPErrorCodesEnum.BEUSERADMINPRIVILEGESINFO_ONE_ARGUMENT, ErrorTypeEnum.DATA_ERROR, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
+                                                       "ERR314W", "User is found but don't have administrative privileges", "", "User {0} should be given administrator role for the corresponding application to perform the necessary actions."),
+    
+    BeInvalidJsonInput(EPErrorCodesEnum.BEINVALIDJSONINPUT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                       "ERR405E", "Failed to convert JSON input to object", "", "Please check logs for more information."),
+    
+    BeIncorrectHttpStatusError(EPErrorCodesEnum.BEINCORRECTHTTPSTATUSERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                       "ERR407E", "Communication to an external application is resulted in with Incorrect Http response code", "", "Please check logs for more information."),
+    
+    BeInitializationError(EPErrorCodesEnum.BEINITIALIZATIONERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+                                                       "ERR500E", "ECOMP-PORTAL Back-end was not initialized properly", "", "Please check logs for more information."),
+    
+    BeUebSystemError(EPErrorCodesEnum.BEUEBSYSTEMERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                       "ERR502E", "Error occurred during access to U-EB Server", "Details: {0}.", "An error occurred in {1} distribution mechanism. Please check the logs for more information."),
+    
+    BeDaoSystemError(EPErrorCodesEnum.BEDAOSYSTEMERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+                                                       "ERR505E", "Performing DDL or DML operations on database might have failed", "", "Please check MySQL DB health or look at the logs for more details."),
+    
+    BeSystemError(EPErrorCodesEnum.BESYSTEMERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+                                                       "ERR506E", "Unexpected error during operation", "", "Please check logs for more information."),
+    
+    BeExecuteRollbackError(EPErrorCodesEnum.BEEXECUTEROLLBACKERROR, ErrorTypeEnum.DATA_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                       "ERR507E", "Roll-back operation towards database has failed", "", "Please check MYSQL DB health or look at the logs for more details."),
+    
+    FeHttpLoggingError(EPErrorCodesEnum.FEHTTPLOGGINGERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.ERROR,
+                                                       "ERR517E", "Error when logging FE HTTP request/response", "", "Please check MYSQL DB health or look at the logs for more details."),
+    
+       FePortalServletError(EPErrorCodesEnum.FEPORTALSERVLETERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                               "ERR518E", "Error when trying to access FE Portal page.", "", "Please check logs for more information."),
+       
+    BeDaoCloseSessionError(EPErrorCodesEnum.BEDAOCLOSESESSIONERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                       "ERR519E", "Close local session operation with database failed", "", "Please check MYSQL DB health or look at the logs form more details."),
+    
+    BeRestApiGeneralError(EPErrorCodesEnum.BERESTAPIGENERALERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+                                                       "ERR900E", "Unexpected error during ECOMP-PORTAL Back-end REST API execution", "", "Please check error log for more information."),
+    
+    FeHealthCheckGeneralError(EPErrorCodesEnum.FEHEALTHCHECKGENERALERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.ERROR,
+                                                       "ERR901E", "General error during FE Health Check", "", "Please check error log for more information."),
+    
+    InternalUnexpectedInfo(EPErrorCodesEnum.INTERNALUNEXPECTEDINFO_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.INFORMATIONAL, ErrorSeverityEnum.INFO,
+                                                       "ERR999I", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
+    
+    InternalUnexpectedWarning(EPErrorCodesEnum.INTERNALUNEXPECTEDWARNING_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MINOR, ErrorSeverityEnum.WARN,
+                                                       "ERR999W", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
+    
+    InternalUnexpectedError(EPErrorCodesEnum.INTERNALUNEXPECTEDERROR_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                                                       "ERR999E", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
+    
+    InternalUnexpectedFatal(EPErrorCodesEnum.INTERNALUNEXPECTEDFATAL_ONE_ARGUMENT, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.CRITICAL, ErrorSeverityEnum.FATAL,
+                                                       "ERR999F", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
+    
+    ExternalAuthAccessConnectionError(EPErrorCodesEnum.EXTERNALAUTHACCESS_CONNECTIONERROR, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                       "ERR220E", "AAF Connection problem", "Details: {0}.", "Please check logs for more information."),
+
+    ExternalAuthAccessAuthenticationError(EPErrorCodesEnum.EXTERNALAUTHACCESS_AUTHENTICATIONERROR, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                       "ERR120E", "AAF authentication problem", "Details: {0}.", "Please check logs for more information."),
+    
+    ExternalAuthAccessGeneralError(EPErrorCodesEnum.EXTERNALAUTHACCESS_GENERALERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                       "ERR520E", "Unexpected error", "Details: {0}.", "Please check logs for more information."),
+    
+    SchedulerAccessConnectionError(EPErrorCodesEnum.SCHEDULER_ACCESS_CONNECTIONERROR, ErrorTypeEnum.CONNECTION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                       "ERR240E", "Scheduler Connection problem", "Details: {0}.", "Please check logs for more information."),
+
+    SchedulerAuxAccessAuthenticationError(EPErrorCodesEnum.SCHEDULERAUX_ACCESS_AUTHENTICATIONERROR, ErrorTypeEnum.AUTHENTICATION_PROBLEM, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                       "ERR140E", "SchedulerAux authentication problem", "Details: {0}.", "Please check logs for more information."),
+    
+    SchedulerAccessGeneralError(EPErrorCodesEnum.SCHEDULER_ACCESS_GENERALERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                       "ERR540E", "Unexpected Scheduler error", "Details: {0}.", "Please check logs for more information."),
+    
+    SchedulerInvalidAttributeError(EPErrorCodesEnum.SCHEDULER_INVALID_ATTRIBUTEERROR, ErrorTypeEnum.SYSTEM_ERROR, AlarmSeverityEnum.MAJOR, ErrorSeverityEnum.ERROR,
+                       "ERR515E", "Unable to create Scheduler", "Details: {0}.", "Please check logs for more information."),
+
+       ;
+       
+       ErrorTypeEnum eType;
+       AlarmSeverityEnum alarmSeverity;
+       EPErrorCodesEnum messageCode;
+       ErrorSeverityEnum errorSeverity;
+       String errorCode;
+       String errorDescription;
+       String details;
+       String resolution;
+       
+       EPAppMessagesEnum(EPErrorCodesEnum messageCode, ErrorTypeEnum eType, AlarmSeverityEnum alarmSeverity, ErrorSeverityEnum errorSeverity, String errorCode, String errorDescription,
+                                               String details, String resolution) {
+               this.messageCode = messageCode;
+               this.eType = eType;
+               this.alarmSeverity = alarmSeverity;
+               this.errorSeverity = errorSeverity;
+               this.errorCode = errorCode;
+               this.errorDescription = errorDescription;
+               this.details = details;
+               this.resolution = resolution;
+       }
+       
+       public String getDetails() {
+               return this.details;
+       }
+       
+       public String getResolution() {
+               return this.resolution;
+       }
+       public String getErrorCode() {
+               return this.errorCode;
+       }
+       
+       public String getErrorDescription() {
+               return this.errorDescription;
+       }
+       
+       public ErrorSeverityEnum getErrorSeverity() {
+               return this.errorSeverity;
+       }
+       
+       public void setErrorSeverity(ErrorSeverityEnum errorSeverity) {
+               this.errorSeverity = errorSeverity;
+       }
+       
+       public EPErrorCodesEnum getMessageCode() {
+               return messageCode;
+       }
+
+       public void setMessageCode(EPErrorCodesEnum messageCode) {
+               this.messageCode = messageCode;
+       }
+       
+       public AlarmSeverityEnum getAlarmSeverity() {
+               return alarmSeverity;
+       }
+
+       public void setAlarmSeverity(AlarmSeverityEnum alarmSeverity) {
+               this.alarmSeverity = alarmSeverity;
+       }
+       
+       public ErrorTypeEnum getErrorType() {
+               return eType;
+       }
+
+       public void setErrorType(ErrorTypeEnum eType) {
+               this.eType = eType;
+       }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/logging/format/EPErrorCodesEnum.java b/portal-BE/src/main/java/org/onap/portal/logging/format/EPErrorCodesEnum.java
new file mode 100644 (file)
index 0000000..70f327b
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.logging.format;
+
+import com.att.eelf.i18n.EELFResourceManager;
+
+/**
+ * 
+ * Add ONAP Portal Specific Error Code Enums here, for generic
+ * ones (ones you think are useful not only Portal but also SDK), add it
+ * to the enum class AppMessagesEnum defined in SDK.
+ */
+public enum EPErrorCodesEnum {
+       BERESTAPIAUTHENTICATIONERROR,
+       BEHTTPCONNECTIONERROR_ONE_ARGUMENT,
+       BEUEBAUTHENTICATIONERROR_ONE_ARGUMENT,
+       
+       INTERNALAUTHENTICATIONINFO_ONE_ARGUMENT,
+       INTERNALAUTHENTICATIONWARNING_ONE_ARGUMENT,
+       INTERNALAUTHENTICATIONERROR_ONE_ARGUMENT,
+       INTERNALAUTHENTICATIONFATAL_ONE_ARGUMENT,
+       
+       BEHEALTHCHECKRECOVERY,
+       BEHEALTHCHECKMYSQLRECOVERY,
+       BEHEALTHCHECKUEBCLUSTERRECOVERY,
+       FEHEALTHCHECKRECOVERY,
+       BeHEALTHCHECKERROR,
+       
+       BEHEALTHCHECKMYSQLERROR,
+       BEHEALTHCHECKUEBCLUSTERERROR,
+       FEHEALTHCHECKERROR,
+       BEUEBCONNECTIONERROR_ONE_ARGUMENT,
+       BEUEBUNKOWNHOSTERROR_ONE_ARGUMENT,
+       BEUEBREGISTERONBOARDINGAPPERROR,
+       
+       INTERNALCONNECTIONINFO_ONE_ARGUMENT,
+       INTERNALCONNECTIONWARNING_ONE_ARGUMENT,
+       INTERNALCONNECTIONERROR_ONE_ARGUMENT,
+       INTERNALCONNECTIONFATAL_ONE_ARGUMENT,
+       
+       BEUEBOBJECTNOTFOUNDERROR_ONE_ARGUMENT,
+       BEUSERMISSINGERROR_ONE_ARGUMENT,
+       
+       BEUSERINACTIVEWARNING_ONE_ARGUMENT,
+       BEUSERADMINPRIVILEGESINFO_ONE_ARGUMENT,
+       
+       BEINVALIDJSONINPUT,
+       BEINCORRECTHTTPSTATUSERROR,
+               
+       BEINITIALIZATIONERROR,
+       BEUEBSYSTEMERROR,
+       BEDAOSYSTEMERROR,
+       BESYSTEMERROR,
+       BEEXECUTEROLLBACKERROR,
+       
+       FEHTTPLOGGINGERROR,
+       FEPORTALSERVLETERROR,
+       BEDAOCLOSESESSIONERROR,
+       
+       BERESTAPIGENERALERROR,
+       FEHEALTHCHECKGENERALERROR,
+       
+       INTERNALUNEXPECTEDINFO_ONE_ARGUMENT,
+       INTERNALUNEXPECTEDWARNING_ONE_ARGUMENT,
+       INTERNALUNEXPECTEDERROR_ONE_ARGUMENT,
+       INTERNALUNEXPECTEDFATAL_ONE_ARGUMENT,
+       
+       EXTERNALAUTHACCESS_CONNECTIONERROR,
+       EXTERNALAUTHACCESS_AUTHENTICATIONERROR,
+       EXTERNALAUTHACCESS_GENERALERROR,
+       
+       SCHEDULER_ACCESS_CONNECTIONERROR,
+       SCHEDULERAUX_ACCESS_AUTHENTICATIONERROR,
+       SCHEDULER_ACCESS_GENERALERROR,
+       SCHEDULER_INVALID_ATTRIBUTEERROR,
+       MUSICHEALTHCHECKZOOKEEPERERROR_ONE_ARGUMENT,
+       MUSICHEALTHCHECKCASSANDRAERROR_ONE_ARGUMENT,
+       ;
+       
+       /**
+     * Static initializer to ensure the resource bundles for this class are loaded...
+     * Here this application loads messages from three bundles
+     */
+    static {
+        EELFResourceManager.loadMessageBundle("org/onap/portalapp/portal/logging/format/ApplicationCodes");
+    }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/logging/logic/EPLogUtil.java b/portal-BE/src/main/java/org/onap/portal/logging/logic/EPLogUtil.java
new file mode 100644 (file)
index 0000000..719e73c
--- /dev/null
@@ -0,0 +1,329 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.logging.logic;
+
+import static com.att.eelf.configuration.Configuration.MDC_ALERT_SEVERITY;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import java.text.MessageFormat;
+import org.onap.portalapp.portal.logging.format.EPAppMessagesEnum;
+import org.onap.portalsdk.core.logging.format.AlarmSeverityEnum;
+import org.onap.portalsdk.core.logging.format.ErrorSeverityEnum;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.slf4j.MDC;
+import org.springframework.http.HttpStatus;
+
+public class EPLogUtil {
+
+       // This class has no logger of its own; it uses loggers passed to it.
+       private static EELFLogger errorLogger = EELFManager.getInstance().getErrorLogger();
+
+       /**
+        * Formats and writes a message to the error log with the class name and the
+        * specified parameters, using log level info, warn or error appropriate for
+        * the specified severity
+        * 
+        * @param classLogger
+        *            Logger for the class where the error occurred; the logger
+        *            carries the class name.
+        * @param epMessageEnum
+        *            Enum carrying alarm and error severity
+        * @param param
+        *            Values used to build the message.
+        */
+       public static void logEcompError(EELFLoggerDelegate classLogger, EPAppMessagesEnum epMessageEnum, String... param) {
+               logEcompError(classLogger, epMessageEnum, null, param);
+       }
+
+       /**
+        * Formats and writes a message to the error log with the class name and the
+        * specified parameters, using log level info, warn or error appropriate for
+        * the specified severity
+        * 
+        * @param epMessageEnum
+        *            Enum carrying alarm and error severity
+        * @param param
+        *            Values used to build the message.
+        */
+       public static void logEcompError(EPAppMessagesEnum epMessageEnum, String... param) {
+               try {
+                       AlarmSeverityEnum alarmSeverityEnum = epMessageEnum.getAlarmSeverity();
+                       ErrorSeverityEnum errorSeverityEnum = epMessageEnum.getErrorSeverity();
+
+                       MDC.put(MDC_ALERT_SEVERITY, alarmSeverityEnum.severity());
+                       MDC.put("ErrorCode", epMessageEnum.getErrorCode());
+                       MDC.put("ErrorDescription", epMessageEnum.getErrorDescription());
+                       MDC.put("ClassName", EPLogUtil.class.getName());
+
+                       String resolution = EPLogUtil
+                                       .formatMessage(epMessageEnum.getDetails() + " " + epMessageEnum.getResolution(), (Object[]) param);
+                       if (errorSeverityEnum == ErrorSeverityEnum.WARN) {
+                               errorLogger.warn(resolution);
+                       } else if (errorSeverityEnum == ErrorSeverityEnum.INFO) {
+                               errorLogger.info(resolution);
+                       } else {
+                               errorLogger.error(resolution);
+                       }
+               } catch (Exception e) {
+                       errorLogger.error("logEcompError failed", e);
+               } finally {
+                       MDC.remove("ErrorCode");
+                       MDC.remove("ErrorDescription");
+                       MDC.remove("ClassName");
+                       MDC.remove(MDC_ALERT_SEVERITY);
+               }
+       }
+
+       /**
+        * Formats and writes a message to the error log with the class name,
+        * throwable and the specified parameters, using log level info, warn or
+        * error appropriate for the specified severity
+        * 
+        * @param classLogger
+        *            Logger for the class where the error occurred; the logger
+        *            carries the class name.
+        * @param epMessageEnum
+        *            Enum carrying alarm and error severity
+        * @param th
+        *            Throwable; ignored if null
+        * @param param
+        *            Array of Strings used to build the message.
+        */
+       @SuppressWarnings("static-access")
+       public static void logEcompError(EELFLoggerDelegate classLogger, EPAppMessagesEnum epMessageEnum, Throwable th,
+                       String... param) {
+
+               AlarmSeverityEnum alarmSeverityEnum = epMessageEnum.getAlarmSeverity();
+               ErrorSeverityEnum errorSeverityEnum = epMessageEnum.getErrorSeverity();
+
+               MDC.put(MDC_ALERT_SEVERITY, alarmSeverityEnum.severity());
+               MDC.put("ErrorCode", epMessageEnum.getErrorCode());
+               MDC.put("ErrorDescription", epMessageEnum.getErrorDescription());
+
+               final String message = EPLogUtil.formatMessage(epMessageEnum.getDetails() + " " + epMessageEnum.getResolution(),
+                               (Object[]) param);
+               if (errorSeverityEnum == ErrorSeverityEnum.INFO) {
+                       if (th == null)
+                               classLogger.info(classLogger.errorLogger, message);
+                       else
+                               classLogger.info(classLogger.errorLogger, message, th);
+               } else if (errorSeverityEnum == ErrorSeverityEnum.WARN) {
+                       if (th == null)
+                               classLogger.warn(classLogger.errorLogger, message);
+                       else
+                               classLogger.warn(classLogger.errorLogger, message, th);
+               } else {
+                       if (th == null)
+                               classLogger.error(classLogger.errorLogger, message);
+                       else
+                               classLogger.error(classLogger.errorLogger, message, th);
+               }
+
+               // Clean up
+               MDC.remove(MDC_ALERT_SEVERITY);
+               MDC.remove("ErrorCode");
+               MDC.remove("ErrorDescription");
+       }
+
+       /**
+        * Builds a string using the format and parameters.
+        * 
+        * @param message
+        * @param args
+        * @return
+        */
+       private static String formatMessage(String message, Object... args) {
+               StringBuilder sbFormattedMessage = new StringBuilder();
+               if (args != null && args.length > 0 && message != null && message != "") {
+                       MessageFormat mf = new MessageFormat(message);
+                       sbFormattedMessage.append(mf.format(args));
+               } else {
+                       sbFormattedMessage.append(message);
+               }
+               return sbFormattedMessage.toString();
+       }
+
+       /**
+        * Builds a comma-separated string of values to document a user action.
+        * 
+        * @param action
+        *            String
+        * @param activity
+        *            String
+        * @param userId
+        *            String
+        * @param affectedId
+        *            String
+        * @param comment
+        *            String
+        * @return Value suitable for writing to the audit log file.
+        */
+       public static String formatAuditLogMessage(String action, String activity, String userId, String affectedId,
+                       String comment) {
+               StringBuilder auditLogMsg = new StringBuilder();
+               auditLogMsg.append("Click_A:[");
+               if (action != null && !action.equals("")) {
+                       auditLogMsg.append(" Action: ");
+                       auditLogMsg.append(action);
+               }
+
+               if (activity != null && !activity.equals("")) {
+                       auditLogMsg.append(",Activity CD: ");
+                       auditLogMsg.append(activity);
+               }
+
+               if (userId != null && !userId.equals("")) {
+                       auditLogMsg.append(",User ID: ");
+                       auditLogMsg.append(userId);
+               }
+
+               if (affectedId != null && !affectedId.equals("")) {
+                       auditLogMsg.append(",Affected ID: ");
+                       auditLogMsg.append(affectedId);
+               }
+
+               if (comment != null && !comment.equals("")) {
+                       auditLogMsg.append(",Comment: ");
+                       auditLogMsg.append(comment);
+               }
+               auditLogMsg.append("]");
+               return auditLogMsg.toString();
+       }
+
+       /**
+        * Builds a comma-separated string of values to document a user browser
+        * action.
+        * 
+        * @param orgUserId
+        *            String
+        * @param appName
+        *            String
+        * @param action
+        *            String
+        * @param activity
+        *            String
+        * @param actionLink
+        *            String
+        * @param page
+        *            String
+        * @param function
+        *            String
+        * @param type
+        *            String
+        * @return String value suitable for writing to the audit log file.
+        */
+       public static String formatStoreAnalyticsAuditLogMessage(String orgUserId, String appName, String action,
+                       String activity, String actionLink, String page, String function, String type) {
+               StringBuilder auditLogStoreAnalyticsMsg = new StringBuilder();
+               auditLogStoreAnalyticsMsg.append("Click_Analytics:[");
+               if (orgUserId != null && !orgUserId.equals("")) {
+                       auditLogStoreAnalyticsMsg.append(" Organization User ID: ");
+                       auditLogStoreAnalyticsMsg.append(orgUserId);
+               }
+
+               if (appName != null && !appName.equals("")) {
+                       auditLogStoreAnalyticsMsg.append(",AppName: ");
+                       auditLogStoreAnalyticsMsg.append(appName);
+               }
+
+               if (action != null && !action.equals("")) {
+                       auditLogStoreAnalyticsMsg.append(",Action: ");
+                       auditLogStoreAnalyticsMsg.append(action);
+               }
+
+               if (activity != null && !activity.equals("")) {
+                       auditLogStoreAnalyticsMsg.append(",Activity: ");
+                       auditLogStoreAnalyticsMsg.append(activity);
+               }
+
+               if (actionLink != null && !actionLink.equals("")) {
+                       auditLogStoreAnalyticsMsg.append(",ActionLink: ");
+                       auditLogStoreAnalyticsMsg.append(actionLink);
+               }
+
+               if (page != null && !page.equals("")) {
+                       auditLogStoreAnalyticsMsg.append(",Page: ");
+                       auditLogStoreAnalyticsMsg.append(page);
+               }
+
+               if (function != null && !function.equals("")) {
+                       auditLogStoreAnalyticsMsg.append(",Function: ");
+                       auditLogStoreAnalyticsMsg.append(function);
+               }
+
+               if (type != null && !type.equals("")) {
+                       auditLogStoreAnalyticsMsg.append(",Type: ");
+                       auditLogStoreAnalyticsMsg.append(type);
+               }
+               auditLogStoreAnalyticsMsg.append("]");
+               return auditLogStoreAnalyticsMsg.toString();
+       }
+
+       public static void logExternalAuthAccessAlarm(EELFLoggerDelegate logger, HttpStatus res) {
+               if (res.equals(HttpStatus.UNAUTHORIZED) || res.equals(HttpStatus.FORBIDDEN)) {
+                       EPLogUtil.logEcompError(logger, EPAppMessagesEnum.ExternalAuthAccessAuthenticationError);
+               } else if (res.equals(HttpStatus.NOT_FOUND) || res.equals(HttpStatus.NOT_ACCEPTABLE)
+                               || res.equals(HttpStatus.CONFLICT) || res.equals(HttpStatus.BAD_REQUEST)) {
+                       EPLogUtil.logEcompError(logger, EPAppMessagesEnum.ExternalAuthAccessConnectionError);
+               } else if (!res.equals(HttpStatus.ACCEPTED) && !res.equals(HttpStatus.OK)) {
+                       EPLogUtil.logEcompError(logger, EPAppMessagesEnum.ExternalAuthAccessGeneralError);
+               }
+       }
+
+       public static void schedulerAccessAlarm(EELFLoggerDelegate logger, int res) {
+               if (res == HttpStatus.UNAUTHORIZED.value() || res == HttpStatus.FORBIDDEN.value()) {
+                       EPLogUtil.logEcompError(logger, EPAppMessagesEnum.SchedulerAuxAccessAuthenticationError);
+               } else if (res == HttpStatus.NOT_FOUND.value() || res == HttpStatus.NOT_ACCEPTABLE.value()
+                               || res == HttpStatus.CONFLICT.value() || res == HttpStatus.BAD_REQUEST.value()
+                               || res == HttpStatus.REQUEST_TIMEOUT.value()||res==HttpStatus.INTERNAL_SERVER_ERROR.value()) {
+                       EPLogUtil.logEcompError(logger, EPAppMessagesEnum.SchedulerAccessConnectionError);
+               } else if (res == HttpStatus.PRECONDITION_FAILED.value() || res == HttpStatus.EXPECTATION_FAILED.value()) {
+                       EPLogUtil.logEcompError(logger, EPAppMessagesEnum.SchedulerInvalidAttributeError);
+               } else if (res != HttpStatus.ACCEPTED.value() && res != HttpStatus.OK.value()
+                               && res != HttpStatus.NO_CONTENT.value()) {
+                       EPLogUtil.logEcompError(logger, EPAppMessagesEnum.SchedulerAccessGeneralError);
+               } else {
+                       logger.error(EELFLoggerDelegate.errorLogger, "Other SchedulerErrors failed", res);
+               }
+       }
+
+}