web-dev-qa-db-ja.com

速度ログを無効にする方法

私はVelocityログを無効にしようとしてきましたが、これまでに肯定的な結果が得られた唯一の方法は、次のように設定することです。

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

ただし、velocity.jar内にあるvelocity.properties内。

Webアプリケーション(Tomcat)のコンテキストでvelocityを使用しています。 JARを変更せずに(前のプロパティなどを設定して)速度を無効にする方法はありますか?

コードを変更することはできません

前もって感謝します

15
luiso1979

一般:_velocity.properties_に次の行を追加するだけです:

_runtime.log.logsystem.class=org.Apache.velocity.runtime.log.NullLogChute
_

あなたの質問に:それは速度エンジンがどのようにロードされるかに依存します。カスタム_velocity.properties_ファイルを与えることは可能ですか?
たとえば、SolrのVelocityResponseWriterには、_v.properties_(または現在のバージョンでは_init.properties.file_)と呼ばれるプロパティがあります。
メソッドorg.Apache.velocity.app.VelocityEngine.init(Properties)がコードのどこかで呼び出された場合...

13
dedek

これは、velocityで必要なロギングを構成する方法です。

//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 INFOvelocityで問題ありません。起動時に、いくつかの有用な速度エンジン構成の詳細に気付くでしょうが、テンプレート作成中はINFOレベルから具体的なものは何も出てきません。

5
harsh

VelocityBuilderインターフェイスのメソッドVelocityEngineengine()を実装してから、使用するファイルを次のように指定できます。

    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;
            }

そして、velocity.propertiesファイルの後:

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
3
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.setProperty("runtime.log.logsystem.class", NullLogChute.class.getName());
velocityEngine.init();
1
Oleg Mikhailov