自定义Log4j appender的配置不起作用

时间:2014-01-21 15:38:17

标签: solr log4j jetty

我创建了一个自定义appender(将用于Linux)。为了创建这个appender,我使用了这篇文章How write custom log4j appender

public class SolrAppender extends AppenderSkeleton {

private String path = null;     
public void setPath(String path)  { this.path = path; }
public String  getPath()          { return this.path; }

@Override
public boolean requiresLayout() {
    return true;
}

@Override
public void close() {

}

@Override
public void activateOptions() {
    super.activateOptions();        
}

@Override
public synchronized void append(LoggingEvent event) {

            SolrServer server = new HttpSolrServer(path);                   
    SolrInputDocument document = new SolrInputDocument();
    //some logic
            UpdateResponse response = server.add(document);
    server.commit();                

}   

此appender的配置是

  1. #Solr appender
  2. log4j.appender.SOLR = ricardo.solr.appender.QueryParser.SolrAppender
  3. log4j.appender.SOLR.layout = org.apache.log4j.SimpleLayout
  4. log4j.appender.SOLR.path = http://XX.XXX.XX.XX:8985/application/core
  5. 如果路径是硬编码的,则Appender工作正常。为什么路径没有通过配置设置?

1 个答案:

答案 0 :(得分:0)

从我到目前为止看到的,在配置中,appender属性的名称应该以大写字符开头,所以'Path'而不是'path',所以你应该使用:

log4j.appender.SOLR.Path = http://XX.XXX.XX.XX:8985/application/core

不知道为什么“布局”的情况并非如此。