如何在logback日志配置里获取服务器ip和端口

目录
  • logback日志配置获取服务器ip和端口
    • 1、新建一个类继承ClassicConverter
    • 2、在配置文件logback.xml增加如下配置
    • 3、在需要用到ip的位置这样写: %ip
    • 4、获取端口号,同理
  • 让Logback日志中显示主机名与IP地址及一切你想显示的
    • 1、创建
    • 2、重新方法
    • 3、配置logback.xml

logback日志配置获取服务器ip和端口

1、新建一个类继承ClassicConverter

在方法中获取服务器ip

package com.xxx.xxx.xxx.common;
import ch.qos.logback.classic.pattern.ClassicConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * @author xiaoming
 * @date 2019/5/14 11:37
 * @description
 */
public class LogIpConfig extends ClassicConverter {
 private static final Logger logger = LoggerFactory.getLogger(LogIpConfig .class);
    private static String webIP;
    static {
        try {
            webIP = InetAddress.getLocalHost().getHostAddress();
        } catch (UnknownHostException e) {
            logger.error("获取日志Ip异常", e);
            webIP = null;
        }
    }

    @Override
    public String convert(ILoggingEvent event) {
        return webIP;
    }
}

2、在配置文件logback.xml增加如下配置

<conversionRule conversionWord="ip" converterClass="com.xxx.xxx.xxx.common.LogIpConfig" />

3、在需要用到ip的位置这样写: %ip

"host": "%ip" 这样写,本地日志输入的时候内容是: "host": "127.0.0.1"

4、获取端口号,同理

package com.xxx.xxx.xxx.common;
import ch.qos.logback.classic.pattern.ClassicConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

/**
 * @author xiaoming
 * @date 2019/5/14 11:37
 * @description
 */
public class LogPortConfig extends ClassicConverter {
    private static final Logger logger = LoggerFactory.getLogger(LogPortConfig.class);
    private static String webPort;

    static {
        try {
            List<MBeanServer> serverList = MBeanServerFactory.findMBeanServer(null);
            for (MBeanServer server : serverList) {
                Set<ObjectName> names = new HashSet<ObjectName>();
                names.addAll(server.queryNames(new ObjectName("Catalina:type=Connector,*"), null));
                Iterator<ObjectName> it = names.iterator();
                while (it.hasNext()) {
                    ObjectName oName = (ObjectName) it.next();
                    String pValue = (String) server.getAttribute(oName, "protocol");
                    if (StringUtils.equals("HTTP/1.1", pValue)) {
                        webPort = ObjectUtils.toString(server.getAttribute(oName, "port"));
                    }
                }
            }
        } catch (Exception e) {
            logger.error("获取port失败,影响logback的文件拼接", e);
            webPort = null;
        }
    }

    @Override
    public String convert(ILoggingEvent event) {
        return webPort;
    }
}
<conversionRule conversionWord="port" converterClass="com.xxx.xxx.xxx.common.LogPortConfig" />

%ip:%port

让Logback日志中显示主机名与IP地址及一切你想显示的

1、创建

一个类继承自ch.qos.logback.classic.pattern.ClassicConverter

2、重新方法

@Override
    public String convert(ILoggingEvent event) {}

3、配置logback.xml

