Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JAX-WS Java Web服务中使用Log4j2_Java_Web Services_Configuration_Jax Ws_Log4j2 - Fatal编程技术网

如何在JAX-WS Java Web服务中使用Log4j2

如何在JAX-WS Java Web服务中使用Log4j2,java,web-services,configuration,jax-ws,log4j2,Java,Web Services,Configuration,Jax Ws,Log4j2,如a中所述,我正在学习如何使用JAX-WS(用于XML Web服务的Java API)。我在以前的可执行Java程序中使用过,我想用它来记录web服务请求。如何将Log4j2添加到中的基本代码?以下是我解决此问题的方法: 程序 从下载最新的Log4j2库 解压缩Log4j2压缩文件夹,并将以下文件复制到项目的lib文件夹中。 log4j-api-2.3.jar log4j-core-2.3.jar 如果希望通过电子邮件发送日志,还需要将以下文件复制到项目的lib文件夹: log4j-web

如a中所述,我正在学习如何使用JAX-WS(用于XML Web服务的Java API)。我在以前的可执行Java程序中使用过,我想用它来记录web服务请求。如何将Log4j2添加到中的基本代码?

以下是我解决此问题的方法:

程序
  • 从下载最新的Log4j2库
  • 解压缩Log4j2压缩文件夹,并将以下文件复制到项目的
    lib
    文件夹中。
    • log4j-api-2.3.jar
    • log4j-core-2.3.jar
  • 如果希望通过电子邮件发送日志,还需要将以下文件复制到项目的
    lib
    文件夹:
    • log4j-web-2.3.jar
    • javax.mail.jar(可下载)
  • 确保在Netbeans项目中设置对复制的JAR文件的引用:
  • 将名为log4j2.xml的文件添加到
    sourcepackages
    文件夹(参见上面的屏幕截图)。下面是我的log4j2.xml文件的内容,用作起点。
    • 注意,我故意将日志文件放在
      {$Tomcat}\logs
      文件夹中。我最初将应用程序的日志文件放在
      {$Tomcat}\webapps\HelloWorld
      文件夹中。然而,我了解到Tomcat在日志文件上保留文件锁,这将防止“热部署/取消部署”,导致部署不完整和web应用程序无法工作。有关详细信息,请在此网站上搜索反资源追踪
  • 最后,将应用程序编译为WAR文件并部署到Tomcat服务器。然后,在向服务提交请求之后,应用程序现在将执行日志记录
  • 我希望这是有帮助的Pflues

    工具书类
    • (特别是要包含在WEB-INF/lib中的JAR文件)
    • (Apache文档)
    • (如果您希望通过电子邮件发送日志中的错误)
    • (帮助我理解Tomcat为什么要锁定日志文件)
    <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>
    
    <context-param>
        <param-name>log4jConfiguration</param-name>
        <param-value>log4j2.xml</param-value>
    </context-param>
    
    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;
        }
    }