Pfl*_*ugs 4 java configuration web-services jax-ws log4j2
正如之前的StackOverflow问题中所述,我正在学习如何使用JAX-WS(用于XML Web服务的Java API).我在之前的可执行Java程序中使用了Log4j2,我想用它来记录Web服务请求.如何在此JAX-WS教程中将Log4j2添加到基本代码中?
以下是我解决这个问题的方法:
lib文件夹中.
lib文件夹中:

Source Packages文件添加到该文件夹中(参见上面的屏幕截图).我的log4j2.xml文件的内容在下面用作起点.
{$Tomcat}\logs文件夹中.我最初将应用程序的日志文件放在该{$Tomcat}\webapps\HelloWorld文件夹中.但是,我了解到Tomcat会在日志文件上保留文件锁定,以防止"热部署/取消部署",从而导致部署不完整,Web应用程序无法正常工作.有关详细信息,请在此页面上搜索antiResourceLocking.Run Code Online (Sandbox Code Playgroud)<Configuration status='off'> <Properties> <Property name='logFilePath'>logs/HelloWorld.log</Property> </Properties> <Appenders> <Console name='Console' target='SYSTEM_OUT'> <PatternLayout pattern='%m%n'/> </Console> <File name='File' fileName='${logFilePath}'> <PatternLayout> <Pattern>%d %-5p %m%n</Pattern> </PatternLayout> </File> <SMTP name='Email' subject='JAX-WS Hello World Tutorial Web Service' to='matthew.pfluger@plexus.com' from='noreply-AgileUserManager@plexus.com' smtpHost='intranet-smtp.plexus.com' smtpPort='25' bufferSize='10000'> <PatternLayout> <Header>One or more errors occurred! Please see the full log file at: ${logFilePath}.%n</Header> <Pattern>%d %-5p %m%n</Pattern> </PatternLayout> </SMTP> </Appenders> <Loggers> <Root level='debug'> <AppenderRef ref='File'/> <AppenderRef ref='Console'/> <AppenderRef ref='Email'/> </Root> </Loggers> </Configuration>
Run Code Online (Sandbox Code Playgroud)<context-param> <param-name>log4jConfiguration</param-name> <param-value>log4j2.xml</param-value> </context-param>
HelloWorldImpl.java文件的方法.
log4j2.xml配置,以确保在记录异常时发送电子邮件.Run Code Online (Sandbox Code Playgroud)package com.mkyong.ws; import javax.jws.WebService; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @WebService(endpointInterface = "com.mkyong.ws.HelloWorld") public class HelloWorldImpl implements HelloWorld { private static final Logger logger = LogManager.getLogger(HelloWorldImpl.class); @Override public String getHelloWorldAsString() throws Exception { logger.entry(); logger.info("Request received"); logger.exit(); final Exception exception = new Exception("What the heck happened?"); logger.error(exception); throw exception; } }
我希望这是有帮助的! - Pflugs