<conversionRule conversionWord="sulong" converterClass="SulongClass" />
<!--配置日志的格式-->
<property name="CONSOLE_LOG_PATTERN" value="%sulong %date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %yellow(%thread) | %green(%logger) | %msg%n"/>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Logback 使用TurboFilter实现日志级别等内容的动态修改操作

    目录 Logback TurboFilter实现日志级别等内容的动态修改 为什么要通过TurboFilter去动态的修改日志级别 logback动态设置某个类的日志级别 假设一下,现在有这么个情况 于是就有了下面的方案 Logback TurboFilter实现日志级别等内容的动态修改 可能看到这个标题,读者会问:要修改日志的级别,不是直接修改log.xxx就好了吗?为何要搞那么复杂呢?所以,先说一下场景 为什么要通过TurboFilter去动态的修改日志级别 我们在使用Java开发各种项目的时

  • 使用logback实现按自己的需求打印日志到自定义的文件里

    目录 1.工具类 LoggerUtils 2.枚举类 LogFileName 3.logger.xml, 按需配置即可 定义工具类-创建对应的日志对象 定义枚举类-存储定义的日志文件名称 logback.xml里配置对应的日志名称和日志等级 1.工具类 LoggerUtils import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LoggerUtils { public static <T> Logger L

  • logback 实现给变量指定默认值

    目录 logback 实现给变量指定默认值 格式是 ${变量名:-默认值} logback变量 定义变量 在 logback.xml 中定义变量 在命令行定义变量 引入properties文件 变量的作用域 变量的默认值 变量使用 logback 实现给变量指定默认值 格式是 ${变量名:-默认值} **光有冒号还不够,再加条短线后面才是默认值** <appender name="info" class="ch.qos.logback.core.rolling.Roll

  • logback配置中变量和include的应用方式

    目录 logback配置中变量和include的应用 Example: 首先把配置内容抽取一个公共文件default.xml 然后基于公共文件定义各自的配置 最后在logback.xml中就可以include上面定义的文件 logback.xml导入(include)其他项目配置的logback.xml文件 1.其他项目存在的logback.xml文件需要下面这种形式的配置 ​ 2.其他项目的配置 logback配置中变量和include的应用 logback配置在实际应用中往往会遇到appen

  • logback如何自定义日志存储

    目录 logback自定义日志存储 1.配置lockback.xml 2.配置自定义日志操作类 3.调用方法 使用logback进行系统日志记录 logback自定义日志存储 1.配置lockback.xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <property name="LOG_HOME" value="/wzwsq-log&q

  • 如何在logback日志配置里获取服务器ip和端口

    目录 logback日志配置获取服务器ip和端口 1.新建一个类继承ClassicConverter 2.在配置文件logback.xml增加如下配置 3.在需要用到ip的位置这样写: %ip 4.获取端口号,同理 让Logback日志中显示主机名与IP地址及一切你想显示的 1.创建 2.重新方法 3.配置logback.xml logback日志配置获取服务器ip和端口 1.新建一个类继承ClassicConverter 在方法中获取服务器ip package com.xxx.xxx.xxx.

  • Java获取服务器IP及端口的方法实例分析

    本文实例讲述了Java获取服务器IP及端口的方法.分享给大家供大家参考,具体如下: 前几天写过一个获取远程服务器的IP和端口的程序,从网上查了一些资料顺便加一些自己的理解,希望对大家有所帮助: struts2 获取request HttpServletRequest requet=ServletActionContext.getRequest(); requet.getScheme()+"://"+requet.getServerName()+":"+requet.

  • SpringBoot项目的logback日志配置(包括打印mybatis的sql语句)

    关于logback日志的详解见这位仁兄的博客:Spring Boot-日志配置(超详细) 我在这就开门见山直接介绍我们项目日志的配置使用吧!~ 1.基本介绍 默认情况下,Spring Boot项目就会用Logback来记录日志,并用INFO级别输出到控制台.如下图: 实际开发中我们不需要直接添加logback日志依赖. 你会发现 spring-boot-starter 其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 lo

  • java编程实现获取服务器IP地址及MAC地址的方法

    本文实例讲述了java编程实现获取服务器IP地址及MAC地址的方法.分享给大家供大家参考,具体如下: 已测系统: windows linux unix 排除127.0.0.1 和 0.0.0.0.1等非正常IP import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.ArrayList; import java.util.Enu

  • 如何在centos的docker里安装jupyter并开放端口

    目录 安装 jupyter docker 端口映射 安装 jupyter pip install jupyter 编写脚本运行: #!/bin/bash # run_jupyter.sh jupyter notebook --no-browser --ip 0.0.0.0 --port 8888 --allow-root > .log 2>&1 & 可以把这个脚本加入开机运行 docker 端口映射 先把安装好jupyter的容器提交 docker commit -a '作者'

  • 基于java配置nginx获取真实IP代码实例

    1.java代码 /** 获取客户端IP */ public static final String getClientIp(HttpServletRequest request) { String ip = request.getHeader("X-Forwarded-For"); if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)|| "127.0.0.1".equals

  • PHP跨平台获取服务器IP地址自定义函数分享

    近期需要完善一个log机制,监控来自不同服务器的机器的脚本执行状况,特针对windows和Linux及web与命令行模式书写了一个函数来兼容. 写了如下一个function来,可以实现上面的需求: 复制代码 代码如下: function getServerAddr() {       //运行 web app       if (isset($_SERVER["SERVER_ADDR"])) {           return $_SERVER["SERVER_ADDR&q

  • Logback日志基础及自定义配置代码实例

    Logback日志基础配置 logback日志配置有很多介绍,但是有几个非常基础的,容易忽略的.下面是最简单的一个配置,注意加粗的描述 <?xml version="1.0" encoding="UTF-8"?> <configuration debug="true" scan="true" scanPeriod="30 seconds"> <!--log.path定义的是局部

  • 通过weblogic API解析如何获取weblogic中服务的IP和端口操作

    我们的服务是部署在weblogic上的,最近遇到一个需求,需要在代码中获取weblogic部署当前服务的IP地址和端口. 后来搜到一段代码,亲测有效: public static String getIpAndPort(){ try { InitialContext initialContext = new InitialContext(); MBeanServer tMBeanServer; MBeanServer platformMBeanServer = ManagementFactory

  • 如何从eureka获取服务的ip和端口号进行Http的调用

    目录 eureka获取服务ip和端口号进行Http调用 eureka页面中显示ip+端口 eureka获取服务ip和端口号进行Http调用 我告诉你们为啥我要先从eureka首先获取 goods的服务ip, 在用ip的方式使用http调用goods的服务. 因为公司的规定, 不让我们用Feigin. 我TMD的都震惊了, 我都不知道为啥. 我也不想写同事的ip地址, 做配置, 因为都去eureka里面注册了, 所以就这样调用了, 真是蛋疼.  这种微服务, 这种奇葩的方式.. package c

随机推荐