2017-10-07 92 views
1

我在linux下運行初始化org.apache.velocity.runtime.log.Log4JLogChute的實例, 在我的應用程序限制的許可,所有的路徑將是隻讀無法與當前運行時配置

在我的應用程序我用velocity-1.6.2.jar並且每次調用它時都會創建velocity.log並且這個文件應該是可讀寫的。

對於這個問題,我嘗試禁用速度日誌

我嘗試在速度性能加入這一行:

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

但我有此錯誤:

org.apache.velocity.exception.VelocityException: Failed to initialize an instance of org.apache.velocity.runtime.log.Log4JLogChute with the current runtime configuration. 
org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:206) 
org.apache.velocity.runtime.log.LogManager.updateLog(LogManager.java:255) 
org.apache.velocity.runtime.RuntimeInstance.initializeLog(RuntimeInstance.java:795) 
org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:250) 
org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:114) 
org.apache.velocity.app.Velocity.init(Velocity.java:79) 

這是文件速度屬性

# Licensed to the Apache Software Foundation (ASF) under one 
# or more contributor license agreements. See the NOTICE file 
# distributed with this work for additional information 
# regarding copyright ownership. The ASF licenses this file 
# to you under the Apache License, Version 2.0 (the 
# "License"); you may not use this file except in compliance 
# with the License. You may obtain a copy of the License at 
# 
# http://www.apache.org/licenses/LICENSE-2.0 
# 
# Unless required by applicable law or agreed to in writing, 
# software distributed under the License is distributed on an 
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
# KIND, either express or implied. See the License for the 
# specific language governing permissions and limitations 
# under the License.  

# ---------------------------------------------------------------------------- 
# R U N T I M E L O G 
# ---------------------------------------------------------------------------- 

# ---------------------------------------------------------------------------- 
# default LogChute to use: default: AvalonLogChute, Log4JLogChute, CommonsLogLogChute, ServletLogChute, JdkLogChute 
# ---------------------------------------------------------------------------- 

runtime.log.logsystem.class = org.apache.velocity.runtime.log.AvalonLogChute,org.apache.velocity.runtime.log.Log4JLogChute,org.apache.velocity.runtime.log.CommonsLogLogChute,org.apache.velocity.runtime.log.ServletLogChute,org.apache.velocity.runtime.log.JdkLogChute 

# --------------------------------------------------------------------------- 
# This is the location of the Velocity Runtime log. 
# ---------------------------------------------------------------------------- 

runtime.log = velocity.log 

# ---------------------------------------------------------------------------- 
# This controls whether invalid references are logged. 
# ---------------------------------------------------------------------------- 

runtime.log.invalid.references = true 

# ---------------------------------------------------------------------------- 
# T E M P L A T E E N C O D I N G 
# ---------------------------------------------------------------------------- 

input.encoding=ISO-8859-1 
output.encoding=ISO-8859-1 

# ---------------------------------------------------------------------------- 
# F O R E A C H P R O P E R T I E S 
# ---------------------------------------------------------------------------- 
# These properties control how the counter is accessed in the #foreach 
# directive. By default the reference $velocityCount and $velocityHasNext 
# will be available in the body of the #foreach directive. 
# The default starting value for $velocityCount is 1. 
# ---------------------------------------------------------------------------- 

directive.foreach.counter.name = velocityCount 
directive.foreach.counter.initial.value = 1 
directive.foreach.maxloops = -1 

directive.foreach.iterator.name = velocityHasNext 

# ---------------------------------------------------------------------------- 
# S E T P R O P E R T I E S 
# ---------------------------------------------------------------------------- 
# These properties control the behavior of #set. 
# For compatibility, the default behavior is to disallow setting a reference 
# to null. This default may be changed in a future version. 
# ---------------------------------------------------------------------------- 

directive.set.null.allowed = false 

# ---------------------------------------------------------------------------- 
# I N C L U D E P R O P E R T I E S 
# ---------------------------------------------------------------------------- 
# These are the properties that governed the way #include'd content 
# is governed. 
# ---------------------------------------------------------------------------- 

directive.include.output.errormsg.start = <!-- include error : 
directive.include.output.errormsg.end = see error log --> 

# ---------------------------------------------------------------------------- 
# P A R S E P R O P E R T I E S 
# ---------------------------------------------------------------------------- 

directive.parse.max.depth = 10 

# ---------------------------------------------------------------------------- 
# T E M P L A T E L O A D E R S 
# ---------------------------------------------------------------------------- 
# 
# 
# ---------------------------------------------------------------------------- 

resource.loader = file 

file.resource.loader.description = Velocity File Resource Loader 
file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader 
file.resource.loader.path = . 
file.resource.loader.cache = false 
file.resource.loader.modificationCheckInterval = 2 

# ---------------------------------------------------------------------------- 
# VELOCIMACRO PROPERTIES 
# ---------------------------------------------------------------------------- 
# global : name of default global library. It is expected to be in the regular 
# template path. You may remove it (either the file or this property) if 
# you wish with no harm. 
# ---------------------------------------------------------------------------- 
# velocimacro.library = VM_global_library.vm 

