美文网首页
logback自定义appender读取xml中的配置

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

作者: 大侠陈 | 来源:发表于2020-09-23 15:37 被阅读0次

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

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

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

    <appender name="httpAppender" class="log.HttpLogAppender">
    </appender>
    

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

    public class HttpLogAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
        @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配置

    <appender name="logic31" class="log.HttpLogAppender">
        <httpUrl>http://localhost:8080/log</httpUrl>
    </appender>
    

    修改代码

    public class HttpLogAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
        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中的配置

          本文链接:https://www.haomeiwen.com/subject/xzloyktx.html