Mule ESB 3.4.0 CE: Unable to find custom log4j appender in MuleStudio, but works in Mule Standalone

怎甘沉沦 提交于 2019-12-11 19:44:37

问题


I am trying to do some development and I am using log4j to log some events into our database. I made a subclass of the JDBC appender so we can properly interface with our database.

The log4j.properties file is located at src/main/resources.

However, when I run off of MuleStudio, I get this output:

log4j:ERROR Could not instantiate class [com.mycompany.mule.log.appender.MySuperAppender].
java.lang.ClassNotFoundException: com.mycompany.mule.log.appender.MySuperAppender
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.apache.log4j.helpers.Loader.loadClass(Loader.java:198)
    at org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:326)
    at org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java:123)
    at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:752)
    at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:735)
    at org.apache.log4j.PropertyConfigurator.parseCatsAndRenderers(PropertyConfigurator.java:639)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:504)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:547)
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:483)
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
    at org.apache.log4j.Logger.getLogger(Logger.java:117)
    at org.mule.module.logging.LoggerReferenceHandler.<init>(LoggerReferenceHandler.java:28)
    at org.mule.module.logging.MuleLogFactory.<init>(MuleLogFactory.java:41)
    at org.apache.commons.logging.LogFactory.<clinit>(LogFactory.java:32)
    at org.mule.module.launcher.DefaultMuleDeployer.<init>(DefaultMuleDeployer.java:33)
    at org.mule.tooling.server.application.ApplicationDeployer.main(ApplicationDeployer.java:87)
log4j:ERROR Could not instantiate appender named "DBappender".

I also have other appenders specified in the log4j.properties and those load fine.

I did some research (about three/four hours) and it seems to be an issue with the classloader. I tried overriding the classloader as per the documentation but without success. I edited the mule-deploy.properties file directly (I couldn't find the "proper" way to do it from MuleStudio)

loader.override=com.mycompany.mule.log.appender.MySuperAppender

I am a bit baffled as to why it would not work in MuleStudio, but when I deploy the application in a Mule-standalone instance, it works fine. Any thoughts?

来源:https://stackoverflow.com/questions/22674795/mule-esb-3-4-0-ce-unable-to-find-custom-log4j-appender-in-mulestudio-but-works

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!