log4j
。我需要实现一个功能,该功能将将日志消息发送到Web服务,而不是使用WebServiceAppender
.。 我通过在
google上搜索WebServiceAppender
是
log4j
班之一,但我无法验证这一点。 log4j.appender.CONSOLE=main.WSAppender
log4j.appender.CONSOLE.endpoint=http://localhost:8080/Logging/services/logging?wsdl
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%p [%t] %c{2} (%M:%L) :: %m%n
WSAppender.java extends AppenderSkeleton, can't resolve endpoint, hostname in append()
if (endpoint == null) {
System.out.println("no endpoint set. Check configuration file");
System.out.println("[" + hostname + "] " + this.layout.format(event));
return;
}
AppenderSkeleton
方法初始化Web服务类初始化。我已经编写了databaseappender和jmsappender log4j记录器,我一直发现我必须初始化db连接或JMS连接,或者在您的情况下,
public void activateOptions()
方法中的Web服务属性。
然后像往常一样在
public void activateOptions()
方法中您只会调用WebService。可能,我建议实现一个阻止式形式来存储所有loggingevent对象,以便如果您收到了大量的日志消息,则它们已排队并发送到WebService asynchronicaly。
任意包含模板log4jclass
trory使用以下模板。我在重要部分中添加了评论。基本上,在ActivateOptions和ProcessEvent方法中,您将初始化“连接”并发送事件对象。可以是DB,JMS,WebService ...等append(LoggingEvent)
我建议您查看这篇文章:Http://www.ibm.com/developererworks/webservices/library/ws-library/ws-log4j/index.html, 它专门描述了使用WebServiceAppender。
,Google!