From c46ebbb0f011a1587c3fe506c5029ce550b07ed2 Mon Sep 17 00:00:00 2001 From: "Smokowski, Kevin (ks6305)" Date: Thu, 5 Mar 2020 15:30:45 +0000 Subject: update sliapi-springboot add sample log4j2 config for spring boot sli api Issue-ID: CCSDK-2161 Signed-off-by: Smokowski, Kevin (ks6305) Change-Id: If24315ad6cad1061d1e65e080f4122605b05df47 --- sliapi/springboot/pom.xml | 21 ++- .../onap/ccsdk/sli/core/sliapi/springboot/App.java | 20 +++ .../controllers/ExecuteGraphController.java | 24 +++- .../controllers/swagger/RestconfApiController.java | 20 +++ .../sliapi/springboot/core/ServletFilters.java | 42 ++++++ .../sliapi/springboot/core/SvcLogicFactory.java | 20 +++ .../sli/core/sliapi/springboot/core/WebConfig.java | 43 ++++++ .../src/main/resources/log4j2.properties | 160 +++++++++++++++++++++ .../springboot/RestconfApiControllerTest.java | 20 +++ 9 files changed, 365 insertions(+), 5 deletions(-) create mode 100644 sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/ServletFilters.java create mode 100644 sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/WebConfig.java create mode 100644 sliapi/springboot/src/main/resources/log4j2.properties diff --git a/sliapi/springboot/pom.xml b/sliapi/springboot/pom.xml index dc2c16d6b..6bdb1395f 100644 --- a/sliapi/springboot/pom.xml +++ b/sliapi/springboot/pom.xml @@ -28,7 +28,17 @@ org.springframework.boot spring-boot-starter-web - + + + org.springframework.boot + spring-boot-starter-logging + + + + + org.springframework.boot + spring-boot-starter-log4j2 + org.springframework.boot spring-boot-starter-test @@ -78,6 +88,15 @@ junit junit test + + + org.onap.logging-analytics + logging-filter-spring + 1.6.4 + + + javax.ws.rs + javax.ws.rs-api diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java index 941c1d518..67f549145 100644 --- a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java +++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java @@ -1,3 +1,23 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - CCSDK + * ================================================================================ + * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed 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. + * ============LICENSE_END========================================================= + */ + package org.onap.ccsdk.sli.core.sliapi.springboot; import org.springframework.boot.SpringApplication; diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/ExecuteGraphController.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/ExecuteGraphController.java index efdefbd6f..809cfe59c 100644 --- a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/ExecuteGraphController.java +++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/ExecuteGraphController.java @@ -1,3 +1,23 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - CCSDK + * ================================================================================ + * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed 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. + * ============LICENSE_END========================================================= + */ + package org.onap.ccsdk.sli.core.sliapi.springboot.controllers; import java.util.HashMap; @@ -25,14 +45,10 @@ import com.google.gson.JsonParser; public class ExecuteGraphController { @Autowired protected SvcLogicServiceBase svc; - private static final Logger LOGGER = LoggerFactory.getLogger(ExecuteGraphController.class); @RequestMapping(value = "/executeGraph", method = RequestMethod.POST) @ResponseBody public HashMap executeGraph(@RequestBody String input) { - LOGGER.error("In request"); - LOGGER.error(input); - HashMap hash = new HashMap(); Properties parms = new Properties(); diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/swagger/RestconfApiController.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/swagger/RestconfApiController.java index 10442d432..2972cd791 100644 --- a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/swagger/RestconfApiController.java +++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/swagger/RestconfApiController.java @@ -1,3 +1,23 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - CCSDK + * ================================================================================ + * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed 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. + * ============LICENSE_END========================================================= + */ + package org.onap.ccsdk.sli.core.sliapi.springboot.controllers.swagger; import java.util.Map; diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/ServletFilters.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/ServletFilters.java new file mode 100644 index 000000000..c56cf3bf1 --- /dev/null +++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/ServletFilters.java @@ -0,0 +1,42 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - CCSDK + * ================================================================================ + * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.core.sliapi.springboot.core; + +import javax.servlet.ServletException; + +import org.onap.logging.filter.base.PayloadLoggingServletFilter; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class ServletFilters { + + @Bean + public FilterRegistrationBean payloadFilterRegistration() throws ServletException { + FilterRegistrationBean registration = new FilterRegistrationBean(); + registration.setFilter(new PayloadLoggingServletFilter()); + registration.addUrlPatterns("/*"); + registration.setName("payloadFilter"); + registration.setOrder(0); + return registration; + } +} \ No newline at end of file diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/SvcLogicFactory.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/SvcLogicFactory.java index f39fc229c..a6bda81ae 100644 --- a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/SvcLogicFactory.java +++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/SvcLogicFactory.java @@ -1,3 +1,23 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - CCSDK + * ================================================================================ + * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed 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. + * ============LICENSE_END========================================================= + */ + package org.onap.ccsdk.sli.core.sliapi.springboot.core; import java.io.FileInputStream; diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/WebConfig.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/WebConfig.java new file mode 100644 index 000000000..fb4fe0858 --- /dev/null +++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/WebConfig.java @@ -0,0 +1,43 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - CCSDK + * ================================================================================ + * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.core.sliapi.springboot.core; + +import org.onap.logging.filter.spring.LoggingInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@EnableWebMvc +@Configuration +public class WebConfig implements WebMvcConfigurer { + + @Bean + LoggingInterceptor loggingInterceptor() { + return new LoggingInterceptor(); + } + + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(loggingInterceptor()); // handles audit log entries + } + +} \ No newline at end of file diff --git a/sliapi/springboot/src/main/resources/log4j2.properties b/sliapi/springboot/src/main/resources/log4j2.properties new file mode 100644 index 000000000..40d18d157 --- /dev/null +++ b/sliapi/springboot/src/main/resources/log4j2.properties @@ -0,0 +1,160 @@ + #- + # ============LICENSE_START======================================================= + # ONAP - CCSDK + # ================================================================================ + # Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + # ================================================================================ + # Licensed 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. + # ============LICENSE_END========================================================= + # + +property.logDir = ${sys:LOG_PATH:-./target} + +property.pattern = %d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{currentGraph} - %X{nodeId} | %m%n + +#default mdc values +property.ServiceName = INTERNAL +property.ErrorCode = 900 +property.ErrorDesc = UnknownError + +rootLogger.level = INFO +rootLogger.appenderRef.AppFile.ref = AppFile +rootLogger.appenderRef.Console.ref = Console +rootLogger.appenderRef.DebugFile.ref = DebugFile +rootLogger.appenderRef.ErrorFile.ref = ErrorFile +rootLogger.appenderRef.Console.filter.threshold.type = ThresholdFilter +rootLogger.appenderRef.Console.filter.threshold.level = DEBUG + +appender.console.type = Console +appender.console.name = Console +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = ${pattern} + +appender.app.type = RollingRandomAccessFile +appender.app.name = AppFile +appender.app.fileName = ${logDir}/app.log +appender.app.filePattern = ${logDir}/app.log.%i +appender.app.immediateFlush = true +appender.app.append = true +appender.app.layout.type = PatternLayout +appender.app.layout.pattern = ${pattern} +appender.app.policies.type = Policies +appender.app.policies.size.type = SizeBasedTriggeringPolicy +appender.app.policies.size.size = 10MB +appender.app.strategy.type = DefaultRolloverStrategy +appender.app.strategy.max = 100 +appender.app.strategy.fileIndex = min + +appender.debug.type = RollingRandomAccessFile +appender.debug.name = DebugFile +appender.debug.fileName = ${logDir}/debug.log +appender.debug.filePattern = ${logDir}/debug.log.%i +appender.debug.immediateFlush = true +appender.debug.append = true +appender.debug.layout.type = PatternLayout +appender.debug.layout.pattern = %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestID}|%-16.16t|%-5.5p|%-32.32c{1}|%X{currentGraph} - %X{nodeId}|%m%n +appender.debug.policies.type = Policies +appender.debug.policies.size.type = SizeBasedTriggeringPolicy +appender.debug.policies.size.size = 10MB +appender.debug.strategy.type = DefaultRolloverStrategy +appender.debug.strategy.max = 200 +appender.debug.strategy.fileIndex = min + +appender.error.type = RollingRandomAccessFile +appender.error.name = ErrorFile +appender.error.fileName = ${logDir}/error.log +appender.error.filePattern = ${logDir}/error.log.%i +appender.error.immediateFlush = true +appender.error.append = true +appender.error.layout.type = PatternLayout +appender.error.layout.pattern = %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestID}|%-16.16t|$${ctx:ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%p|$${ctx:ErrorCode}|$${ctx:ErrorDesc}|%m%n + +appender.error.policies.type = Policies +appender.error.policies.size.type = SizeBasedTriggeringPolicy +appender.error.policies.size.size = 10MB +appender.error.strategy.type = DefaultRolloverStrategy +appender.error.strategy.max = 100 +appender.error.strategy.fileIndex = min +appender.error.filter.threshold.type = ThresholdFilter +appender.error.filter.threshold.level = WARN + +appender.metric.type = RollingRandomAccessFile +appender.metric.name = MetricFile +appender.metric.fileName = ${logDir}/metric.log +appender.metric.filePattern = ${logDir}/metric.log.%i +appender.metric.immediateFlush = true +appender.metric.append = true +appender.metric.layout.type = PatternLayout +appender.metric.layout.pattern=%X{InvokeTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%-16.16t|%X{ServerFQDN}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceID}|%p|%X{Severity}|192.168.23.111|%X{ElapsedTime}|${hostName}|%X{ClientIPAddress}|%C{1}|||%X{TargetElement}|%markerSimpleName|%X|%X{currentGraph} - %X{nodeId}||%m%n +appender.metric.policies.type = Policies +appender.metric.policies.size.type = SizeBasedTriggeringPolicy +appender.metric.policies.size.size = 10MB +appender.metric.strategy.type = DefaultRolloverStrategy +appender.metric.strategy.max = 100 +appender.metric.strategy.fileIndex = min + +appender.audit.type = RollingRandomAccessFile +appender.audit.name = AuditFile +appender.audit.fileName = ${logDir}/audit.log +appender.audit.filePattern = ${logDir}/audit.log.%i +appender.audit.immediateFlush = true +appender.audit.append = true +appender.audit.layout.type = PatternLayout +appender.audit.layout.pattern=%X{EntryTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%-16.16t|%X{ServerFQDN}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceID}|INFO|%X{Severity}|192.168.23.111|%X{ElapsedTime}|${hostName}|%X{ClientIPAddress}|%C{1}|%X{AUDIT-Unused}|%X{AUDIT-ProcessKey}|%markerSimpleName|%X|||%m%n +appender.audit.policies.type = Policies +appender.audit.policies.size.type = SizeBasedTriggeringPolicy +appender.audit.policies.size.size = 10MB +appender.audit.strategy.type = DefaultRolloverStrategy +appender.audit.strategy.max = 200 +appender.audit.strategy.fileIndex = min + +appender.rr.name = RequestResponseFile +appender.rr.type = RollingRandomAccessFile +appender.rr.fileName = ${logDir}/request-response.log +appender.rr.filePattern = ${logDir}/request-response.log.%i +appender.rr.immediateFlush = true +appender.rr.append = true +appender.rr.layout.type = PatternLayout +appender.rr.layout.pattern = %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestID}|%X{PartnerName}|%m%n +appender.rr.policies.type = Policies +appender.rr.policies.size.type = SizeBasedTriggeringPolicy +appender.rr.policies.size.size = 10MB +appender.rr.strategy.type = DefaultRolloverStrategy +appender.rr.strategy.max = 100 +appender.rr.strategy.fileIndex = min + +logger.metric.name = org.onap.ccsdk.sli.core.filters.metric +logger.metric.level = INFO +logger.metric.additivity = false +logger.metric.appenderRef.MetricFile.ref = MetricFile + +logger.metric2.name = org.onap.logging.filter.base.AbstractMetricLogFilter +logger.metric2.level = INFO +logger.metric2.additivity = false +logger.metric2.appenderRef.MetricFile.ref = MetricFile + +logger.audit.name = org.onap.logging.filter.base.AbstractAuditLogFilter +logger.audit.level = INFO +logger.audit.additivity = false +logger.audit.appenderRef.AuditFile.ref = AuditFile + +logger.rr.name = org.onap.logging.filter.base.PayloadLoggingServletFilter +logger.rr.level = INFO +logger.rr.additivity = false +logger.rr.appenderRef.RequestResponseFile.ref = RequestResponseFile + +logger.ccsdk.name = org.onap.ccsdk +logger.ccsdk.level = DEBUG + +logger.onaplogging.name = org.onap.logging +logger.onaplogging.level = DEBUG \ No newline at end of file diff --git a/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/RestconfApiControllerTest.java b/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/RestconfApiControllerTest.java index e34d11877..a61a470ed 100644 --- a/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/RestconfApiControllerTest.java +++ b/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/RestconfApiControllerTest.java @@ -1,3 +1,23 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - CCSDK + * ================================================================================ + * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed 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. + * ============LICENSE_END========================================================= + */ + package org.onap.ccsdk.sli.core.sliapi.springboot; import static org.junit.Assert.assertEquals; -- cgit 1.2.3-korg