SpringBoot + Kafka + ELK 完成海量日志收集,招银网络科技java面试

@RequestMapping(value = “/index”)

public String index() {

InputMDC.putMDC();

log.info(“我是一条info日志”);

log.warn(“我是一条warn日志”);

log.error(“我是一条error日志”);

return “idx”;

}

@RequestMapping(value = “/err”)

public String err() {

InputMDC.putMDC();

try {

int a = 1/0;

} catch (Exception e) {

log.error(“算术异常”, e);

}

return “err”;

}

}

InputMDC

用以获取log中的[%X{hostName}][%X{ip}][%X{applicationName}]三个字段值

@Component

public class InputMDC implements EnvironmentAware {

private static Environment environment;

@Override

public void setEnvironment(Environment environment) {

InputMDC.environment = environment;

}

public static void putMDC() {

MDC.put(“hostName”, NetUtil.getLocalHostName());

MDC.put(“ip”, NetUtil.getLocalIp());

MDC.put(“applicationName”, environment.getProperty(“spring.application.name”));

}

}

NetUtil

public class NetUtil {

public static String normalizeAddress(String address){

String[] blocks = address.split(“[:]”);

if(blocks.length > 2){

throw new IllegalArgumentException(address + " is invalid");

}

String host = blocks[0];

int port = 80;

if(blocks.length > 1){

port = Integer.valueOf(blocks[1]);

} else {

address += “:”+port; //use default 80

}

String serverAddr = String.format(“%s:%d”, host, port);

return serverAddr;

}

public static String getLocalAddress(String address){

String[] blocks = address.split(“[:]”);

if(blocks.length != 2){

throw new IllegalArgumentException(address + " is invalid address");

}

String host = blocks[0];

int port = Integer.valueOf(blocks[1]);

if(“0.0.0.0”.equals(host)){

return String.format(“%s:%d”,NetUtil.getLocalIp(), port);

}

return address;

}

private static int matchedIndex(String ip, String[] prefix){

for(int i=0; i<prefix.length; i++){

String p = prefix[i];

if("".equals§){ //, assumed to be IP

if(ip.startsWith(“127.”) ||

ip.startsWith(“10.”) ||

ip.startsWith(“172.”) ||

ip.startsWith(“192.”)){

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值