新配置的log4j consoleAppender不记录

2020-09-12 12:18发布

         点击此处--->   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");" 的作品,我在控制台中看到一个条目。 但是我想在属性文件中配置模式,这是小事,不起作用。

有人可以帮忙吗?

         点击此处--->   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
1楼 · 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 =信息
  
Nir深蓝
2楼-- · 2020-09-12 12:56

非常好!

CJones
3楼-- · 2020-09-12 13:00

仅供参考,hybris从6.0开始使用Log4J * 2 *。

所以您可能必须覆盖/更改默认的logj42控制台附加程序模式:

  log4j2.appender.console.layout.pattern = <您的自定义模式>
  
悻福寶寶
4楼-- · 2020-09-12 13:07

是的,我做到了。 但是它不会再次出现在日志文件中。 问题可能出在其他地方。

SKY徐
5楼-- · 2020-09-12 13:04

嗨Miroslav,

我认为这是您缺少 log4j.appender.CONSOLE.Target = System.out

的情况

文档使用Log4J登录具有以下配置:

  log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
  log4j.appender.CONSOLE.Target = System.out
  log4j.appender.CONSOLE.Threshold =调试
  log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
  log4j.appender.CONSOLE.layout.ConversionPattern =%-5p(%X {Tenant})(%X {CronJob})[%c {1}]%m%n
  

或者在属性前面加上 log4j2

此致,
Luke

太Q了
6楼-- · 2020-09-12 13:00

我添加了" Target"属性,没有日志。 之后,我尝试按照您的建议使用log4j2,也没有使用日志。 那就必须是另一个问题。 我将进一步调查。

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答