diff options
author | Avdhut Kholkar <avdhut.kholkar@amdocs.com> | 2018-07-12 05:34:37 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2018-07-12 05:34:37 +0000 |
commit | af1410de64d463905dd6deee62efdd88ff616ce8 (patch) | |
tree | 01b7286bfd927f34481bab8a4b4920a6a0407e48 /reference/logging-demo/src | |
parent | 1ec5963cd18cd70b6aabe5fe70ab3734dd9f3307 (diff) | |
parent | 9eee6ac9daa5b82946b4f7c7eaa817ae3e1f4cab (diff) |
Merge "logging library use and k8s"
Diffstat (limited to 'reference/logging-demo/src')
8 files changed, 170 insertions, 15 deletions
diff --git a/reference/logging-demo/src/main/java/org/onap/demo/logging/ApplicationService.java b/reference/logging-demo/src/main/java/org/onap/demo/logging/ApplicationService.java index d0355df..d6329e2 100644 --- a/reference/logging-demo/src/main/java/org/onap/demo/logging/ApplicationService.java +++ b/reference/logging-demo/src/main/java/org/onap/demo/logging/ApplicationService.java @@ -20,14 +20,23 @@ */ package org.onap.demo.logging; +import javax.servlet.http.HttpServletRequest; + +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @Service("daoFacade") +/** + * Run with http://localhost:8080/logging-demo/rest/health/health + * + */ public class ApplicationService implements ApplicationServiceLocal { @Override - public Boolean health() { + public Boolean health(HttpServletRequest servletRequest) { Boolean health = true; // TODO: check database + // Log outside the AOP framework - to simulate existing component logs between the ENTRY/EXIT markers + LoggerFactory.getLogger(this.getClass()).info("Running /health"); return health; } diff --git a/reference/logging-demo/src/main/java/org/onap/demo/logging/ApplicationServiceLocal.java b/reference/logging-demo/src/main/java/org/onap/demo/logging/ApplicationServiceLocal.java index ac585fb..e2cd5b7 100644 --- a/reference/logging-demo/src/main/java/org/onap/demo/logging/ApplicationServiceLocal.java +++ b/reference/logging-demo/src/main/java/org/onap/demo/logging/ApplicationServiceLocal.java @@ -20,6 +20,8 @@ */ package org.onap.demo.logging; +import javax.servlet.http.HttpServletRequest; + public interface ApplicationServiceLocal { - Boolean health(); + Boolean health(HttpServletRequest request); } diff --git a/reference/logging-demo/src/main/java/org/onap/demo/logging/LoggingAspect.java b/reference/logging-demo/src/main/java/org/onap/demo/logging/LoggingAspect.java new file mode 100644 index 0000000..2901ce1 --- /dev/null +++ b/reference/logging-demo/src/main/java/org/onap/demo/logging/LoggingAspect.java @@ -0,0 +1,55 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.logging + * ================================================================================ + * Copyright © 2018 Amdocs + * 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.demo.logging; + +import javax.servlet.http.HttpServletRequest; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.After; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.onap.logging.ref.slf4j.ONAPLogAdapter; +import org.slf4j.LoggerFactory; + +@Aspect +public class LoggingAspect { + + @Before("execution(* org.onap.demo.logging.*.*(..))") + public void logBefore(JoinPoint joinPoint) { + Object[] args = joinPoint.getArgs(); + Object servletRequest = args[0]; + ONAPLogAdapter.HttpServletRequestAdapter requestAdapter = + new ONAPLogAdapter.HttpServletRequestAdapter((HttpServletRequest)servletRequest); + final ONAPLogAdapter adapter = new ONAPLogAdapter( + LoggerFactory.getLogger(joinPoint.getTarget().getClass())); + try { + adapter.entering(requestAdapter); + } finally { + } + } + + @After("execution(* org.onap.demo.logging.*.*(..))") + public void logAfter(JoinPoint joinPoint) { + final ONAPLogAdapter adapter = new ONAPLogAdapter( + LoggerFactory.getLogger(joinPoint.getTarget().getClass())); + adapter.exiting(); + } +} diff --git a/reference/logging-demo/src/main/java/org/onap/demo/logging/RestHealthServiceImpl.java b/reference/logging-demo/src/main/java/org/onap/demo/logging/RestHealthServiceImpl.java index 33e3874..bcc4efb 100644 --- a/reference/logging-demo/src/main/java/org/onap/demo/logging/RestHealthServiceImpl.java +++ b/reference/logging-demo/src/main/java/org/onap/demo/logging/RestHealthServiceImpl.java @@ -21,16 +21,21 @@ package org.onap.demo.logging; import javax.inject.Inject; +import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Application; +import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import org.springframework.beans.factory.annotation.Qualifier; @Path("/health") public class RestHealthServiceImpl extends Application { + + @Context private HttpServletRequest servletRequest; + @Inject @Qualifier("daoFacade") private ApplicationServiceLocal applicationServiceLocal; @@ -39,7 +44,8 @@ public class RestHealthServiceImpl extends Application { @Path("/health") @Produces(MediaType.TEXT_HTML) public String getHealth() { - return applicationServiceLocal.health().toString(); + + return applicationServiceLocal.health(servletRequest).toString(); } } diff --git a/reference/logging-demo/src/main/java/org/onap/demo/logging/RestServiceImpl.java b/reference/logging-demo/src/main/java/org/onap/demo/logging/RestServiceImpl.java index 9dfe884..fe13f0c 100644 --- a/reference/logging-demo/src/main/java/org/onap/demo/logging/RestServiceImpl.java +++ b/reference/logging-demo/src/main/java/org/onap/demo/logging/RestServiceImpl.java @@ -31,19 +31,20 @@ import org.springframework.beans.factory.annotation.Qualifier; @Path("/read") public class RestServiceImpl extends Application { - @Inject - @Qualifier("daoFacade") + @Inject + @Qualifier("daoFacade") private ApplicationServiceLocal applicationServiceLocal; - - @GET - @Path("/test") - @Produces(MediaType.TEXT_HTML) - public String getTest() { - return "testing: " + applicationServiceLocal; - } - private ApplicationServiceLocal getApplicationService() { - return applicationServiceLocal; - } + @GET + @Path("/test") + @Produces(MediaType.TEXT_HTML) + public String getTest() { + return "testing: " + applicationServiceLocal; + + } + + private ApplicationServiceLocal getApplicationService() { + return applicationServiceLocal; + } } diff --git a/reference/logging-demo/src/main/resources/logback.xml b/reference/logging-demo/src/main/resources/logback.xml new file mode 100644 index 0000000..71d41e4 --- /dev/null +++ b/reference/logging-demo/src/main/resources/logback.xml @@ -0,0 +1,32 @@ +<configuration> + <property name="p_tim" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}"/> + <property name="p_lvl" value="%level"/> + <property name="p_log" value="%logger"/> + <property name="p_mdc" value="%replace(%replace(%mdc){'\t','\\\\t'}){'\n', '\\\\n'}"/> + <property name="p_msg" value="%replace(%replace(%msg){'\t', '\\\\t'}){'\n','\\\\n'}"/> + <property name="p_exc" value="%replace(%replace(%rootException){'\t', '\\\\t'}){'\n','\\\\n'}"/> + <property name="p_mak" value="%replace(%replace(%marker){'\t', '\\\\t'}){'\n','\\\\n'}"/> + <property name="p_thr" value="%thread"/> + <property name="pattern" value="%nopexception${p_tim}\t${p_thr}\t${p_lvl}\t${p_log}\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t%n"/> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + + <appender name="FILE" class="ch.qos.logback.core.FileAppender"> + <file>output.log</file> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender> + + <logger level="INFO" name="org.onap.logging.ref.slf4j" additivity="false"> + <appender-ref ref="STDOUT" /> + <appender-ref ref="FILE" /> + </logger> + + <root level="INFO"> + <appender-ref ref="STDOUT" /> + </root> +</configuration> diff --git a/reference/logging-demo/src/main/webapp/WEB-INF/spring.xml b/reference/logging-demo/src/main/webapp/WEB-INF/spring.xml index 32d1235..2b4d585 100644 --- a/reference/logging-demo/src/main/webapp/WEB-INF/spring.xml +++ b/reference/logging-demo/src/main/webapp/WEB-INF/spring.xml @@ -34,6 +34,11 @@ </context:component-scan> <!-- Rest controllers --> <context:component-scan base-package="org.onap.demo.logging" /> + <!-- enable logging AOP proxies --> + <aop:aspectj-autoproxy /> + <beans> + <bean class="org.onap.demo.logging.LoggingAspect" /> <!-- required even though we annotate with @Aspect --> + </beans> </beans> diff --git a/reference/logging-demo/src/test/java/org/onap/logging/demo/ApplicationServiceTest.java b/reference/logging-demo/src/test/java/org/onap/logging/demo/ApplicationServiceTest.java new file mode 100644 index 0000000..aab2ba7 --- /dev/null +++ b/reference/logging-demo/src/test/java/org/onap/logging/demo/ApplicationServiceTest.java @@ -0,0 +1,45 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.logging + * ================================================================================ + * Copyright © 2018 Amdocs + * 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.logging.demo; + +import static org.junit.Assert.*; + +import javax.servlet.http.HttpServletRequest; + +import org.junit.Test; +import org.onap.demo.logging.ApplicationService; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.util.Assert; + +public class ApplicationServiceTest { + + @Test + public final void testHealth() { + ApplicationService service = new ApplicationService(); + Assert.notNull(service); + HttpServletRequest servletRequest = new MockHttpServletRequest(); + Assert.notNull(servletRequest); + boolean health = service.health(servletRequest); + Assert.isTrue(health); + System.out.println("health : " + health); + } + +} |