当前位置: 首页 > 知识库问答 >
问题:

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

樊博雅
2023-03-14

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

共有1个答案

拓拔野
2023-03-14

下面是我如何解决这个问题的:

  • 从Apache项目站点下载最新的Log4j2库。
  • 解压缩Log4j2压缩文件夹,并将以下文件复制到项目的lib文件夹中。
    • log4j-api-2.3.jar
    • log4j-core-2.3.jar
    • log4j-web-2.3。罐子
    • javax。邮政jar(可在此处下载)
    • 请注意,我有意将日志文件放置在{$Tomcat}\logs文件夹中。我最初将应用程序的日志文件放置在{$Tomcat}\webapps\HelloWorld文件夹中。但是,我了解到Tomcat对日志文件保持文件锁,这将阻止“热部署/取消部署”,导致不完整的部署和Web应用程序不工作。有关更多信息,请在此页面上搜索antiResourceLocking。
    <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>
    
    • 注意,我故意记录并抛出一个异常。我这样做是因为我在测试我的log4j2。xml配置,确保在记录异常时发送电子邮件
    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;
        }
    }
    

    我希望这对你有帮助Pflues

    • 如何配置log4j2 webapplication(尤其是在WEB-INF/lib中包含哪些JAR文件)

 类似资料:
  • 我试图从RPC(据称)编码的WSDL服务构建WS客户机 我尝试手动安装以下插件 但还是没有骰子。

  • 我在没有应用服务器的情况下使用JAAS进行了简单的授权和身份验证。所以现在我想知道是否有可能在jboss中使用JAAS来保护JAX-RS Web服务。我希望用户为了登录他们提供他们的电子邮件和密码,然后授权用户其他显示错误。如能举一个工作实例,将不胜感激。

  • 我对使用jersey jetty glassfish之类的web服务器/应用程序/servlet感到困惑。还有web.xml文件?什么?ResourceConfig只接受类,而不接受它们的实例。一切似乎都是那么的一团糟。 我怎么能就这样做类似的事情呢?

  • 问题内容: 我是Android开发的新手,我有一个用php制作的Web服务,现在我想在android中使用它,任何人都可以指导我如何实现这一目标。 我已经在网上尝试了许多代码示例,但未能实现此目标。我在ADT中使用Eclipse。 任何帮助都会得到应用。 问题答案: 请通过以下链接。您将在此处找到代码示例 http://www.anddev.org/calling_a_web_service_fr

  • 问题内容: 我已经能够让控制器将$ on侦听器与一起使用。 但我看不到任何有关如何获取服务以监听事件的文档。 我试过了,但是只允许一个听众。我希望多个服务中的侦听器,无论其父控制器是否在作用域内。 问题答案: 经过一番试验后,事实证明,使用最少的代码即可将事件发送到服务。 如果有其他人遇到此问题,请遵循示例服务代码。 该样本在获得相应广播后将服务模型保存并还原到本地存储中

  • 我想使用WebLogic10.3.6.0中的EclipseLink来托管使用JAX-WS的Web服务。这在Tomcat中工作得很好。 Java 1.6 WebLogic 10.3.6.0 Eclipselink 2.4.0.V20120608-R11652 JAXWS 2.2.7-20120813 WEB-INF/lib包含: eclipselink.jar fastInfoset.jar gmb