java - 带有spring boot的log4j2没有捕获所有异常
问题描述
我在我的 Spring Boot 应用程序中添加了带有 ECS 布局的 log4j2,以 JSON 格式记录所有日志。我注意到有一些异常仍然以默认格式登录。
也许我没有捕捉到那些异常,而那些被春天捕捉到了。
log4j2 配置
appenders=console
appender.console.type=Console
appender.console.name=STDOUT
appender.console.ignoreExceptions=false
appender.console.layout.type=EcsLayout
appender.console.layout.serviceName=appa
rootLogger.level=error
rootLogger.appenderRef.stdout.ref=STDOUT
logger.spring.name=org.springframework
logger.spring.level=error
logger.infra.name=com.app.infra
logger.infra.level=info
日志样本
{"@timestamp":"2020-10-29T12:08:18.700Z", "log.level": "INFO", "message":"Successfully applied security_group", "service.name":"app","event.dataset":"deployment-portal-backend-navi-service.log","process.thread.name":"ForkJoinPool.commonPool-worker-19","log.logger":"com.navi.infra.portal.service.kubernetes.KubernetesManifestService"}
{"@timestamp":"2020-10-29T12:08:18.700Z", "log.level": "INFO", "message":"Updating ingress", "service.name":"app","event.dataset":"deployment-portal-backend-navi-service.log","process.thread.name":"http-nio-8080-exec-1","log.logger":"com.navi.infra.portal.service.kubernetes.KubernetesManifestService","CorrelationId":"dbec0188-fd6f-458d-93e1-bc71a1b93a98"}
[]
io.kubernetes.client.openapi.ApiException: javax.net.ssl.SSLHandshakeException: extension (5) should not be presented in certificate_request
at io.kubernetes.client.openapi.ApiClient.execute(ApiClient.java:898)
at io.kubernetes.client.openapi.apis.CustomObjectsApi.getNamespacedCustomObjectWithHttpInfo(CustomObjectsApi.java:1705)
at io.kubernetes.client.openapi.apis.CustomObjectsApi.getNamespacedCustomObject(CustomObjectsApi.java:1681)
at com.navi.infra.portal.client.KubeClient.getNamespacedObjectStatus(KubeClient.java:44)
at com.navi.infra.portal.service.kubernetes.KubernetesManifestService.getSecurityGroupIdsFromKubernetes(KubernetesManifestService.java:190)
at com.navi.infra.portal.service.kubernetes.KubernetesManifestService.getSecurityGroupForDeployment(KubernetesManifestService.java:223)
at com.navi.infra.portal.service.kubernetes.KubernetesManifestService.updateDeployment(KubernetesManifestService.java:149)
at com.navi.infra.portal.service.kubernetes.KubernetesManifestService.lambda$updateIngressWithSecurityGroup$1(KubernetesManifestService.java:107)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1807)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1799)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1016)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1665)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1598)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
Caused by: javax.net.ssl.SSLHandshakeException: extension (5) should not be presented in certificate_request
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:311)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:267)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:258)
at java.base/sun.security.ssl.SSLExtensions.<init>(SSLExtensions.java:90)
at java.base/sun.security.ssl.CertificateRequest$T13CertificateRequestMessage.<init>(CertificateRequest.java:818)
at java.base/sun.security.ssl.CertificateRequest$T13CertificateRequestConsumer.consume(CertificateRequest.java:922)
at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396)
at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444)
at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:422)
at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:181)
at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164)
at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1460)
at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1368)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:437)
at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:336)
at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:300)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:185)
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.java:224)
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.java:108)
at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.java:88)
at okhttp3.internal.connection.Transmitter.newExchange(Transmitter.java:169)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:41)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:88)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:229)
at okhttp3.RealCall.execute(RealCall.java:81)
at io.kubernetes.client.openapi.ApiClient.execute(ApiClient.java:894)
... 14 more
java.lang.NullPointerException
at com.navi.infra.portal.service.kubernetes.KubernetesManifestService.getSecurityGroupIdsFromKubernetes(KubernetesManifestService.java:199)
at com.navi.infra.portal.service.kubernetes.KubernetesManifestService.getSecurityGroupForDeployment(KubernetesManifestService.java:223)
at com.navi.infra.portal.service.kubernetes.KubernetesManifestService.updateDeployment(KubernetesManifestService.java:149)
at com.navi.infra.portal.service.kubernetes.KubernetesManifestService.lambda$updateIngressWithSecurityGroup$1(KubernetesManifestService.java:107)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1807)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1799)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1016)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1665)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1598)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
解决方案
推荐阅读
- google-cloud-platform - 具有相同跟踪 ID 的 Stackdriver 日志条目未关联
- hyperledger-fabric - 不同区域的 Hyperledger Fabric 网络设置
- visual-studio-code - VS Code 中的“includePath”和“args -I PATH”有什么区别?
- powerquery - 使用正则表达式拆分 Excel 电源查询列
- python - 将变量分配给列表中的元组
- sql - 2个表的SQL
- javascript - 我在复选框中有两个列表,一个我已经检查了一个最初没有检查
- mysql - 警告:mysql_connect():无法通过套接字连接到本地 MySQL 服务器
- go - Golang proto 文件管理和导入
- c - 在 C 中,如何从字符串中取出两个字符,并将它们分配为自己的字符串?