velocimacro.permissions.allow.inline = true 
velocimacro.permissions.allow.inline.to.replace.global = false 
velocimacro.permissions.allow.inline.local.scope = false 

velocimacro.context.localscope = false 
velocimacro.max.depth = 20 

# ---------------------------------------------------------------------------- 
# VELOCIMACRO STRICT MODE 
# ---------------------------------------------------------------------------- 
# if true, will throw an exception for incorrect number 
# of arguments. false by default (for backwards compatibility) 
# but this option will eventually be removed and will always 
# act as if true 
# ---------------------------------------------------------------------------- 
velocimacro.arguments.strict = false 

# ---------------------------------------------------------------------------- 
# STRICT REFERENCE MODE 
# ---------------------------------------------------------------------------- 
# if true, will throw a MethodInvocationException for references 
# that are not defined in the context, or have not been defined 
# with a #set directive. This setting will also throw an exception 
# if an attempt is made to call a non-existing property on an object 
# or if the object is null. When this property is true then property 
# 'directive.set.null.allowed' is also set to true. 
# ---------------------------------------------------------------------------- 
runtime.references.strict = false 

# ---------------------------------------------------------------------------- 
# INTERPOLATION 
# ---------------------------------------------------------------------------- 
# turn off and on interpolation of references and directives in string 
# literals. ON by default :) 
# ---------------------------------------------------------------------------- 
runtime.interpolate.string.literals = true 


# ---------------------------------------------------------------------------- 
# RESOURCE MANAGEMENT 
# ---------------------------------------------------------------------------- 
# Allows alternative ResourceManager and ResourceCache implementations 
# to be plugged in. 
# ---------------------------------------------------------------------------- 
resource.manager.class = org.apache.velocity.runtime.resource.ResourceManagerImpl 
resource.manager.cache.class = org.apache.velocity.runtime.resource.ResourceCacheImpl 

# ---------------------------------------------------------------------------- 
# PARSER POOL 
# ---------------------------------------------------------------------------- 
# Selects a custom factory class for the parser pool. Must implement 
# ParserPool. parser.pool.size is used by the default implementation 
# ParserPoolImpl 
# ---------------------------------------------------------------------------- 

parser.pool.class = org.apache.velocity.runtime.ParserPoolImpl 
parser.pool.size = 20 


# ---------------------------------------------------------------------------- 
# EVENT HANDLER 
# ---------------------------------------------------------------------------- 
# Allows alternative event handlers to be plugged in. Note that each 
# class property is actually a comma-separated list of classes (which will 
# be called in order). 
# ---------------------------------------------------------------------------- 
# eventhandler.referenceinsertion.class = 
# eventhandler.nullset.class = 
# eventhandler.methodexception.class = 
# eventhandler.include.class = 


# ---------------------------------------------------------------------------- 
# EVALUATE 
# ---------------------------------------------------------------------------- 
# Evaluate VTL dynamically in template. Select a class for the Context 
# ---------------------------------------------------------------------------- 

directive.evaluate.context.class = org.apache.velocity.VelocityContext 


# ---------------------------------------------------------------------------- 
# PLUGGABLE INTROSPECTOR 
# ---------------------------------------------------------------------------- 
# Allows alternative introspection and all that can of worms brings. 
# ---------------------------------------------------------------------------- 

runtime.introspector.uberspect = org.apache.velocity.util.introspection.UberspectImpl 


# ---------------------------------------------------------------------------- 
# SECURE INTROSPECTOR 
# ---------------------------------------------------------------------------- 
# If selected, prohibits methods in certain classes and packages from being 
# accessed. 
# ---------------------------------------------------------------------------- 

introspector.restrict.packages = java.lang.reflect 

# The two most dangerous classes 

introspector.restrict.classes = java.lang.Class 
introspector.restrict.classes = java.lang.ClassLoader 

# Restrict these for extra safety 

introspector.restrict.classes = java.lang.Compiler 
introspector.restrict.classes = java.lang.InheritableThreadLocal 
introspector.restrict.classes = java.lang.Package 
introspector.restrict.classes = java.lang.Process 
introspector.restrict.classes = java.lang.Runtime 
introspector.restrict.classes = java.lang.RuntimePermission 
introspector.restrict.classes = java.lang.SecurityManager 
introspector.restrict.classes = java.lang.System 
introspector.restrict.classes = java.lang.Thread 
introspector.restrict.classes = java.lang.ThreadGroup 
introspector.restrict.classes = java.lang.ThreadLocal 


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

更新時間:

我嘗試還評論其他線路在速度性能

#runtime.log.logsystem.class = org.apache.velocity.runtime.log.AvalonLogChute,org.apache.velocity.runtime.log.Log4JLogChute,org.apache.velocity.runtime.log.CommonsLogLogChute,org.apache.velocity.runtime.log.ServletLogChute,org.apache.velocity.runtime.log.JdkLogChute 

但我有其他的錯誤:

java.lang.NullPointerException 
org.apache.velocity.runtime.RuntimeInstance.parse(RuntimeInstance.java:1103) 
org.apache.velocity.runtime.RuntimeInstance.parse(RuntimeInstance.java:1086) 
org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1199) 
org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1165) 
org.apache.velocity.app.Velocity.evaluate(Velocity.java:191) 

回答