新配置的log4j consoleAppender不记录

2020-09-12 12:18发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨 版本:Hybris 6.6...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


版本:Hybris 6.6

我遇到了一个问题,我的新Log4j consoleAppender甚至没有在控制台中记录任何内容。 我实现了一个过滤器来记录每个请求的sessionId。 但是出于某种原因,即使它通过了过滤器,它也不会记录任何内容。

我在local.properties中做了这些配置:

  log4j.rootLogger = INFO,控制台
  log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
  log4j.appender.CONSOLE.Threshold =信息
  log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
  log4j.appender.CONSOLE.layout.ConversionPattern = [%d {ISO8601}]%X {sessionId}%p%c-%m%n

  

即使我将这些配置放在project.properties中,它也不起作用。

这是我的过滤器的代码:

 公共类LogSessionIdFilter扩展了OncePerRequestFilter {
 
      私有静态最终Logger LOG = Logger.getLogger(LogSessionIdFilter.class);
 
      @Override
      受保护的void doFilterInternal(HttpServletRequest请求,HttpServletResponse响应,FilterChain链)抛出ServletException,IOException {

          尝试{
              MDC.put(" sessionId",request.getSession()。getId());
              LOG.warn(MDC.get(" sessionId"));
 
              chain.doFilter(request,response);
 
          }最后{
              MDC.remove(" sessionId");
          }
      }
  }

  

没用的" LOG.warn(" sessionId");" 的作品,我在控制台中看到一个条目。 但是我想在属性文件中配置模式,这是小事,不起作用。

有人可以帮忙吗?

6条回答
Cikesha
2020-09-12 13:09 .采纳回答

将所有内容更新为log4j2之后,它便按照我的意愿进行了记录。 要映射值,请使用ThreadContext而不是MDC。

代码:

  import org.apache.logging.log4j.ThreadContext;
  导入org.springframework.web.filter.OncePerRequestFilter;
 
  导入javax.servlet.FilterChain;
  导入javax.servlet.ServletException;
  导入javax.servlet.http.HttpServletRequest;
  导入javax.servlet.http.HttpServletResponse;
  导入java.io.IOException;
 
  公共类LogSessionIdFilter扩展了OncePerRequestFilter {
 
      @Override
      受保护的void doFilterInternal(HttpServletRequest请求,HttpServletResponse响应,FilterChain链)抛出IOException,ServletException {
          尝试{
              ThreadContext.put(" sessionId",request.getSession()。getId());
              chain.doFilter(request,response);
 
          }最后{
              ThreadContext.clearAll();
          }
      }
  }

  

以及属性文件:

  log4j2.console.type =控制台
  log4j2.appender.console.layout.type = PatternLayout
  log4j2.appender.console.layout.pattern =%highlight {[%d] [%-5p] [%X {sessionId}] [%X {RemoteAddr}] [%X {Tenant}] [%X {CronJob}]  [%c {1}]-%m%n} {STYLE = Logback}
  log4j2.rootLogger = STDOUT
  log4j2.rootLogger.level =信息
  

一周热门 更多>

相关问答