takanuva15 opened a new issue, #1941:
URL: https://github.com/apache/logging-log4j2/issues/1941

   Hi, in PatternLayout, we are able to filter out certain package names from 
stacktraces by providing a list of package-names to filter, as documented in 
the [patterns table][1] for pattern layout:
   `%ex{filters("org.apache", "org.spring")}`
   
   In JsonTemplateLayout, there are a number of configuration options available 
for printing stacktraces, but I can't find a filtering option that allows me to 
filter out packages from stacktraces the same way that we're able to in 
PatternLayout. I am aware of the "truncation" configuration defined under the 
[`"exception"`][2] section of the JsonTemplateLayout documentation, but this 
wouldn't work for my use case because I have interceptors defined in my code 
that are interspered in the stacktrace with the boilerplate "org.apache" stuff 
that I don't need to see. If I were to truncate the stacktrace after something 
like "org.apache", I would lose the knowledge of what interceptors were 
involved in a particular request before the exception occurred.
   
   Below is an example of one such stacktrace where my own "com.mycompany" 
stacktrace lines are spread among other package names I would like to filter 
out:
   <details>
     <summary>Click me to expand stacktrace</summary>
     
     ```
     2023-10-29 17:33:14.904 ERROR 86240 [nio-8080-exec-2][][] 
c.m.m.c.ExceptionHelper                  : Request: 
http://localhost:8080/myapi/doc/save raised exception: 
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('[' (code 
91)): was expecting a colon to separate field name and value
    at [Source: (String)"{"items" "<rest of my json payload>"[truncated 12434 
chars]; line: 1, column: 13]
        at 
com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:2391) 
~[jackson-core-2.13.5.jar:2.13.5]
        at 
com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:735)
 ~[jackson-core-2.13.5.jar:2.13.5]
        at 
com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:659)
 ~[jackson-core-2.13.5.jar:2.13.5]
        at 
com.fasterxml.jackson.core.json.ReaderBasedJsonParser._skipColon2(ReaderBasedJsonParser.java:2309)
 ~[jackson-core-2.13.5.jar:2.13.5]
        at 
com.fasterxml.jackson.core.json.ReaderBasedJsonParser._skipColon(ReaderBasedJsonParser.java:2288)
 ~[jackson-core-2.13.5.jar:2.13.5]
        at 
com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:737)
 ~[jackson-core-2.13.5.jar:2.13.5]
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
 ~[jackson-databind-2.13.5.jar:2.13.5]
        at 
com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
 ~[jackson-databind-2.13.5.jar:2.13.5]
        at 
com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4674)
 ~[jackson-databind-2.13.5.jar:2.13.5]
        at 
com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3629) 
~[jackson-databind-2.13.5.jar:2.13.5]
        at 
com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3597) 
~[jackson-databind-2.13.5.jar:2.13.5]
        at 
com.mycompany.myapi.controller.MyController.saveDoc(MyController.java:159) 
~[classes/:?]
        at 
com.mycompany.myapi.controller.MyController$$FastClassBySpringCGLIB$$d73ec01b.invoke(<generated>)
 ~[classes/:?]
        at 
org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) 
~[spring-core-5.3.28.jar:5.3.28]
        at 
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
 ~[spring-aop-5.3.28.jar:5.3.28]
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
 ~[spring-aop-5.3.28.jar:5.3.28]
        at 
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
 ~[spring-aop-5.3.28.jar:5.3.28]
        at 
org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:58)
 ~[spring-aop-5.3.28.jar:5.3.28]
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
 ~[spring-aop-5.3.28.jar:5.3.28]
        at 
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
 ~[spring-aop-5.3.28.jar:5.3.28]
        at 
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
 ~[spring-aop-5.3.28.jar:5.3.28]
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
 ~[spring-aop-5.3.28.jar:5.3.28]
        at 
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
 ~[spring-aop-5.3.28.jar:5.3.28]
        at 
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
 ~[spring-aop-5.3.28.jar:5.3.28]
        at 
com.mycompany.myapi.controller.MyController$$EnhancerBySpringCGLIB$$5aa9ebd4.saveDoc(<generated>)
 ~[classes/:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:?]
        at 
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 ~[?:?]
        at 
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at 
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
 ~[spring-webmvc-5.3.28.jar:5.3.28]
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
 ~[spring-webmvc-5.3.28.jar:5.3.28]
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
 ~[spring-webmvc-5.3.28.jar:5.3.28]
        at 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
 ~[spring-webmvc-5.3.28.jar:5.3.28]
        at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
 ~[spring-webmvc-5.3.28.jar:5.3.28]
        at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
 ~[spring-webmvc-5.3.28.jar:5.3.28]
        at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
 ~[spring-webmvc-5.3.28.jar:5.3.28]
        at 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
 ~[spring-webmvc-5.3.28.jar:5.3.28]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) 
~[tomcat-embed-core-9.0.76.jar:4.0.FR]
        at 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
 ~[spring-webmvc-5.3.28.jar:5.3.28]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) 
~[tomcat-embed-core-9.0.76.jar:4.0.FR]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
~[tomcat-embed-websocket-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
com.mycompany.myapi.config.HttpRequestLoggingFilter.doFilterInternal(HttpRequestLoggingFilter.java:28)
 ~[classes/:?]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:164)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186)
 ~[spring-security-web-5.7.9.jar:5.7.9]
        at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
 ~[spring-boot-actuator-2.7.13.jar:2.7.13]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
 ~[spring-web-5.3.28.jar:5.3.28]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) 
~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) 
~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
com.mycompany.myapi.config.StatusInterceptorValve.invoke(StatusInterceptorValve.java:32)
 ~[classes/:?]
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) 
~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) 
~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) 
~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 ~[tomcat-embed-core-9.0.76.jar:9.0.76]
        at java.lang.Thread.run(Thread.java:829) ~[?:?]
     ```
   </details>
   
   
   Assuming my understanding is correct that there is no 
stacktrace-package-filtering option available in JsonTemplateLayout like there 
is in PatternLayout, then I would like to add such a feature that could look 
like this: 
   
   Currently, to specify truncation, I would specify the following in my 
template-json file:
   ```
     "stackTrace": {
       "stringified": {
         "truncation": {
           "suffix": "... [truncated]",
           "pointMatcherStrings": ["at javax.servlet.http.HttpServlet.service"]
         }
       }
     }
   ```
   
   To add stacktrace filtering to this configuration, I was thinking the 
easiest would be to have a separate block like this:
   ```
     "stackTrace": {
       "stringified": {
         "filtered": {
           "packagesToExclude": [
               "org.apache",
               "org.spring",
               "jdk."
           ]
         }
       }
     }
   ```
   
   If someone specified both truncation and filtering, we can throw an error so 
the developer picks one to use for processing their stacktraces. Then we can 
add in the logic for the "filtered" Resolver to a new Java file like we have 
for the stacktrace truncation stuff in StackTraceStringResolver.java.
   
   I hope that makes sense. Assuming this could be approved, I can work on 
making a PR for this in the near future. 👍 
   
   
   [1]: https://logging.apache.org/log4j/2.x/manual/layouts.html#patterns
   [2]: 
https://logging.apache.org/log4j/2.x/manual/json-template-layout.html#event-template-resolver-exception


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@logging.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to