Skip to content

Commit e1ebb0b

Browse files
committed
Fjern bruk av familie-felles logg
1 parent 39f29bd commit e1ebb0b

File tree

7 files changed

+114
-18
lines changed

7 files changed

+114
-18
lines changed

pom.xml

-5
Original file line numberDiff line numberDiff line change
@@ -241,11 +241,6 @@
241241
<artifactId>token-client-spring</artifactId>
242242
<version>${token-validation-spring.version}</version>
243243
</dependency>
244-
<dependency>
245-
<groupId>no.nav.familie.felles</groupId>
246-
<artifactId>log</artifactId>
247-
<version>${felles.version}</version>
248-
</dependency>
249244
<dependency>
250245
<groupId>no.nav.security</groupId>
251246
<artifactId>token-validation-core</artifactId>

src/main/kotlin/no/nav/familie/tilbake/config/ApplicationConfig.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ package no.nav.familie.tilbake.config
22

33
import com.fasterxml.jackson.databind.ObjectMapper
44
import com.fasterxml.jackson.module.kotlin.KotlinModule
5-
import no.nav.familie.log.filter.LogFilter
65
import no.nav.familie.prosessering.config.ProsesseringInfoProvider
6+
import no.nav.familie.tilbake.log.LogTracingHttpFilter
77
import no.nav.security.token.support.client.spring.oauth2.EnableOAuth2Client
88
import no.nav.security.token.support.spring.SpringTokenValidationContextHolder
99
import no.nav.security.token.support.spring.api.EnableJwtTokenValidation
@@ -40,9 +40,9 @@ class ApplicationConfig {
4040
}
4141

