Log4j-appserver can be used to route logging from Tomcat 8.5 or later to Log4j 2. See http://logging.apache.org/log4j/2.x/log4j-appserver/index.html <http://logging.apache.org/log4j/2.x/log4j-appserver/index.html>
Ralph > On Apr 23, 2020, at 8:41 AM, Matt Sicker <boa...@gmail.com> wrote: > > It almost sounds like you have duplicate jars somewhere, or you may > have discovered some sort of regression. If you put log4j-core inside > your Tomcat lib directory, then you don't want to use log4j-web at all > since logging will be managed at the Java application level (i.e., > Tomcat itself) rather than at the war level. If you put log4j-core in > your war file as a lib, then you shouldn't include it in your Tomcat > lib, and you should include log4j-web in your war as that ensures your > logging config matches the life cycle of your web application (through > the ServletContextListener thing). I'm not really sure what > log4j-appserver is for. > > One thing to keep in mind is that the JUL used in Tomcat is modified. > The log4j-jul bridge is for replacing the LogManager with a log4j > native one. In Tomcat, this might not be possible as they have their > own LogManager implementation, so you should try using the slf4j-jul > bridge which implements a Filter instead of LogManager. I think > there's an open ticket in log4j somewhere about adding a Filter > implementation for JUL for that type of scenario, but the workaround > is using the slf4j jul bridge and then the log4j-slf4j-impl bridge. > > On Thu, 23 Apr 2020 at 09:52, Abdul Hussain > <abdul.huss...@matillion.com.invalid> wrote: >> >> Our application is a web application that uses tomcat 8 for the web >> server. Our application is assembled and deployed with maven. >> Previously we relied on the default logging offered by tomcat. I've >> been attempting to switch over to log4j2 locally by switching our >> pom.xml slf4j-jdk references to use log4j-slf4j-impl and log4j-web. >> I've also set this property isLog4jAutoInitializationDisabled and also >> included the listener changes documentation regarding servlet 2.5 web >> application as this was causing exceptions (though we use servlet >> 3.0). Regarding my tomcat configuration I've amended it to include a >> log4j2 folder lib and conf (log4j2.xml) folder as per the >> documentation. The lib folder includes log4j-api, log4j-appserver, >> log4j-core and log4j-jul (versions 2.12.1).Issues we are having: >> - The org.apache.logging.log4j.core.impl.Log4jProvider not a subtype >> (not sure what to make of this exception I think the dependendencies >> from the pom.xml are conflicting with those in my log4j2/lib folder) >> - JUL logs following the log4j2.xml configuration except for including >> the ThreadContext as it is losing it as soon as the logger enters >> Log4j code from debugging (we've decided to switch all JUL logs to use >> SLF4J)Apologies if I'm not being clear I'm trying to be exhaustive >> regarding our setup and the issues we are having, our integration with >> SLF4J log messages seem fine with preserving the thread context hence >> why we've decided to switch all our JUL logs to use SLF4J, would be >> good to find the root cause of that excption. >> >> >> On Thu, 23 Apr 2020 at 14:53, Matt Sicker <boa...@gmail.com> wrote: >> >>> Can you tell us more about how you assemble and deploy this application? >>> There multiple ways to integrate log4j2 into web apps. >>> >>> On Thu, Apr 23, 2020 at 08:51 Abdul Hussain >>> <abdul.huss...@matillion.com.invalid> wrote: >>> >>>> without the web jar my web application does not output logs. >>>> >>>> On Thu, 23 Apr 2020 at 14:25, Matt Sicker <boa...@gmail.com> wrote: >>>> >>>>> If you’re putting it as a shared library like that, then you don’t want >>>> to >>>>> use the web jar as well. It’s only for wars. >>>>> >>>>> On Thu, Apr 23, 2020 at 08:18 Abdul Hussain >>>>> <abdul.huss...@matillion.com.invalid> wrote: >>>>> >>>>>> apologies I forgot to mention that I have added the log4j-web >>>> dependency >>>>>> within my pom file, with log4j-appserver dependency within my tomcat >>>>>> log4j2/lib folder >>>>>> >>>>>> On Thu, 23 Apr 2020 at 14:01, Matt Sicker <boa...@gmail.com> wrote: >>>>>> >>>>>>> If you’re using log4j2 in a war file, you should add log4j-web as a >>>>>>> dependency. >>>>>>> >>>>>>> On Thu, Apr 23, 2020 at 05:57 Abdul Hussain >>>>>>> <abdul.huss...@matillion.com.invalid> wrote: >>>>>>> >>>>>>>> seems like a tomcat issue integrating with log4j2. Also what >>>>>> dependencies >>>>>>>> do I need to get JUL to log4j2 to not lose the ThreadContext? >>>>>>>> >>>>>>>> On Thu, 23 Apr 2020 at 11:55, Abdul Hussain < >>>>>> abdul.huss...@matillion.com >>>>>>>> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> 10:43:20.589 [localhost-startStop-1] INFO >>>>>>>>> org.apache.catalina.startup.HostConfig - Deployment of web >>>>>> application >>>>>>>>> directory >>>>>> [/home/abdullah/Desktop/apache-tomcat-8.5.50/webapps/manager] >>>>>>>> has >>>>>>>>> finished in [206] ms >>>>>>>>> 10:43:37.464 [RMI TCP Connection(2)-127.0.0.1] INFO >>>>>>>>> org.apache.jasper.servlet.TldScanner - At least one JAR was >>>>> scanned >>>>>>> for >>>>>>>>> TLDs yet contained no TLDs. Enable debug logging for this >>> logger >>>>> for >>>>>> a >>>>>>>>> complete list of JARs that were scanned but no TLDs were found >>> in >>>>>> them. >>>>>>>>> Skipping unneeded JARs during scanning can improve startup time >>>> and >>>>>> JSP >>>>>>>>> compilation time. >>>>>>>>> DEBUG StatusLogger Unable to retrieve provider from ClassLoader >>>>>>>>> java.net.URLClassLoader@344f4dea >>>>>>>>> java.util.ServiceConfigurationError: >>>>>>>>> org.apache.logging.log4j.spi.Provider: Provider >>>>>>>>> org.apache.logging.log4j.core.impl.Log4jProvider not a subtype >>>>>>>>> at java.util.ServiceLoader.fail(ServiceLoader.java:239) >>>>>>>>> at java.util.ServiceLoader.access$300(ServiceLoader.java:185) >>>>>>>>> at >>>>>>>> >>>>>> >>>> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376) >>>>>>>>> at >>>>> java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) >>>>>>>>> at java.util.ServiceLoader$1.next(ServiceLoader.java:480) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.util.ProviderUtil.loadProviders(ProviderUtil.java:109) >>>>>>>>> at >>>>>>>> >>>>> org.apache.logging.log4j.util.ProviderUtil.<init>(ProviderUtil.java:68) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.util.ProviderUtil.lazyInit(ProviderUtil.java:150) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.util.ProviderUtil.hasProviders(ProviderUtil.java:134) >>>>>>>>> at >>>> org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:89) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:138) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:48) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30) >>>>>>>>> at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358) >>>>>>>>> at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.matillion.bi.cactus.server.ContextListener.<clinit>(ContextListener.java:23) >>>>>>>>> at >>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native >>>>>>> Method) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) >>>>>>>>> at >>>> java.lang.reflect.Constructor.newInstance(Constructor.java:423) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:151) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4621) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5165) >>>>>>>>> at >>>>>> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743) >>>>>>>>> at >>>>>>>> >>>>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719) >>>>>>>>> at >>>>>>> >>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705) >>>>>>>>> at >>>>>>> >>>> org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1720) >>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) >>>>>>>>> at >>>>>>> >>>> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:479) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:428) >>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) >>>>>>>>> at >>>>>>> >>>> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) >>>>>>>>> at java.security.AccessController.doPrivileged(Native Method) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) >>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>>>>>> at >>>>>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) >>>>>>>>> at sun.rmi.transport.Transport$1.run(Transport.java:200) >>>>>>>>> at sun.rmi.transport.Transport$1.run(Transport.java:197) >>>>>>>>> at java.security.AccessController.doPrivileged(Native Method) >>>>>>>>> at sun.rmi.transport.Transport.serviceCall(Transport.java:196) >>>>>>>>> at >>>>>>>> >>>>>> >>>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688) >>>>>>>>> at java.security.AccessController.doPrivileged(Native Method) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) >>>>>>>>> at java.lang.Thread.run(Thread.java:748) >>>>>>>>> DEBUG StatusLogger Unable to retrieve provider from ClassLoader >>>>>>>>> sun.misc.Launcher$AppClassLoader@18b4aac2 >>>>>>>>> java.util.ServiceConfigurationError: >>>>>>>>> org.apache.logging.log4j.spi.Provider: Provider >>>>>>>>> org.apache.logging.log4j.core.impl.Log4jProvider not a subtype >>>>>>>>> at java.util.ServiceLoader.fail(ServiceLoader.java:239) >>>>>>>>> at java.util.ServiceLoader.access$300(ServiceLoader.java:185) >>>>>>>>> at >>>>>>>> >>>>>> >>>> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376) >>>>>>>>> at >>>>> java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) >>>>>>>>> at java.util.ServiceLoader$1.next(ServiceLoader.java:480) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.util.ProviderUtil.loadProviders(ProviderUtil.java:109) >>>>>>>>> at >>>>>>>> >>>>> org.apache.logging.log4j.util.ProviderUtil.<init>(ProviderUtil.java:68) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.util.ProviderUtil.lazyInit(ProviderUtil.java:150) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.util.ProviderUtil.hasProviders(ProviderUtil.java:134) >>>>>>>>> at >>>> org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:89) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:138) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:48) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30) >>>>>>>>> at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358) >>>>>>>>> at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.matillion.bi.cactus.server.ContextListener.<clinit>(ContextListener.java:23) >>>>>>>>> at >>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native >>>>>>> Method) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) >>>>>>>>> at >>>> java.lang.reflect.Constructor.newInstance(Constructor.java:423) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:151) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4621) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5165) >>>>>>>>> at >>>>>> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743) >>>>>>>>> at >>>>>>>> >>>>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719) >>>>>>>>> at >>>>>>> >>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705) >>>>>>>>> at >>>>>>> >>>> org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1720) >>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) >>>>>>>>> at >>>>>>> >>>> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:479) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:428) >>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) >>>>>>>>> at >>>>>>> >>>> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) >>>>>>>>> at java.security.AccessController.doPrivileged(Native Method) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) >>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>>>>>> at >>>>>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) >>>>>>>>> at sun.rmi.transport.Transport$1.run(Transport.java:200) >>>>>>>>> at sun.rmi.transport.Transport$1.run(Transport.java:197) >>>>>>>>> at java.security.AccessController.doPrivileged(Native Method) >>>>>>>>> at sun.rmi.transport.Transport.serviceCall(Transport.java:196) >>>>>>>>> at >>>>>>>> >>>>>> >>>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688) >>>>>>>>> at java.security.AccessController.doPrivileged(Native Method) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) >>>>>>>>> at >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) >>>>>>>>> at java.lang.Thread.run(Thread.java:748) >>>>>>>>> DEBUG StatusLogger Using ShutdownCallbackRegistry class >>>>>>>>> >>>> org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry >>>>>>>>> DEBUG StatusLogger Took 0.217997 seconds to load 211 plugins >>> from >>>>>>>>> ParallelWebappClassLoader >>>>>>>>> context: emerald-decaf >>>>>>>>> delegate: false >>>>>>>>> ----------> Parent Classloader: >>>>>>>>> java.net.URLClassLoader@344f4dea >>>>>>>>> >>>>>>>>> DEBUG StatusLogger PluginManager 'Converter' found 44 plugins >>>>>>>>> DEBUG StatusLogger Starting OutputStreamManager >>>>>>> SYSTEM_OUT.false.false-1 >>>>>>>>> DEBUG StatusLogger Starting LoggerContext[name=21fb773, >>>>>>>>> org.apache.logging.log4j.core.LoggerContext@76a22895]... >>>>>>>>> DEBUG StatusLogger Reconfiguration started for >>>>> context[name=21fb773] >>>>>> at >>>>>>>>> URI null (org.apache.logging.log4j.core.LoggerContext@76a22895 >>> ) >>>>> with >>>>>>>>> optional ClassLoader: null >>>>>>>>> DEBUG StatusLogger PluginManager 'ConfigurationFactory' found 4 >>>>>> plugins >>>>>>>>> DEBUG StatusLogger Missing dependencies for Yaml support, >>>>>>>>> ConfigurationFactory >>>>>>>>> >>>> org.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory >>>>> is >>>>>>>>> inactive >>>>>>>>> DEBUG StatusLogger Using configurationFactory >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.core.config.ConfigurationFactory$Factory@16e881d4 >>>>>>>>> DEBUG StatusLogger Closing ByteArrayInputStream >>>>>>>>> java.io.ByteArrayInputStream@6df65972 >>>>>>>>> >>>>>>>>> On Thu, 23 Apr 2020 at 11:55, Abdul Hussain < >>>>>>> abdul.huss...@matillion.com >>>>>>>>> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Managed to get passed the SLF4J warning, I had a transitive >>>>>> dependency >>>>>>>>>> which I've excluded, any insight on the following exception >>> that >>>>> I'm >>>>>>>> still >>>>>>>>>> getting: >>>>>>>>>> >>>>>>>>>> On Wed, 22 Apr 2020 at 18:13, Matt Sicker <boa...@gmail.com> >>>>> wrote: >>>>>>>>>> >>>>>>>>>>> That log says you had both bridges installed at the same >>> time. >>>>>>>>>>> >>>>>>>>>>> On Wed, 22 Apr 2020 at 10:33, Abdul Hussain >>>>>>>>>>> <abdul.huss...@matillion.com.invalid> wrote: >>>>>>>>>>>> >>>>>>>>>>>> I was previously bridging JUL to SLF4J >>>> (org.slf4j.jul-to-slf4j) >>>>>> and >>>>>>>>>>> then >>>>>>>>>>>> from SLF4j to >>>> Log4j(org.apache.logging.log4j.log4j-slf4j-impl) >>>>>>> though >>>>>>>>>>>> utilised ThreadContext within my code rather than SLF4J >>> MDC. >>>> I >>>>>> also >>>>>>>>>>> set the >>>>>>>>>>>> following flag on run: >>>>>>>>>>>> >>>>> java.util.logging.manager=org.apache.logging.log4j.jul.LogManager >>>>>>>>>>>> >>>>>>>>>>>> Noticing the performance impact with bridging from JUL to >>>>> SLF4J. >>>>>> I >>>>>>>> have >>>>>>>>>>>> also tried directly bridging from jul to log4j with >>>>>>>>>>> lof4j-jul-2.12.1.jar >>>>>>>>>>>> which seems to format the jul messages according to >>>> log4j2.xml >>>>>>> though >>>>>>>>>>> the >>>>>>>>>>>> thread context is being lost as soon as I enter log4j code >>>> and >>>>> so >>>>>>> MDC >>>>>>>>>>> is >>>>>>>>>>>> not working for JUL logs. >>>>>>>>>>>> >>>>>>>>>>>> The logs below may shed some insight on this. I'm not sure >>>>>>>>>>>> where slf4j-jdk14-1.7.25.jar is being picked up from given >>>> it's >>>>>> not >>>>>>>>>>> within >>>>>>>>>>>> my pom.xml. Also my tomcat log4j2 lib folder includes >>>>> log4j-api, >>>>>>>>>>>> log4j-appserver, log4j-jul, log4j-core. My pom file >>> includes >>>>>>>> log4j-api >>>>>>>>>>> and >>>>>>>>>>>> log4j-slf4j-impl. I also previously had log4j-jul within >>> the >>>>> pom >>>>>>>> though >>>>>>>>>>>> that didn't seem to make a difference. >>>>>>>>>>>> >>>>>>>>>>>> There is conflicting documentation/information floating >>>> around >>>>>>>>>>> regarding >>>>>>>>>>>> dependencies so I may have missed something. >>>>>>>>>>>> >>>>>>>>>>>> SLF4J: Class path contains multiple SLF4J bindings. >>>>>>>>>>>>> SLF4J: Found binding in >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> [jar:file:/home/abdullah/Desktop/apache-tomcat-8.5.50/webapps/emerald-decaf/WEB-INF/lib/log4j-slf4j-impl-2.12.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] >>>>>>>>>>>>> SLF4J: Found binding in >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> [jar:file:/home/abdullah/Desktop/apache-tomcat-8.5.50/webapps/emerald-decaf/WEB-INF/lib/slf4j-jdk14-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] >>>>>>>>>>>>> SLF4J: See >>>> http://www.slf4j.org/codes.html#multiple_bindings >>>>>> for >>>>>>>> an >>>>>>>>>>>>> explanation. >>>>>>>>>>>>> SLF4J: Actual binding is of type >>>>>>>>>>>>> [org.apache.logging.slf4j.Log4jLoggerFactory] >>>>>>>>>>>>> DEBUG StatusLogger Unable to retrieve provider from >>>>> ClassLoader >>>>>>>>>>>>> java.net.URLClassLoader@6e4566f1 >>>>>>>>>>>>> java.util.ServiceConfigurationError: >>>>>>>>>>>>> org.apache.logging.log4j.spi.Provider: Provider >>>>>>>>>>>>> org.apache.logging.log4j.core.impl.Log4jProvider not a >>>>> subtype >>>>>>>>>>>>> at java.util.ServiceLoader.fail(ServiceLoader.java:239) >>>>>>>>>>>>> at >>>> java.util.ServiceLoader.access$300(ServiceLoader.java:185) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>>> >>>>>> >>>> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376) >>>>>>>>>>>>> at >>>>>>>> java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) >>>>>>>>>>>>> at java.util.ServiceLoader$1.next(ServiceLoader.java:480) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.util.ProviderUtil.loadProviders(ProviderUtil.java:109) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>> >>>> org.apache.logging.log4j.util.ProviderUtil.<init>(ProviderUtil.java:68) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.util.ProviderUtil.lazyInit(ProviderUtil.java:150) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.util.ProviderUtil.hasProviders(ProviderUtil.java:134) >>>>>>>>>>>>> at >>>>>>> org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:89) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:138) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:48) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30) >>>>>>>>>>>>> at >>>> org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358) >>>>>>>>>>>>> at >>>> org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.matillion.bi.cactus.server.ContextListener.<clinit>(ContextListener.java:23) >>>>>>>>>>>>> at >>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native >>>>>>>>>>> Method) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) >>>>>>>>>>>>> at >>>>>>> java.lang.reflect.Constructor.newInstance(Constructor.java:423) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:151) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4621) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5165) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>> >>>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>> >>>> org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1720) >>>>>>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >>>>> Method) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>> >>>> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:479) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:428) >>>>>>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >>>>> Method) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>> >>>> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) >>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native >>>> Method) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) >>>>>>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >>>>> Method) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) >>>>>>>>>>>>> at sun.rmi.transport.Transport$1.run(Transport.java:200) >>>>>>>>>>>>> at sun.rmi.transport.Transport$1.run(Transport.java:197) >>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native >>>> Method) >>>>>>>>>>>>> at >>>>> sun.rmi.transport.Transport.serviceCall(Transport.java:196) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>>> >>>>>> >>>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688) >>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native >>>> Method) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) >>>>>>>>>>>>> at java.lang.Thread.run(Thread.java:748) >>>>>>>>>>>>> DEBUG StatusLogger Unable to retrieve provider from >>>>> ClassLoader >>>>>>>>>>>>> sun.misc.Launcher$AppClassLoader@18b4aac2 >>>>>>>>>>>>> java.util.ServiceConfigurationError: >>>>>>>>>>>>> org.apache.logging.log4j.spi.Provider: Provider >>>>>>>>>>>>> org.apache.logging.log4j.core.impl.Log4jProvider not a >>>>> subtype >>>>>>>>>>>>> at java.util.ServiceLoader.fail(ServiceLoader.java:239) >>>>>>>>>>>>> at >>>> java.util.ServiceLoader.access$300(ServiceLoader.java:185) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>>> >>>>>> >>>> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376) >>>>>>>>>>>>> at >>>>>>>> java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) >>>>>>>>>>>>> at java.util.ServiceLoader$1.next(ServiceLoader.java:480) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.util.ProviderUtil.loadProviders(ProviderUtil.java:109) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>> >>>> org.apache.logging.log4j.util.ProviderUtil.<init>(ProviderUtil.java:68) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.util.ProviderUtil.lazyInit(ProviderUtil.java:150) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.util.ProviderUtil.hasProviders(ProviderUtil.java:134) >>>>>>>>>>>>> at >>>>>>> org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:89) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:138) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:48) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30) >>>>>>>>>>>>> at >>>> org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358) >>>>>>>>>>>>> at >>>> org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.matillion.bi.cactus.server.ContextListener.<clinit>(ContextListener.java:23) >>>>>>>>>>>>> at >>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native >>>>>>>>>>> Method) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) >>>>>>>>>>>>> at >>>>>>> java.lang.reflect.Constructor.newInstance(Constructor.java:423) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:151) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4621) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5165) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>> >>>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>> >>>> org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1720) >>>>>>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >>>>> Method) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>> >>>> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:479) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:428) >>>>>>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >>>>> Method) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>> >>>> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) >>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native >>>> Method) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) >>>>>>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >>>>> Method) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) >>>>>>>>>>>>> at sun.rmi.transport.Transport$1.run(Transport.java:200) >>>>>>>>>>>>> at sun.rmi.transport.Transport$1.run(Transport.java:197) >>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native >>>> Method) >>>>>>>>>>>>> at >>>>> sun.rmi.transport.Transport.serviceCall(Transport.java:196) >>>>>>>>>>>>> at >>>>>>>>>>> >>>>>>>> >>>>>> >>>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688) >>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native >>>> Method) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) >>>>>>>>>>>>> at >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) >>>>>>>>>>>>> at java.lang.Thread.run(Thread.java:748) >>>>>>>>>>>>> DEBUG StatusLogger Using ShutdownCallbackRegistry class >>>>>>>>>>>>> >>>>>>> org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry >>>>>>>>>>>>> DEBUG StatusLogger Took 0.108460 seconds to load 211 >>>> plugins >>>>>> from >>>>>>>>>>>>> ParallelWebappClassLoader >>>>>>>>>>>>> context: emerald-decaf >>>>>>>>>>>>> delegate: false >>>>>>>>>>>>> ----------> Parent Classloader: >>>>>>>>>>>>> java.net.URLClassLoader@6e4566f1 >>>>>>>>>>>>> >>>>>>>>>>>>> DEBUG StatusLogger PluginManager 'Converter' found 44 >>>> plugins >>>>>>>>>>>>> DEBUG StatusLogger Starting OutputStreamManager >>>>>>>>>>> SYSTEM_OUT.false.false-1 >>>>>>>>>>>>> DEBUG StatusLogger Starting LoggerContext[name=44ccb73c, >>>>>>>>>>>>> org.apache.logging.log4j.core.LoggerContext@5a4cc2cb]... >>>>>>>>>>>>> DEBUG StatusLogger Reconfiguration started for >>>>>>>>>>> context[name=44ccb73c] at >>>>>>>>>>>>> URI null >>>>> (org.apache.logging.log4j.core.LoggerContext@5a4cc2cb >>>>>> ) >>>>>>>> with >>>>>>>>>>>>> optional ClassLoader: null >>>>>>>>>>>>> DEBUG StatusLogger PluginManager 'ConfigurationFactory' >>>>> found 4 >>>>>>>>>>> plugins >>>>>>>>>>>>> DEBUG StatusLogger Missing dependencies for Yaml support, >>>>>>>>>>>>> ConfigurationFactory >>>>>>>>>>>>> >>>>>>> org.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory >>>>>>>> is >>>>>>>>>>>>> inactive >>>>>>>>>>>>> DEBUG StatusLogger Using configurationFactory >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> org.apache.logging.log4j.core.config.ConfigurationFactory$Factory@5b9c071b >>>>>>>>>>>>> DEBUG StatusLogger Closing ByteArrayInputStream >>>>>>>>>>>>> java.io.ByteArrayInputStream@26d94ebf >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> I've since reverted the JUL to SLF4J bridget >>>>>>>>>>>> >>>>>>>>>>>> On Sat, 18 Apr 2020 at 05:47, Ralph Goers < >>>>>>>> ralph.go...@dslextreme.com> >>>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> If you are using SLF4J to add to the MDC, the classes in >>>>>>>>>>> log4j-slf4j-impl >>>>>>>>>>>>> will update Log4j’s ThreadContext (a ThreadLocal Map) >>> under >>>>> the >>>>>>>>>>> covers. >>>>>>>>>>>>> Regardless of what API you use for logging, when they are >>>>>> bridged >>>>>>>> to >>>>>>>>>>>>> log4j-core it will locate the ThreadContext and retrieve >>>>>> whatever >>>>>>>> is >>>>>>>>>>> in it. >>>>>>>>>>>>> >>>>>>>>>>>>> What mechanism are you using to cause JUL log events to >>> end >>>>> up >>>>>> in >>>>>>>>>>> Log4j? >>>>>>>>>>>>> >>>>>>>>>>>>> Ralph >>>>>>>>>>>>> >>>>>>>>>>>>>> On Apr 17, 2020, at 9:17 AM, Abdul < >>>>>>> abdul.huss...@matillion.com >>>>>>>>>>> .INVALID> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hey, >>>>>>>>>>>>>> >>>>>>>>>>>>>> So I've just switched my logging framework to Log4j2 to >>>>>>> leverage >>>>>>>>>>> it's >>>>>>>>>>>>> support for MDC. Given that I've used a mixture of SLF4J >>>> and >>>>>> JUL >>>>>>>> log >>>>>>>>>>>>> messages within my code I've decided to leverage Log4j >>>>> ability >>>>>> to >>>>>>>>>>> convert >>>>>>>>>>>>> JUL log messages to Log4j2 messages. I've set the >>> following >>>>>> flag >>>>>>> to >>>>>>>>>>> my >>>>>>>>>>>>> application >>>>>>>>>>>>> >>>>>>> -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager >>>>>>>>>>> and >>>>>>>>>>>>> added all the required jars. Logging seems to be working >>>>> pretty >>>>>>>> good >>>>>>>>>>> in >>>>>>>>>>>>> that my SLF4J and JUL messages are being formatted >>>> according >>>>> to >>>>>>> my >>>>>>>>>>> log4j2 >>>>>>>>>>>>> config file I added a Hello prefix to each message, >>> though >>>>> MDC >>>>>>>> seems >>>>>>>>>>> to not >>>>>>>>>>>>> be picked up with the JUL messages. >>>>>>>>>>>>>> >>>>>>>>>>>>>> From debugging when I use the SLF4J logger it calls >>>>>> Log4jLogger >>>>>>>>>>> which is >>>>>>>>>>>>> preserving the ThreadContext whereas my JUL log messages >>>> are >>>>>>>>>>>>> re-initializing the ThreadContext as soon as they enter >>>>>>>>>>> AbstractLogger. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Anyone know if it's possible to preserve ThreadContext >>>> with >>>>>> JUL >>>>>>>>>>> messages >>>>>>>>>>>>> being converted to Log4j2 messages or is there a >>> potential >>>>>>>>>>> alternative >>>>>>>>>>>>> method I can look into? >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> My Log4j2.xml config file: >>>>>>>>>>>>>> >>>>>>>>>>>>>> <?xml version="1.0" encoding="UTF-8"?> >>>>>>>>>>>>>> <Configuration status="INFO"> >>>>>>>>>>>>>> <Appenders> >>>>>>>>>>>>>> <Console name="Console" target="SYSTEM_OUT"> >>>>>>>>>>>>>> <PatternLayout pattern="Hello >>>> %X{Organisation} >>>>>>>>>>>>> %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> >>>>>>>>>>>>>> </Console> >>>>>>>>>>>>>> </Appenders> >>>>>>>>>>>>>> <Loggers> >>>>>>>>>>>>>> <Root level="info"> >>>>>>>>>>>>>> <AppenderRef ref="Console"/> >>>>>>>>>>>>>> </Root> >>>>>>>>>>>>>> </Loggers> >>>>>>>>>>>>>> </Configuration> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Regards, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Abdul Haseeb Hussain >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> *The information in this email is confidential and >>> solely >>>>> for >>>>>>> the >>>>>>>>>>> use of >>>>>>>>>>>>> the intended recipient(s). If you receive this email in >>>>> error, >>>>>>>> please >>>>>>>>>>>>> notify the sender and delete the email from your system >>>>>>>> immediately. >>>>>>>>>>> In >>>>>>>>>>>>> such circumstances, you must not make any use of the >>> email >>>> or >>>>>> its >>>>>>>>>>> contents. >>>>>>>>>>>>> Views expressed by an individual in this email do not >>>>>> necessarily >>>>>>>>>>> reflect >>>>>>>>>>>>> the views of Matillion Ltd. >>>>>>>>>>>>>> >>>>>>>>>>>>>> * >>>>>>>>>>>>>> >>>>>>>>>>>>>> *Matillion Ltd accepts no responsibility for any damage >>>>>> caused >>>>>>> by >>>>>>>>>>>>> malicious software transmitted by email. Email >>> transmission >>>>>>> cannot >>>>>>>> be >>>>>>>>>>>>> guaranteed to be secure and error free, it is possible >>> for >>>> it >>>>>> to >>>>>>> be >>>>>>>>>>>>> intercepted, lost, destroyed, later, incomplete or with >>>> added >>>>>>>>>>> malware. The >>>>>>>>>>>>> sender does not accept liability for any errors or >>>> omissions >>>>> in >>>>>>> the >>>>>>>>>>>>> contents of this message, which arise as a result of >>> email >>>>>>>>>>> transmission >>>>>>>>>>>>>> >>>>>>>>>>>>>> * >>>>>>>>>>>>>> >>>>>>>>>>>>>> *Matillion Ltd, Station House, Stamford New Road, >>>>> Altrincham, >>>>>>>>>>> England, >>>>>>>>>>>>> WA14 1EP (Main and registered office address). *_Company >>>>>> number: >>>>>>>>>>> 07474948._ >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> *The information in this email is confidential and solely >>> for >>>>> the >>>>>>> use >>>>>>>>>>> of >>>>>>>>>>>> the intended recipient(s). If you receive this email in >>>> error, >>>>>>> please >>>>>>>>>>>> notify the sender and delete the email from your system >>>>>>> immediately. >>>>>>>> In >>>>>>>>>>>> such circumstances, you must not make any use of the email >>> or >>>>> its >>>>>>>>>>> contents. >>>>>>>>>>>> Views expressed by an individual in this email do not >>>>> necessarily >>>>>>>>>>> reflect >>>>>>>>>>>> the views of Matillion Ltd. >>>>>>>>>>>> >>>>>>>>>>>> * >>>>>>>>>>>> >>>>>>>>>>>> *Matillion Ltd accepts no responsibility >>>>>>>>>>>> for any damage caused by malicious software transmitted by >>>>> email. >>>>>>>> Email >>>>>>>>>>>> transmission cannot be guaranteed to be secure and error >>>> free, >>>>> it >>>>>>> is >>>>>>>>>>>> possible for it to be intercepted, lost, destroyed, later, >>>>>>> incomplete >>>>>>>>>>> or >>>>>>>>>>>> with added malware. The sender does not accept liability >>> for >>>>> any >>>>>>>>>>> errors or >>>>>>>>>>>> omissions in the contents of this message, which arise as a >>>>>> result >>>>>>> of >>>>>>>>>>> email >>>>>>>>>>>> transmission >>>>>>>>>>>> >>>>>>>>>>>> * >>>>>>>>>>>> >>>>>>>>>>>> *Matillion Ltd, Station House, Stamford New Road, >>>>>>>>>>>> Altrincham, England, WA14 1EP (Main and registered office >>>>>> address). >>>>>>>>>>>> *_Company number: 07474948._ >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Matt Sicker <boa...@gmail.com> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> >>>>>>>> >>>>>>>> *The information in this email is confidential and solely for the >>>> use >>>>>> of >>>>>>>> the intended recipient(s). If you receive this email in error, >>>> please >>>>>>>> notify the sender and delete the email from your system >>>> immediately. >>>>> In >>>>>>>> such circumstances, you must not make any use of the email or its >>>>>>>> contents. >>>>>>>> Views expressed by an individual in this email do not necessarily >>>>>> reflect >>>>>>>> the views of Matillion Ltd. >>>>>>>> >>>>>>>> * >>>>>>>> >>>>>>>> *Matillion Ltd accepts no responsibility >>>>>>>> for any damage caused by malicious software transmitted by email. >>>>> Email >>>>>>>> transmission cannot be guaranteed to be secure and error free, it >>>> is >>>>>>>> possible for it to be intercepted, lost, destroyed, later, >>>> incomplete >>>>>> or >>>>>>>> with added malware. The sender does not accept liability for any >>>>> errors >>>>>>> or >>>>>>>> omissions in the contents of this message, which arise as a >>> result >>>> of >>>>>>>> email >>>>>>>> transmission >>>>>>>> >>>>>>>> * >>>>>>>> >>>>>>>> *Matillion Ltd, Station House, Stamford New Road, >>>>>>>> Altrincham, England, WA14 1EP (Main and registered office >>> address). >>>>>>>> *_Company number: 07474948._ >>>>>>>> >>>>>>> -- >>>>>>> Matt Sicker <boa...@gmail.com> >>>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> >>>>>> *The information in this email is confidential and solely for the use >>>> of >>>>>> the intended recipient(s). If you receive this email in error, please >>>>>> notify the sender and delete the email from your system immediately. >>> In >>>>>> such circumstances, you must not make any use of the email or its >>>>>> contents. >>>>>> Views expressed by an individual in this email do not necessarily >>>> reflect >>>>>> the views of Matillion Ltd. >>>>>> >>>>>> * >>>>>> >>>>>> *Matillion Ltd accepts no responsibility >>>>>> for any damage caused by malicious software transmitted by email. >>> Email >>>>>> transmission cannot be guaranteed to be secure and error free, it is >>>>>> possible for it to be intercepted, lost, destroyed, later, incomplete >>>> or >>>>>> with added malware. The sender does not accept liability for any >>> errors >>>>> or >>>>>> omissions in the contents of this message, which arise as a result of >>>>>> email >>>>>> transmission >>>>>> >>>>>> * >>>>>> >>>>>> *Matillion Ltd, Station House, Stamford New Road, >>>>>> Altrincham, England, WA14 1EP (Main and registered office address). >>>>>> *_Company number: 07474948._ >>>>>> >>>>> -- >>>>> Matt Sicker <boa...@gmail.com> >>>>> >>>> >>>> -- >>>> >>>> >>>> *The information in this email is confidential and solely for the use of >>>> the intended recipient(s). If you receive this email in error, please >>>> notify the sender and delete the email from your system immediately. In >>>> such circumstances, you must not make any use of the email or its >>>> contents. >>>> Views expressed by an individual in this email do not necessarily reflect >>>> the views of Matillion Ltd. >>>> >>>> * >>>> >>>> *Matillion Ltd accepts no responsibility >>>> for any damage caused by malicious software transmitted by email. Email >>>> transmission cannot be guaranteed to be secure and error free, it is >>>> possible for it to be intercepted, lost, destroyed, later, incomplete or >>>> with added malware. The sender does not accept liability for any errors >>> or >>>> omissions in the contents of this message, which arise as a result of >>>> email >>>> transmission >>>> >>>> * >>>> >>>> *Matillion Ltd, Station House, Stamford New Road, >>>> Altrincham, England, WA14 1EP (Main and registered office address). >>>> *_Company number: 07474948._ >>>> >>> -- >>> Matt Sicker <boa...@gmail.com> >>> >> >> -- >> >> >> *The information in this email is confidential and solely for the use of >> the intended recipient(s). If you receive this email in error, please >> notify the sender and delete the email from your system immediately. In >> such circumstances, you must not make any use of the email or its contents. >> Views expressed by an individual in this email do not necessarily reflect >> the views of Matillion Ltd. >> >> * >> >> *Matillion Ltd accepts no responsibility >> for any damage caused by malicious software transmitted by email. Email >> transmission cannot be guaranteed to be secure and error free, it is >> possible for it to be intercepted, lost, destroyed, later, incomplete or >> with added malware. The sender does not accept liability for any errors or >> omissions in the contents of this message, which arise as a result of email >> transmission >> >> * >> >> *Matillion Ltd, Station House, Stamford New Road, >> Altrincham, England, WA14 1EP (Main and registered office address). >> *_Company number: 07474948._ > > > > -- > Matt Sicker <boa...@gmail.com> >