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> {@Overrideprotected 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/sendtitle: 服务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>