更改Velocity.Log文件的位置

时间:2011-06-02 23:04:09

标签: apache velocity logfiles

似乎非常直截了当。 http://velocity.apache.org/engine/devel/developer-guide.html#Configuring_Logging处的文档 说要设置runtime.log属性。这是我为所有财产所得到的。

velocityEngine.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, templatesPath);

            velocityEngine.setProperty("runtime.log", "/path/to/my/file/velocity.log");
            velocityEngine.setProperty("resource.loader", "string");
            velocityEngine.setProperty("string.resource.loader.class", "org.apache.velocity.runtime.resource.loader.StringResourceLoader");
            velocityEngine.setProperty("string.resource.loader.repository.class", "org.apache.velocity.runtime.resource.util.StringResourceRepositoryImpl");

找不到我告诉它放置它的任何日志文件,而是找到放入旧(初始化文件夹)位置的新错误。有任何想法吗? :d

1 个答案:

答案 0 :(得分:1)

在运行时设置一些选项时遇到了类似的问题。我找出了自定义VelocityBuilder和外部velocity.properties文件的问题,您可以在其中放置所有运行时属性。 这是代码:

public class BaseVelocityBuilder implements VelocityBuilder {
    private VelocityEngine engine;

    private Log logger = LogFactory.getLog(getClass());

    @Autowired
    private WebApplicationContext webApplicationContext;

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

            Properties properties = new Properties();
            InputStream in = null;
            try {
                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;
    }
}

见这一行:

            in = webApplicationContext.getServletContext().getResourceAsStream("/WEB-INF/velocity.properties");
            properties.load(in);
            engine.init(properties);

所以我在/ WEB-INF中有一个velocity.properties文件,我在其中放置了一些配置:

    resource.loader = webinf, class

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

webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader
webapp.resource.loader.path =

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
runtime.log='/pathYouWant/velocity.log'

最后在application.xml中:

    <bean class="applica.framework.library.velocity.BaseVelocityBuilder" />

通过这种方式,您可以为不同的应用程序提供不同的文件日志,当您在生产中提供战争时,由于生产服务器的env配置,sysadm可以更改属性。