Skip to content

Commit 42f01f9

Browse files
pranav-patilPranav Patil
authored and
Pranav Patil
committed
Adding Elastic logging service and logback config to services
1 parent d4314a7 commit 42f01f9

26 files changed

+1387
-228
lines changed

data-service/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,5 @@ Optionally **spring.profiles.active** can be passed with value **production** wh
2828

2929
### Notes
3030

31+
* [Install MongoDB Shell](/../readme/Mongo_Shell.md) to view the collections and records within MongoDB database.
3132
* Data service uses [MapStruct](http://mapstruct.org/) for mapping between domain object to DTO object. MapStruct requires [mapstruct-processor](https://github.com/mapstruct/mapstruct) to be configured in gradle to generate the corresponding Mapper implementation for defined MapStruct interface. Hence it is highly recommended to **run gradle build before running data-service** to avoid Spring NoSuchBeanDefinitionException for MapStruct autowirings.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# ----------------------------------------
2+
# Gradle Project Properties
3+
# ----------------------------------------
4+
5+
info.build.version=${version?:1.0}
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,45 @@
1-
2-
spring:
3-
application:
4-
name: data-service
5-
data:
6-
mongodb:
7-
host: 127.0.0.1
8-
port: 27017
9-
database: testdb
10-
datasource:
11-
driver-class-name: org.h2.Driver
12-
url: jdbc:h2:mem:localhost;DB_CLOSE_ON_EXIT=FALSE
13-
username: admin
14-
password:
15-
batch:
16-
initialize-schema: always
17-
18-
server:
19-
port: 8300
20-
21-
eureka:
22-
client:
23-
registerWithEureka: true
24-
fetchRegistry: true
25-
serviceUrl:
26-
defaultZone: http://localhost:8302/eureka
27-
instance:
28-
hostname: localhost
29-
30-
---
31-
spring:
32-
profiles: production
33-
data:
34-
mongodb:
35-
host: mongodb-service
36-
port: 27017
37-
database: testdb
38-
username: appuser
39-
password: test123
1+
2+
spring:
3+
application:
4+
name: data-service
5+
data:
6+
mongodb:
7+
host: 127.0.0.1
8+
port: 27017
9+
database: testdb
10+
datasource:
11+
driver-class-name: org.h2.Driver
12+
url: jdbc:h2:mem:localhost;DB_CLOSE_ON_EXIT=FALSE
13+
username: admin
14+
password:
15+
batch:
16+
initialize-schema: always
17+
18+
server:
19+
port: 8300
20+
21+
eureka:
22+
client:
23+
registerWithEureka: true
24+
fetchRegistry: true
25+
serviceUrl:
26+
defaultZone: http://localhost:8302/eureka
27+
instance:
28+
hostname: localhost
29+
30+
logstash:
31+
host: localhost
32+
33+
---
34+
spring:
35+
profiles: production
36+
data:
37+
mongodb:
38+
host: mongodb-service
39+
port: 27017
40+
database: testdb
41+
username: appuser
42+
password: test123
43+
44+
logstash:
45+
host: logstash-service
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,86 @@
1-
<?xml version="1.0" encoding="UTF-8"?>
2-
<configuration debug="false" scan="true">
3-
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
4-
<springProperty scope="context" name="applicationName" source="spring.application.name"/>
5-
<property name="FILE_LOG_PATTERN"
6-
value="%d{yyyy-MM-dd HH:mm:ss.SSS} -- [${applicationName}] -- %5p ${PID:- } --- [%t] [%X{sessionId}] %-40.40logger{39} : %m%n%wex"/>
7-
8-
<property name="CONSOLE_LOG_PATTERN"
9-
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([${applicationName:-}]){yellow} %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
10-
11-
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
12-
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
13-
<level>INFO</level>
14-
</filter>
15-
<encoder>
16-
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
17-
<charset>utf8</charset>
18-
</encoder>
19-
</appender>
20-
21-
<root level="TRACE">
22-
<appender-ref ref="console"/>
23-
</root>
24-
25-
</configuration>
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration debug="false" scan="true">
3+
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
4+
<springProperty scope="context" name="applicationName" source="spring.application.name"/>
5+
<springProperty scope="context" name="applicationVersion" source="info.build.version"/>
6+
<springProperty scope="context" name="logstashHost" source="logstash.host"/>
7+
<springProperty scope="context" name="environment" source="spring.profiles.active"/>
8+
9+
<property name="FILE_LOG_PATTERN"
10+
value="%d{yyyy-MM-dd HH:mm:ss.SSS} -- [${applicationName}] -- %5p ${PID:- } --- [%t] [%X{sessionId}] %-40.40logger{39} : %m%n%wex"/>
11+
12+
<property name="CONSOLE_LOG_PATTERN"
13+
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([${applicationName:-}]){yellow} %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
14+
15+
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
16+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
17+
<level>INFO</level>
18+
</filter>
19+
<encoder>
20+
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
21+
<charset>utf8</charset>
22+
</encoder>
23+
</appender>
24+
25+
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
26+
<param name="Encoding" value="UTF-8"/>
27+
<keepAliveDuration>5 minutes</keepAliveDuration> <!-- Send keep alive message if an event has not occurred for length of the duration -->
28+
<reconnectionDelay>10 second</reconnectionDelay> <!-- TCP appender waits for duration (default 30 sec) before reattempting to connect on failure -->
29+
<remoteHost>${logstashHost}</remoteHost>
30+
<port>32245</port>
31+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
32+
<level>WARN</level>
33+
</filter>
34+
<!-- Encoder is required -->
35+
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
36+
<providers>
37+
<timestamp>
38+
<timeZone>UTC</timeZone>
39+
</timestamp>
40+
<mdc/> <!-- MDC variables on the Thread will be written as JSON fields-->
41+
<context/> <!--Outputs entries from logback's context -->
42+
<logLevel/>
43+
<loggerName/>
44+
<pattern>
45+
<pattern>
46+
{
47+
"applicationName": "${applicationName}",
48+
"applicationVersion": "${applicationVersion}",
49+
"environment": "${environment}"
50+
}
51+
</pattern>
52+
</pattern>
53+
<threadName/>
54+
<message/>
55+
<logstashMarkers/> <!-- Useful so we can add extra information for specific log lines as Markers-->
56+
<arguments/> <!--or through StructuredArguments-->
57+
<stackTrace>
58+
<throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
59+
<exclude>net\.sf\.cglib\..*</exclude>
60+
<exclude>org\.apache\.coyote\..*</exclude>
61+
<exclude>org\.apache\.catalina\..*</exclude>
62+
<exclude>org\.apache\.tomcat\..*</exclude>
63+
<exclude>org\.springframework\.web\.servlet\..*</exclude>
64+
<exclude>^sun\.reflect\..*\.invoke</exclude>
65+
<maxDepthPerThrowable>30</maxDepthPerThrowable>
66+
<rootCauseFirst>true</rootCauseFirst>
67+
<maxLength>2048</maxLength>
68+
<!--<shortenedClassNameLength>20</shortenedClassNameLength>-->
69+
</throwableConverter>
70+
</stackTrace>
71+
</providers>
72+
</encoder>
73+
</appender>
74+
75+
<springProfile name="!production">
76+
<root level="DEBUG">
77+
<appender-ref ref="console"/>
78+
</root>
79+
</springProfile>
80+
<springProfile name="production">
81+
<root level="WARN">
82+
<appender-ref ref="logstash"/>
83+
</root>
84+
</springProfile>
85+
86+
</configuration>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# ----------------------------------------
2+
# Gradle Project Properties
3+
# ----------------------------------------
4+
5+
info.build.version=${version?:1.0}
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
1-
spring:
2-
application:
3-
name: discovery-service
4-
server:
5-
port: 8302
6-
7-
eureka:
8-
client:
9-
registerWithEureka: false
10-
fetchRegistry: false
11-
server:
12-
waitTimeInMsWhenSyncEmpty: 0
13-
serviceUrl:
14-
defaultZone: http://localhost:8302/eureka
15-
16-
---
17-
spring:
18-
profiles: production
1+
spring:
2+
application:
3+
name: discovery-service
4+
server:
5+
port: 8302
6+
7+
eureka:
8+
client:
9+
registerWithEureka: false
10+
fetchRegistry: false
11+
server:
12+
waitTimeInMsWhenSyncEmpty: 0
13+
serviceUrl:
14+
defaultZone: http://localhost:8302/eureka
15+
16+
logstash:
17+
host: localhost
18+
19+
---
20+
spring:
21+
profiles: production
22+
23+
logstash:
24+
host: logstash-service
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,86 @@
1-
<?xml version="1.0" encoding="UTF-8"?>
2-
<configuration debug="false" scan="true">
3-
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
4-
<springProperty scope="context" name="applicationName" source="spring.application.name"/>
5-
<property name="FILE_LOG_PATTERN"
6-
value="%d{yyyy-MM-dd HH:mm:ss.SSS} -- [${applicationName}] -- %5p ${PID:- } --- [%t] [%X{sessionId}] %-40.40logger{39} : %m%n%wex"/>
7-
8-
<property name="CONSOLE_LOG_PATTERN"
9-
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([${applicationName:-}]){yellow} %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
10-
11-
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
12-
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
13-
<level>INFO</level>
14-
</filter>
15-
<encoder>
16-
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
17-
<charset>utf8</charset>
18-
</encoder>
19-
</appender>
20-
21-
<root level="TRACE">
22-
<appender-ref ref="console"/>
23-
</root>
24-
25-
</configuration>
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration debug="false" scan="true">
3+
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
4+
<springProperty scope="context" name="applicationName" source="spring.application.name"/>
5+
<springProperty scope="context" name="applicationVersion" source="info.build.version"/>
6+
<springProperty scope="context" name="logstashHost" source="logstash.host"/>
7+
<springProperty scope="context" name="environment" source="spring.profiles.active"/>
8+
9+
<property name="FILE_LOG_PATTERN"
10+
value="%d{yyyy-MM-dd HH:mm:ss.SSS} -- [${applicationName}] -- %5p ${PID:- } --- [%t] [%X{sessionId}] %-40.40logger{39} : %m%n%wex"/>
11+
12+
<property name="CONSOLE_LOG_PATTERN"
13+
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([${applicationName:-}]){yellow} %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
14+
15+
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
16+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
17+
<level>INFO</level>
18+
</filter>
19+
<encoder>
20+
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
21+
<charset>utf8</charset>
22+
</encoder>
23+
</appender>
24+
25+
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
26+
<param name="Encoding" value="UTF-8"/>
27+
<keepAliveDuration>5 minutes</keepAliveDuration> <!-- Send keep alive message if an event has not occurred for length of the duration -->
28+
<reconnectionDelay>10 second</reconnectionDelay> <!-- TCP appender waits for duration (default 30 sec) before reattempting to connect on failure -->
29+
<remoteHost>${logstashHost}</remoteHost>
30+
<port>32245</port>
31+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
32+
<level>WARN</level>
33+
</filter>
34+
<!-- Encoder is required -->
35+
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
36+
<providers>
37+
<timestamp>
38+
<timeZone>UTC</timeZone>
39+
</timestamp>
40+
<mdc/> <!-- MDC variables on the Thread will be written as JSON fields-->
41+
<context/> <!--Outputs entries from logback's context -->
42+
<logLevel/>
43+
<loggerName/>
44+
<pattern>
45+
<pattern>
46+
{
47+
"applicationName": "${applicationName}",
48+
"applicationVersion": "${applicationVersion}",
49+
"environment": "${environment}"
50+
}
51+
</pattern>
52+
</pattern>
53+
<threadName/>
54+
<message/>
55+
<logstashMarkers/> <!-- Useful so we can add extra information for specific log lines as Markers-->
56+
<arguments/> <!--or through StructuredArguments-->
57+
<stackTrace>
58+
<throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
59+
<exclude>net\.sf\.cglib\..*</exclude>
60+
<exclude>org\.apache\.coyote\..*</exclude>
61+
<exclude>org\.apache\.catalina\..*</exclude>
62+
<exclude>org\.apache\.tomcat\..*</exclude>
63+
<exclude>org\.springframework\.web\.servlet\..*</exclude>
64+
<exclude>^sun\.reflect\..*\.invoke</exclude>
65+
<maxDepthPerThrowable>30</maxDepthPerThrowable>
66+
<rootCauseFirst>true</rootCauseFirst>
67+
<maxLength>2048</maxLength>
68+
<!--<shortenedClassNameLength>20</shortenedClassNameLength>-->
69+
</throwableConverter>
70+
</stackTrace>
71+
</providers>
72+
</encoder>
73+
</appender>
74+
75+
<springProfile name="!production">
76+
<root level="DEBUG">
77+
<appender-ref ref="console"/>
78+
</root>
79+
</springProfile>
80+
<springProfile name="production">
81+
<root level="WARN">
82+
<appender-ref ref="logstash"/>
83+
</root>
84+
</springProfile>
85+
86+
</configuration>

0 commit comments

Comments
 (0)