2013-10-18 6 views
12

deaktivieren Ich habe versucht, Geschwindigkeitsprotokolle zu deaktivieren, und die einzige Möglichkeit, die ich bisher mit positiven Ergebnissen gefunden habe, ist zu setzen:Wie Geschwindigkeitsprotokolle

runtime.log.logsystem.class=org.apache.velocity.runtime.log.NullLogSystem 

aber innerhalb der velocity.properties, Das liegt in der velocity.jar.

Ich verwende Geschwindigkeit im Kontext einer Webanwendung (Tomcat). Gibt es eine Möglichkeit, die Geschwindigkeit zu deaktivieren (durch die Einstellung der vorherigen Eigenschaft oder was auch immer), aber ohne die JAR zu ändern?

Kann jeder Code nicht ändern

Vielen Dank im Voraus

+0

Veröffentlichen Sie Ihre Anwendung Protokollierungseigenschaften genannt – Keerthivasan

+0

Ich habe nur ein log4j.properties mit nichts in Bezug auf Geschwindigkeit in der es – luiso1979

Antwort

2

Dies ist, wie Sie die Protokollierung in velocity gewünscht konfigurieren:

//java configuration 
VelocityEngine ve = new VelocityEngine(); 
ve.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, "org.apache.velocity.runtime.log.Log4JLogChute"); 
ve.setProperty("runtime.log.logsystem.log4j.logger","velocity"); 

//log4j properties 
log4j.category.velocity=WARN 

IMHO INFO ist fein mit velocity wie beim Start Sie werden einige feststellen, nützliche Geschwindigkeits-Engine-Konfiguration Details, aber während des Templating nichts kommt aus INFO Ebene.

+0

den Code nicht berühren kann (sorry, wenn ich vergessen, dass Detail, ich werde die Frage bearbeiten) – luiso1979

+0

Außerdem lese ich die Velocity [Dokumentation] (http://velocity.apache.org/engine/devel/developer-guide.html#Configuring_Logging) – luiso1979

2

Sie können die Methode VelocityEngine Motor() von VelocityBuilder-Schnittstelle implementieren und dann eine Datei geben Sie wie folgt verwenden möchten:

public VelocityEngine engine() { 
       if(engine == null) { 
        engine = new VelocityEngine(); 

        Properties properties = new Properties(); 
        InputStream in = null; 
        try { 
//here is where you specify the filename "/WEB-INF/velocity.properties" 
         in = webApplicationContext.getServletContext().getResourceAsStream("/WEB-INF/velocity.properties"); 
         properties.load(in); 
         engine.init(properties); 
        } catch (IOException e) { 
         e.printStackTrace(); 
         logger.error("Error loading velocity engine properties"); 
         throw new ProgramException("Cannot load velocity engine properties"); 
        } 

        IOUtils.closeQuietly(in); 
       } 

       return engine; 
      } 

Und nachdem in Ihrer velocity.properties Datei:

resource.loader = framework 

framework.resource.loader.description = Framework Templates Resource Loader 
framework.resource.loader.class = applica.framework.library.velocity.WEBINFResourceLoader 

webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader 
webapp.resource.loader.path = 
runtime.log.logsystem.class=org.apache.velocity.runtime.log.NullLogSystem 
file.resource.loader.description = Velocity File Resource Loader 
file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader 
file.resource.loader.path = 

class.resource.loader.description = Velocity Classpath Resource Loader 
class.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader 
12

Im Allgemeinen: fügen Sie einfach folgende Zeile zu Ihrem velocity.properties hinzu:

runtime.log.logsystem.class=org.apache.velocity.runtime.log.NullLogChute 

Auf Ihre Frage: Es hängt davon ab, wie die Geschwindigkeitsmotor geladen ist. Ist es möglich, eine benutzerdefinierte velocity.properties Datei zu geben?
Zum Beispiel hat Solr VelocityResponseWriter eine solche Eigenschaft v.properties (oder init.properties.file in aktuellen Versionen).
Schauen Sie, wenn die Methode org.apache.velocity.app.VelocityEngine.init(Properties) irgendwo im Code ...