<?xml version="1.0" encoding="UTF-8"?>
<configuration>

	<!-- Spring Property for Application Name -->
	<springProperty scope="context" name="springAppName"
		source="spring.application.name" defaultValue="emp-mgmt-service" />

	<!-- Console Appender with Logstash JSON Encoder -->
	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
		<encoder
			class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
			<providers>
				<!-- Timestamp with UTC timezone -->
				<timestamp>
					<timeZone>IST</timeZone>
				</timestamp>

				<!-- Custom JSON log pattern -->
				<pattern>
					<pattern>
						{
						"severity": "%level",
						"service": "${springAppName}",
						"thread": "%thread",
						"class": "%logger{40}",
						"methodName": "%M",
						"lineNo": "%L",
						"message": "%message",
						"stacktrace": "%exception"
						}
					</pattern>
				</pattern>

				<!-- Mapped Diagnostic Context (MDC) to capture additional info -->
				<mdc />

				<!-- Arguments passed to the logger -->
				<arguments />

				<!-- Logstash markers for additional metadata -->
				<logstashMarkers />
			</providers>
		</encoder>
	</appender>

	<!-- Root Logger Configuration -->
	<root level="INFO">
		<appender-ref ref="CONSOLE" />
	</root>

	<logger name="org.hibernate" level="ERROR" />

</configuration>
