Error in velocity and log4J

前端 未结 6 1566
梦谈多话
梦谈多话 2021-01-04 00:29

I built a webapp that works perfectly fine in my localhost (tomcat). But when I tried to deploy, velocity crashes in init(), leaving me with this strange stack trace here (s

相关标签:
6条回答
  • 2021-01-04 00:40

    I faced the same issue and have written a descriptive blog with the possible causes and solutions. Here is the link

    0 讨论(0)
  • 2021-01-04 00:44

    Velocity tries to put the logfile in the directory Tomcat was started from, and I believe that is actually /.

    You can force Velocity to log to Tomcat's standard log by adding these lines to your velocity.properties:

    runtime.log.logsystem.class=org.apache.velocity.runtime.log.SimpleLog4JLogSystem
    runtime.log.logsystem.log4j.category=velocity
    runtime.log.logsystem.log4j.logger=velocity
    

    The velocity.properties should go into /WEB-INF/velocity.properties but you can override that in you servlet definition in web.xml.

    If you're initialising Velocity by properties and not the velocity.properties:

    VelocityEngine engine = new VelocityEngine();
    
    Properties props = new Properties();
    props.put("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.SimpleLog4JLogSystem");
    props.put("runtime.log.logsystem.log4j.category", "velocity");
    props.put("runtime.log.logsystem.log4j.logger", "velocity");
    
    engine.init(props);
    

    Read more here:

    http://velocity.apache.org/engine/devel/developer-guide.html#usinglog4jwithexistinglogger

    and here:

    http://minaret.biz/tips/tomcatLogging.html#velocity

    0 讨论(0)
  • 2021-01-04 00:51

    I think this line has the answer. Looks like there is an issue creating the velocity.log file. What does your configuration file look like?

    Caused by: java.io.FileNotFoundException: velocity.log (Permission denied)
    
    0 讨论(0)
  • 2021-01-04 00:59

    I too had same Issue but I was able to resolve this overriding the default log file to customized log file. Just add this 3 lines of code in the method where you are calling evaluate Function.

    Velocity.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,"org.apache.velocity.runtime.log.Log4JLogChute");
    
    Velocity.setProperty("runtime.log.logsystem.log4j.logger","com.mindtree.igg.website.email.TemplateMergeUtilVelocityImpl");
    
    VelocityContext velocityContext = new VelocityContext(parameters);
    

    This is one way of solving it ie, without using property file.

    0 讨论(0)
  • 2021-01-04 01:06

    It appears the process attempting to open the log file does not have permission to do so:

    Caused by: java.io.FileNotFoundException: velocity.log (Permission denied)
    
    0 讨论(0)
  • 2021-01-04 01:07

    I have had exactly the same problem with my code and after hours of googling for that , I just decided to add some other Velocity libraries to my project. My project only had the apache-velocity jar file, then from here, I also added Velocity-Dep to my Maven project and Yesssssssssss! VICTORY!

    0 讨论(0)
提交回复
热议问题