On Mar 3, 2007, at 12:56 PM, Brian Whitman wrote:
I'm trying to disable all logging from Solr, or at least re-route
it to a file.
Hi Brian, all you have to do is create a logging.properties file and
call this before starting up solr:
System.setProperty("java.util.logging.config.file", home+"/conf/
logging.properties");
Your logging.properties file can look like this:
---
handlers= java.util.logging.FileHandler
# Default global logging level.
.level= INFO
# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = %h/Library/Application\
Support/Your Company/solr%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
---
And that will disable console logging. For jetty logging, you need to
create a custom Log class that looks like this
package com.yourcompany.solr;
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.solr.core.Config;
import org.apache.solr.core.SolrCore;
import org.apache.solr.schema.IndexSchema;
import org.apache.solr.servlet.SolrDispatchFilter;
import org.apache.solr.servlet.SolrServlet;
import org.apache.solr.servlet.SolrUpdateServlet;
import org.mortbay.jetty.Handler;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.servlet.Context;
import org.mortbay.log.Logger;
import org.mortbay.jetty.servlet.FilterHolder;
import org.mortbay.util.DateCache;
public class NoLog implements Logger
{
private static boolean debug = System.getProperty("DEBUG",null)!
=null;
private String name;
static
{
}
public NoLog()
{
this(null);
}
public NoLog(String name)
{
this.name=name==null?"":name;
}
public boolean isDebugEnabled()
{
return debug;
}
public void setDebugEnabled(boolean enabled)
{
debug=enabled;
}
public void info(String msg,Object arg0, Object arg1)
{
}
public void debug(String msg,Throwable th)
{
}
public void debug(String msg,Object arg0, Object arg1)
{
}
public void warn(String msg,Object arg0, Object arg1)
{
}
public void warn(String msg, Throwable th)
{
}
private String format(String msg, Object arg0, Object arg1)
{
return "";
}
public Logger getLogger(String name)
{
if ((name==null && this.name==null) ||
(name!=null && name.equals(this.name)))
return this;
return new NoLog(name);
}
public String toString()
{
return "NOLOG"+name;
}
}
---
And then this before starting jetty
System.setProperty("org.mortbay.log.class",
"com.yourcompany.solr.NoLog");
NoLog noLogger = new NoLog();
org.mortbay.log.Log.setLog(noLogger);
Now, stop talking to yourself... :)
-Brian