1、自定义Appender
目的:接收日志消息,现将日志通过http接口发送到预警服务
package com.test.service.appender;
import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.core.UnsynchronizedAppenderBase;
import org.springframework.web.client.RestTemplate;
import java.net.InetAddress;
import java.util.HashMap;
import java.util.Map;
public class HttpLoggerAppender extends UnsynchronizedAppenderBase<LoggingEvent> {
@Override
protected void append(LoggingEvent le) {
try {
String logUrl = context.getProperty("logUrl") + "?endPoint={endPoint}&title={title}&exMsg={exMsg}&level={level}";
String title = context.getProperty("logTitle");
String port = context.getProperty("logPort");
String content = le.getFormattedMessage();
Map<String, Object> log = new HashMap<>();
log.put("level", le.getLevel().levelStr);
log.put("exMsg", le.getLevel().levelStr+"-"+le.getLoggerName()+":" +content);
log.put("title", title);
log.put("endPoint", InetAddress.getLocalHost().getHostAddress() + ":" + port); RestTemplate restTemplate = new RestTemplate();
try {
restTemplate.getForObject(logUrl, String.class, log);
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
2、修改bootstrap.yaml文件
目的:增加日志自定义参数
logconfig:
url: http://192.168.0.123/ialarmservice/send
title: 服务
port: 8186
3、logback-spring.xml增加配置文件
目的:定义自定义属性为appender使用,定义appender接收日志。
<springProperty scope="context" name="logUrl" source="logconfig.url" defaultValue="test"/>
<springProperty scope="context" name="logTitle" source="logconfig.title" defaultValue="test"/>
<springProperty scope="context" name="logconfigPort" source="logconfig.port"/>
<appender name="warnLog" class="com.test.service.appender.HttpLoggerAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>warn</level>
</filter>
</appender>
<springProfile name="test">
<root level="info">
<appender-ref ref="warnLog"/>
</root>
</springProfile>