我有码头6下运行在Linux上Solr的服务器,我试图建立了Java记录自定义格式,但是我似乎无法得到它认识我的自定义类。我是Java新手,因此可能引用它是我输出我的类或类似的问题。请注意,这几乎是同样的问题,可以发现here,但答案有没有帮助,因为我有一个公共的无参数的构造函数。SolrJetty日志记录 - 如何让自定义日志格式化程序工作?
我的格式如下所示(描述here):
package myapp.solr;
import java.text.MessageFormat;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
public class LogFormatter extends Formatter {
private static final MessageFormat fmt = new MessageFormat("{0,date,yyyy-MM-dd HH:mm:ss} {1} [{2}] {3}\n");
public LogFormatter() {
super();
}
@Override public String format(LogRecord record) {
Object[] args = new Object[5];
args[0] = new Date(record.getMillis());
args[1] = record.getLevel();
args[2] = record.getLoggerName() == null ? "root" : record.getLoggerName();
args[3] = record.getMessage();
return fmt.format(args);
}
}
在我的logging.properties文件,然后我有下面的(以及性能配置文件路径/模式和旋转极限,数):
handlers = java.util.logging.FileHandler
java.util.logging.FileHandler.formatter = myapp.solr.LogFormatter
我然后导出我的课到myapp.jar,并把它在lib/ext文件夹中jetty.home(我也试过把它直接lib下,我试图指定的路径,将其与-Djetty.class.path参数)。但是,当我运行我的solr应用程序时,它仍然使用XmlFormatter。我能够成功地将其更改为使用SimpleFormatter,而不是我自己的自定义格式器。
我还创建了进口我LogFormatter,创建一个实例变量,并调用格式化方法并打印结果到控制台测试类,并没有任何问题,即工作在Eclipse中。
如果有帮助,我使用启动的Solr /码头的命令是:
nohup java -DSTOP.PORT=8079 -DSTOP.KEY=secret -Dsolr.solr.home=../solr_home/local -Djava.util.config.file=../solr_home/local/logging.properties -jar start.jar > /var/log/solr/stdout.log 2&>1 &
所以我在做什么错,为什么会不是用我的自定义格式?