【问题标题】:Logs not getting generated for Web Service published on Websphere Application Server 8没有为在 Websphere Application Server 8 上发布的 Web 服务生成日志
【发布时间】:2015-02-10 09:10:05
【问题描述】:

我是 Web 服务的新手,并且在我的本地主机(Websphere Application Server 8)上发布了一个 Web 服务。

我能够成功使用 Web 服务,但无法找到生成日志的位置,甚至找不到生成日志的位置。

我在 WebContent/WEB-INF/classes 中放置了 log4j.properties 文件,但是当我尝试从Java (步骤 - 右键单击​​项目名称 --> 新建 --> Web 服务 --> 选择类)

生成的文件:

  1. deploy.wsdd
  2. deploy.wsdd.bak
  3. undeploy.wsdd

还有一些 JAR 被添加到 WebContent/WEB-INF/lib

删除文件后,我再次将 log4j.properties 复制到 WebContent/WEB-INF/classes 并导出了部署在服务器上的 EAR。

我已经检查了文件夹中的日志:

  • D:\IBM\WebSphere\AppServer\profiles\cw_profile\logs
  • D:\IBM\WebSphere\AppServer\logs\manageprofiles\cw_profile

但没有生成日志文件。

主要网络服务 -->

package com.gateway.request.demo;

import java.util.Date;

import javax.jws.WebMethod;
import javax.jws.WebService;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

@WebService
public class GetDemoTicketv2 {

//Logger log = Logger.getLogger(GetDemoTicket.class);
Logger log = LogManager.getLogger(GetDemoTicketv2.class);

public GetDemoTicketv2() {
    super();
    // TODO Auto-generated constructor stub
}

@WebMethod
public String getTicket(String serviceName, String actionName, String bodyStr, String userId){

    Date curDate = new Date();

    log.debug("Starting Execution");
    log.info("Service Name is: "+serviceName);
    log.info("Action is: "+actionName);
    log.info("Body: "+bodyStr);
    log.info("User ID is: "+userId);
    log.debug("Execution Done");
    serviceName = "Service name received: "+serviceName+" "+curDate.toString()+"\n";
    actionName = "Action name received: "+actionName+" "+curDate.toString()+"\n";
    bodyStr = "Body string received: "+bodyStr+" "+curDate.toString()+"\n";
    userId = "User ID received: "+userId+" "+curDate.toString()+"\n";
    log.info("Return Values is \n"+serviceName+actionName+bodyStr+userId);
    return serviceName+actionName+bodyStr+userId;
}

/*public static void main(String[] args) {
    System.out.println("CHECKING...");
    GetDemoTicketv2 obj = new GetDemoTicketv2();
    String retVal = obj.getTicket("My Service T", "My Action T", "My Body String T", "My User ID T");
    System.out.println(retVal);
}*/}

客户端 -->

package com.gateway.request.demo;

import java.rmi.RemoteException;

public class TestService {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    GetDemoTicketv2Proxy pxy = new GetDemoTicketv2Proxy("http://hostname:9081/Gateway_Webservice_For_ISTM_v3.0/GetDemoTicketv2Service");
    try {
        String retVal = pxy.getTicket("SERVICE", "ACTION", "BODY", "USER ID");
        System.out.println("Value returned:\n"+retVal);
    } catch (RemoteException e) {
        // TODO Auto-generated catch block
        System.out.println("RemoteException while consuming web service");
        e.printStackTrace();
    } catch (Exception e) {
        // TODO: handle exception
        System.out.println("Exception while consuming web service");
        e.printStackTrace();
    }
}}

log4j.properties

log4j.rootLogger=DEBUG, main

log4j.appender.main=org.apache.log4j.RollingFileAppender
log4j.appender.main.MaxFileSize=15MB
log4j.appender.main.MaxBackupIndex=10
log4j.appender.main.File=logs/DemoRequest.log
log4j.appender.main.layout=org.apache.log4j.PatternLayout
log4j.appender.main.layout.ConversionPattern=%d [%t] %-5p %c{1} - %m%n

【问题讨论】:

  • 首先我认为你必须在 log4j.properties 中编辑你的变量:log4j.appender.main.File=/logs/ISTMRequest.log
  • 即使将变量更改为 log4j.appender.main.File=/logs/ISTMRequest.log 也不会生成日志
  • 您的路径(/logs/)存在吗?如果未创建文件夹,则可以写入 SystemOut.log,因此请为日志创建文件夹,如您的路径。长话短说:在根目录下,创建文件夹日志 :) 我在等你回答。 ;)

标签: java web-services logging log4j


【解决方案1】:

从上面的代码 sn-ps - 它似乎缺少加载 log4j.properties 文件的逻辑,您应该在程序的开头加载该文件。所以请尝试添加类似的内容:

Properties applicationProp = new Properties();

String applicationPropFilePath = "C:\\log4j.properties";

load( applicationPropFilePath, applicationProp );

/* This method is a cookie-cutter and loads the given properties file to the given handle */
public static void load( String propFilepath, Properties propFileHandle ){
    try {
        InputStream is = new FileInputStream( propFilepath );
        propFileHandle.load( is );
    } catch (FileNotFoundException e) {
        System.out.println(" Unable to locate properties file: " + propFilepath + e ); 
    } catch (IOException e) {
        System.out.println(" IO Error while loading properties file: " + propFilepath + e ); 
    } catch (Exception e) {
        System.out.println(" Some error occurred while loading properties file: " + propFilepath + e ); 
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    相关资源
    最近更新 更多