4242
@Bean
43-
fun logFilter(): FilterRegistrationBean<LogFilter> {
44-
val filterRegistration = FilterRegistrationBean<LogFilter>()
45-
filterRegistration.filter = LogFilter()
43+
fun logFilter(): FilterRegistrationBean<LogTracingHttpFilter> {
44+
val filterRegistration = FilterRegistrationBean<LogTracingHttpFilter>()
45+
filterRegistration.filter = LogTracingHttpFilter()
4646
filterRegistration.order = 1
4747
return filterRegistration
4848
}

src/main/kotlin/no/nav/familie/tilbake/dokumentbestilling/felles/pdf/PdfBrevService.kt

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package no.nav.familie.tilbake.dokumentbestilling.felles.pdf
22

3-
import no.nav.familie.log.mdc.MDCConstants
43
import no.nav.familie.prosessering.domene.Task
54
import no.nav.familie.tilbake.behandling.domain.Behandling
65
import no.nav.familie.tilbake.behandling.domain.Fagsak
@@ -17,11 +16,11 @@ import no.nav.familie.tilbake.kontrakter.dokdist.Distribusjonstidspunkt
1716
import no.nav.familie.tilbake.kontrakter.dokdist.Distribusjonstype
1817
import no.nav.familie.tilbake.kontrakter.objectMapper
1918
import no.nav.familie.tilbake.log.SecureLog
19+
import no.nav.familie.tilbake.log.callId
2020
import no.nav.familie.tilbake.micrometer.TellerService
2121
import no.nav.familie.tilbake.pdfgen.Dokumentvariant
2222
import no.nav.familie.tilbake.pdfgen.PdfGenerator
2323
import org.slf4j.LoggerFactory
24-
import org.slf4j.MDC
2524
import org.springframework.http.HttpStatus
2625
import org.springframework.stereotype.Service
2726
import java.util.Base64
@@ -156,7 +155,7 @@ class PdfBrevService(
156155
mottager: Brevmottager,
157156
): String {
158157
// alle brev kan potensielt bli sendt til både bruker og kopi verge. 2 av breva kan potensielt bli sendt flere gonger
159-
val callId = MDC.get(MDCConstants.MDC_CALL_ID)
158+
val callId = callId()
160159
return "${behandling.eksternBrukId}_${brevtype.name.lowercase()}_${mottager.name.lowercase()}_$callId"
161160
}
162161

src/main/kotlin/no/nav/familie/tilbake/http/MdcValuesPropagatingClientInterceptor.kt

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package no.nav.familie.tilbake.http
22

3-
import org.slf4j.MDC
3+
import no.nav.familie.tilbake.log.callId
4+
import no.nav.familie.tilbake.log.requestId
45
import org.springframework.http.HttpRequest
56
import org.springframework.http.client.ClientHttpRequestExecution
67
import org.springframework.http.client.ClientHttpRequestInterceptor
@@ -13,8 +14,8 @@ class MdcValuesPropagatingClientInterceptor : ClientHttpRequestInterceptor {
1314
body: ByteArray,
1415
execution: ClientHttpRequestExecution,
1516
): ClientHttpResponse {
16-
val callId = MDC.get("callId") ?: UUID.randomUUID().toString()
17-
val requestId = MDC.get("requestId") ?: callId
17+
val callId = callId() ?: UUID.randomUUID().toString()
18+
val requestId = requestId() ?: callId
1819
request.headers.add("Nav-Call-Id", callId)
1920
request.headers.add("X-Request-ID", requestId)
2021

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package no.nav.familie.tilbake.log
2+
3+
import jakarta.servlet.FilterChain
4+
import jakarta.servlet.FilterConfig
5+
import jakarta.servlet.ServletException
6+
import jakarta.servlet.http.HttpFilter
7+
import jakarta.servlet.http.HttpServletRequest
8+
import jakarta.servlet.http.HttpServletResponse
9+
import org.slf4j.LoggerFactory
10+
import java.io.EOFException
11+
import java.io.IOException
12+
import java.util.UUID
13+
14+
class LogTracingHttpFilter : HttpFilter() {
15+
private val log = LoggerFactory.getLogger(this::class.java)
16+
17+
@Throws(ServletException::class, IOException::class)
18+
override fun doFilter(
19+
httpServletRequest: HttpServletRequest,
20+
httpServletResponse: HttpServletResponse,
21+
filterChain: FilterChain,
22+
) {
23+
val consumerId = httpServletRequest.getHeader(HEADER_CONSUMER_ID)
24+
val callId = resolveCallId(httpServletRequest)
25+
26+
putCallId(callId)
27+
if (!consumerId.isNullOrEmpty()) {
28+
putConsumerId(consumerId)
29+
}
30+
putRequestId(resolveRequestId(httpServletRequest))
31+
httpServletResponse.setHeader(HEADER_NAV_CALL_ID, callId)
32+
try {
33+
filterWithErrorHandling(httpServletRequest, httpServletResponse, filterChain)
34+
} finally {
35+
removeCallId()
36+
removeConsumerId()
37+
removeRequestId()
38+
}
39+
}
40+
41+
private fun filterWithErrorHandling(
42+
httpServletRequest: HttpServletRequest,
43+
httpServletResponse: HttpServletResponse,
44+
filterChain: FilterChain,
45+
) {
46+
try {
47+
filterChain.doFilter(httpServletRequest, httpServletResponse)
48+
} catch (e: EOFException) {
49+
log.warn("Got EOF while handling HTTP request", e)
50+
} catch (e: Exception) {
51+
if (httpServletResponse.isCommitted) {
52+
log.error("Caught exception while handling HTTP request, failed with status={}", httpServletResponse.status, e)
53+
throw e
54+
} else {
55+
log.error("Caught exception while handing HTTP request", e)
56+
}
57+
httpServletResponse.status = HttpServletResponse.SC_INTERNAL_SERVER_ERROR
58+
}
59+
}
60+
61+
override fun init(filterConfig: FilterConfig) {}
62+
63+
override fun destroy() {}
64+
65+
companion object {
66+
private const val HEADER_CONSUMER_ID = "Nav-Consumer-Id"
67+
private const val HEADER_NAV_CALL_ID: String = "Nav-Call-Id"
68+
private const val HEADER_NGNINX_REQUEST_ID: String = "X-Request-Id"
69+
70+
private fun resolveCallId(httpServletRequest: HttpServletRequest): String = headerOrRandom(httpServletRequest, HEADER_NAV_CALL_ID, "Nav-CallId", "Nav-Callid", "X-Correlation-Id")
71+
72+
private fun resolveRequestId(httpServletRequest: HttpServletRequest): String = headerOrRandom(httpServletRequest, "X_Request_Id", HEADER_NGNINX_REQUEST_ID)
73+
74+
private fun headerOrRandom(
75+
httpServletRequest: HttpServletRequest,
76+
vararg headerNames: String,
77+
) = headerNames
78+
.asSequence()
79+
.mapNotNull(httpServletRequest::getHeader)
80+
.firstOrNull(String::isNotEmpty)
81+
?: UUID.randomUUID().toString()
82+
}
83+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package no.nav.familie.tilbake.log
2+
3+
import org.slf4j.MDC
4+
5+
fun callId(): String? = MDC.get("callId")
6+
7+
fun requestId(): String? = MDC.get("requestId")
8+
9+
fun putCallId(callId: String) = MDC.put("callId", callId)
10+
11+
fun putConsumerId(consumerId: String) = MDC.put("consumerId", consumerId)
12+
13+
fun putRequestId(requestId: String) = MDC.put("requestId", requestId)
14+
15+
fun removeCallId() = MDC.remove("callId")
16+
17+
fun removeConsumerId() = MDC.remove("consumerId")
18+
19+
fun removeRequestId() = MDC.remove("requestId")

src/main/kotlin/no/nav/familie/tilbake/sikkerhet/AuditLogger.kt

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package no.nav.familie.tilbake.sikkerhet
22

33
import jakarta.servlet.http.HttpServletRequest
4-
import no.nav.familie.log.mdc.MDCConstants
54
import no.nav.familie.tilbake.common.ContextService
65
import no.nav.familie.tilbake.log.SecureLog
6+
import no.nav.familie.tilbake.log.callId
77
import org.slf4j.LoggerFactory
8-
import org.slf4j.MDC
98
import org.springframework.beans.factory.annotation.Value
109
import org.springframework.stereotype.Component
1110
import org.springframework.web.context.request.RequestContextHolder
@@ -84,5 +83,5 @@ class AuditLogger(
8483
data.custom3?.let { "cs6Label=${it.key} cs6=${it.value}" },
8584
).joinToString(" ")
8685

87-
private fun getCallId(): String = MDC.get(MDCConstants.MDC_CALL_ID) ?: throw IllegalStateException("Mangler callId")
86+
private fun getCallId(): String = callId() ?: throw IllegalStateException("Mangler callId")
8887
}

0 commit comments

Comments
 (0)