环境: JDK 7中,WebLogic 12.1.3.0服务器(贴片3) Maven构建系统web服务处理程序防止log4j2配置
大厦Maven的,我具有取决于一个一个web服务WAR模块定义web服务处理程序的第二个JAR模块。 Webservice模块具有一个上下文侦听器,该侦听器稍后应该从数据库初始化log4j2(循环)。 没有在任何地方定义log4j2.xml,也不需要。
问题是,当通过在webservice端点上使用@HandlerChain批注启用处理程序时,log4j2配置在Web服务上下文侦听器初始化之前会损坏。
模块DemoWebService:
@WebService(endpointInterface = "demo.IDemoWebService")
@HandlerChain(file = "handlers.xml")
public class DemoWebService implements IDemoWebService {
...
}
public class DemoServletContextListener implements ServletContextListener {
/** Status Logger */
private static final Logger LOG = StatusLogger.getLogger();
@Override
public void contextInitialized(ServletContextEvent event) {
System.out.println("Demo listener context intialized");
System.out.println(LOG.getLevel() + " - " + LOG.isDebugEnabled() + " - " + LOG.isInfoEnabled() + " - " + LOG.isWarnEnabled());
LOG.info("LOG Demo listener context intialized");
}
@Override
public void contextDestroyed(ServletContextEvent event) {
System.out.println("Demo listener context destroyed");
LOG.info("LOG Demo listener context destroyed");
}
}
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>DemoWebService</display-name>
<!-- log4j2 configuration -->
<context-param>
<param-name>isLog4jAutoInitializationDisabled</param-name>
<param-value>true</param-value>
</context-param>
<listener>
<listener-class>demo.DemoServletContextListener</listener-class>
</listener>
...
</web-app>
handlers.xml
<?xml version="1.0" encoding="UTF-8"?>
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
<handler-chain>
<handler>
<handler-name>Performance</handler-name>
<handler-class>demo.wshandler.WebServiceDemoHandler</handler-class>
</handler>
</handler-chain>
</handler-chains>
模块wshandler:
public class WebServiceDemoHandler {
private static Logger log = LogManager.getLogger(WebServiceDemoHandler.class);
@Override
public boolean handleMessage(SOAPMessageContext context) {
log.info("something");
return true;
}
@Override
public boolean handlingNotRequired() {
return false; // this handler always handles the message
}
}
现在,当我在部署过程中比较服务器日志一次当@HandlerChain(文件=“handlers.xml”)是活动的,有一次,当注释掉,在日志中的差异基本上下列行:
处理程序链未激活:
Demo listener context intialized
TRACE - true - true - true
INFO StatusLogger LOG Demo listener context intialized
处理程序链活性:
DEBUG StatusLogger Loaded Provider Provider[priority=10, className=org.apache.logging.log4j.core.impl.Log4jContextFactory, url=zip:C:wl_homeSer_projectsdomainsbase_domain/tmp/_WL_user/DemoWebService-1.0-SNAPSHOT/3or6mr/war/WEB-INF/lib/log4j-core-2.6.jar!/META-INF/log4j-provider.properties, [email protected]2883f04f]
DEBUG StatusLogger Loaded Provider Provider[priority=10, className=org.apache.logging.log4j.core.impl.Log4jContextFactory, url=zip:C:wl_homeSer_projectsdomainsbase_domain/tmp/_WL_user/DemoWebService-1.0-SNAPSHOT/3or6mr/war/WEB-INF/lib/log4j-core-2.6.jar!/META-INF/log4j-provider.properties, [email protected]d5bfc18 finder: [email protected] annotation: [email protected]]
DEBUG StatusLogger Using ShutdownCallbackRegistry class org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry
DEBUG StatusLogger Using ShutdownCallbackRegistry class org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry
DEBUG StatusLogger Took 0,086401 seconds to load 184 plugins from [email protected]
DEBUG StatusLogger PluginManager 'Converter' found 41 plugins
DEBUG StatusLogger Jansi is not installed, cannot find org.fusesource.jansi.WindowsAnsiOutputStream
DEBUG StatusLogger Starting OutputStreamManager SYSTEM_OUT.false-1
DEBUG StatusLogger Starting LoggerContext[name=7d5bfc18, [email protected]]...
DEBUG StatusLogger Reconfiguration started for context[name=7d5bfc18] at URI null ([email protected]) with optional ClassLoader: null
DEBUG StatusLogger PluginManager 'ConfigurationFactory' found 4 plugins
DEBUG StatusLogger Missing dependencies for Yaml support
DEBUG StatusLogger Missing dependencies for Json support
DEBUG StatusLogger Using configurationFactory or[email protected]83bf63b
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.properties] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.properties] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.properties] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.properties] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.yml] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.yml] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.yml] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.yml] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.yaml] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.yaml] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.yaml] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.yaml] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.json] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.json] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.json] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.json] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.jsn] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.jsn] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.jsn] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.jsn] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.xml] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.xml] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.xml] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test7d5bfc18.xml] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2-test.properties] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2-test.properties] using weblogic.utils.classloaders.Cha[email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test.properties] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test.properties] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2-test.yml] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2-test.yml] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test.yml] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test.yml] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2-test.yaml] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2-test.yaml] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test.yaml] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test.yaml] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2-test.json] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2-test.json] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test.json] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test.json] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2-test.jsn] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2-test.jsn] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test.jsn] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test.jsn] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2-test.xml] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2-test.xml] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test.xml] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2-test.xml] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j27d5bfc18.properties] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j27d5bfc18.properties] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j27d5bfc18.properties] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j27d5bfc18.properties] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j27d5bfc18.yml] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j27d5bfc18.yml] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j27d5bfc18.yml] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j27d5bfc18.yml] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j27d5bfc18.yaml] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j27d5bfc18.yaml] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j27d5bfc18.yaml] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j27d5bfc18.yaml] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j27d5bfc18.json] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j27d5bfc18.json] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j27d5bfc18.json] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j27d5bfc18.json] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j27d5bfc18.jsn] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j27d5bfc18.jsn] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j27d5bfc18.jsn] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j27d5bfc18.jsn] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j27d5bfc18.xml] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j27d5bfc18.xml] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j27d5bfc18.xml] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j27d5bfc18.xml] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2.properties] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2.properties] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2.properties] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2.properties] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2.yml] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2.yml] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2.yml] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2.yml] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2.yaml] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2.yaml] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2.yaml] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2.yaml] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2.json] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2.json] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2.json] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2.json] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2.jsn] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2.jsn] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2.jsn] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2.jsn] using ClassLoader.getSystemResource().
TRACE StatusLogger Trying to find [log4j2.xml] using context class loader [email protected]
TRACE StatusLogger Trying to find [log4j2.xml] using [email protected] finder: [email protected] annotation: [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2.xml] using [email protected] class loader.
TRACE StatusLogger Trying to find [log4j2.xml] using ClassLoader.getSystemResource().
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
DEBUG StatusLogger PluginManager 'Converter' found 41 plugins
DEBUG StatusLogger Jansi is not installed, cannot find org.fusesource.jansi.WindowsAnsiOutputStream
DEBUG StatusLogger Starting OutputStreamManager SYSTEM_OUT.false-2
DEBUG StatusLogger Initializing configuration [email protected]b3
DEBUG StatusLogger Installed script engines
DEBUG StatusLogger juel Version: 1.0, Language: JSP 2.1 EL, Threading: MULTITHREADED, Compile: false, Names: {juel}
DEBUG StatusLogger Oracle Nashorn Version: 1.8.0_71, Language: ECMAScript, Threading: Not Thread Safe, Compile: true, Names: {nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript}
DEBUG StatusLogger Groovy Scripting Engine Version: 2.0, Language: Groovy, Threading: MULTITHREADED, Compile: true, Names: {groovy, Groovy}
DEBUG StatusLogger PluginManager 'Core' found 100 plugins
DEBUG StatusLogger PluginManager 'Level' found 0 plugins
DEBUG StatusLogger Configuration [email protected]b3 initialized
DEBUG StatusLogger Starting configuration [email protected]b3
DEBUG StatusLogger Started configuration [email protected]b3 OK.
TRACE StatusLogger Stopping [email protected]09...
TRACE StatusLogger DefaultConfiguration notified 1 ReliabilityStrategies that config will be stopped.
TRACE StatusLogger DefaultConfiguration stopping root LoggerConfig.
TRACE StatusLogger DefaultConfiguration notifying ReliabilityStrategies that appenders will be stopped.
TRACE StatusLogger DefaultConfiguration stopping remaining Appenders.
DEBUG StatusLogger Shutting down OutputStreamManager SYSTEM_OUT.false-1
TRACE StatusLogger DefaultConfiguration stopped 1 remaining Appenders.
TRACE StatusLogger DefaultConfiguration cleaning Appenders from 1 LoggerConfigs.
DEBUG StatusLogger Stopped [email protected]09 OK
TRACE StatusLogger Reregistering MBeans after reconfigure. Selector=or[email protected]44387dfb
TRACE StatusLogger Reregistering context (1/1): '7d5bfc18' [email protected]
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=7d5bfc18'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=7d5bfc18,component=StatusLogger'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=7d5bfc18,component=ContextSelector'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=7d5bfc18,component=Loggers,name=*'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=7d5bfc18,component=Appenders,name=*'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=7d5bfc18,component=AsyncAppenders,name=*'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=7d5bfc18,component=AsyncLoggerRingBuffer'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=7d5bfc18,component=Loggers,name=*,subtype=RingBuffer'
DEBUG StatusLogger Registering MBean org.apache.logging.log4j2:type=7d5bfc18
Demo listener context intialized
TRACE - false - false - true
这里发生的事情,是我想Java的类加载器变得活跃 Web上下文监听器之前,然后触发log4j2,不需要初始化。这会导致不可恢复的损坏log4j2配置,并且所有其他日志都将丢失。
或者如果你不在处理程序本身中使用log4j,可能太早 –