logback自定义appender读取xml中的配置

logback自定义appender读取xml中的配置

logback之类的日志框架默认将日志以文本的形式保存到磁盘上。

如果我们希望将日志以其他方式保存,比如通过http将日志发送到别的位置,方法是自定义appender



我们在xml配置中自定义一个appender类HttpLogAppender,继承至UnsynchronizedAppenderBase,代码很简单。

public class HttpLogAppender extends UnsynchronizedAppenderBase {
    @Override
    public void append(ILoggingEvent event) {
        String httpUrl = "http://localhost:8080/log";
        //日志级别
        String level = event.getLevel().toString();
        //日志内容
        String message =event.getFormattedMessage();
        //发送
        httpSend(httpUrl,level, message);   
    }
}

然而有时候我们希望通过xml配置传一些自定义属性给程序,比如以上面的代码为例,我们希望http服务器的地址通过配置传递给代码,而不是硬编码在代码里,我们可以这样实现

修改xml配置


    http://localhost:8080/log

修改代码

public class HttpLogAppender extends UnsynchronizedAppenderBase {
    String httpUrl;

    public void setHttpUrl(String httpUrl) {
        this.httpUrl = httpUrl;
    }

    @Override
    public void append(ILoggingEvent event) {
        //日志级别
        String level = event.getLevel().toString();
        //日志内容
        String message =event.getFormattedMessage();
        //发送
        httpSend(httpUrl,level, message);   
    }
}

logback框架会自动将appender下的自定义子节点的值填充到java类里面,也就是说在初始化的时候会自动调用HttpLogAppender的setHttpUrl方法,设置httpUrl属性。

这样就可以简单方便的实现自定义属性配置。

你可能感兴趣的:(logback自定义appender读取xml中的配置)