【问题标题】:Process Remote url/ip adress of user in Logback Logging Pattern在 Logback 日志模式中处理用户的远程 url/ip 地址
【发布时间】:2021-07-28 17:29:58
【问题描述】:

我有以下 logback 模式:

<pattern>%clr(%-6id) - %clr(%d{dd/MM/yy HH:mm:ss}) - %clr(%-40.40logger{39}) - %m -%clr(%5p) - [%thread] - %clr(:) %n%wEx</pattern>>

我需要像24.33.87.53这样使用logback处理用户的IP地址,在我的程序编译过程中我可以看到:

o.s.web.servlet.DispatcherServlet - Completed initialization in 6 ms - INFO - [RMI TCP Connection(1)-198.163.6.156] : Completed initialization in 6 ms

在我的模式中,[%thread] 负责 RMI TCP 连接,但是当我像 logger.info("User connected") 这样调用记录器时,我得到的是 http-nio-8000-exec-1

尝试不同的 VPN 连接我意识到这个 RMI TCP 连接可能是我需要的东西。 现在我正在尝试像这样编写自定义 ProcessIpConverter

public class ProcessIpConverter extends ClassicConverter {
    
    @Override
    public String convert(final ILoggingEvent event) {
        
        return smth;
    }
}

并使用转换规则将其连接到我的模式

<conversionRule conversionWord="remoteIp"
                    converterClass="com.myPath.ProcessIpConverter" />

我尝试了不同的方法来获取此 IP,但没有找到正确的方法。所以,我正在寻求帮助,我应该如何调用我的 DispatcherServlet 以及如何从中获取这个 RMI TCP 连接。 ProcessIpConverter应该怎么写?

【问题讨论】:

    标签: java logging logback converters


    【解决方案1】:

    在这里https://www.programmersought.com/article/36461409856/ 找到了我的问题的答案。 其实应该这样写ProcessIpConverter:

    public class ProcessIpConverter extends ClassicConverter {
        private static final Logger logger = LoggerFactory.getLogger(LogIpConfig .class);
     
        @Override
        public String convert(ILoggingEvent event) {
            try {
                return InetAddress.getLocalHost().getHostAddress();
            } catch (UnknownHostException e) {
                Logger.error("Get log Ip exception", e);
            }
            return null;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 2010-09-09
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多