blob: 65b916205f15345dabdfc931c2731e420368e372 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.activemq.transport.logwriters;
import java.io.IOException;
import org.apache.activemq.command.BaseCommand;
import org.apache.activemq.command.ConnectionInfo;
import org.apache.activemq.command.Message;
import org.apache.activemq.command.MessageAck;
import org.apache.activemq.command.MessageDispatch;
import org.apache.activemq.command.ProducerAck;
import org.apache.activemq.command.ProducerId;
import org.apache.activemq.command.WireFormatInfo;
import org.apache.activemq.transport.LogWriter;
import org.slf4j.Logger;
/**
* Custom implementation of LogWriter interface.
*
* @author David Martin Clavo david(dot)martin(dot)clavo(at)gmail.com
*
*/
public class CustomLogWriter implements LogWriter {
// doc comment inherited from LogWriter
public void initialMessage(Logger log) {
}
// doc comment inherited from LogWriter
public void logRequest (Logger log, Object command) {
log.debug("$$ SENDREQ: " + CustomLogWriter.commandToString(command));
}
// doc comment inherited from LogWriter
public void logResponse (Logger log, Object response) {
log.debug("$$ GOT_RESPONSE: "+response);
}
// doc comment inherited from LogWriter
public void logAsyncRequest (Logger log, Object command) {
log.debug("$$ SENDING_ASNYC_REQUEST: "+command);
}
// doc comment inherited from LogWriter
public void logOneWay (Logger log, Object command) {
log.debug("$$ SENDING: " + CustomLogWriter.commandToString(command));
}
// doc comment inherited from LogWriter
public void logReceivedCommand (Logger log, Object command) {
log.debug("$$ RECEIVED: " + CustomLogWriter.commandToString(command));
}
// doc comment inherited from LogWriter
public void logReceivedException (Logger log, IOException error) {
log.debug("$$ RECEIVED_EXCEPTION: "+error, error);
}
/**
* Transforms a command into a String
* @param command An object (hopefully of the BaseCommand class or subclass)
* to be transformed into String.
* @return A String which will be written by the CustomLogWriter.
* If the object is not a BaseCommand, the String
* "Unrecognized_object " + command.toString()
* will be returned.
*/
private static String commandToString(Object command) {
StringBuilder sb = new StringBuilder();
if (command instanceof BaseCommand) {
BaseCommand bc = (BaseCommand)command;
sb.append(command.getClass().getSimpleName());
sb.append(' ');
sb.append(bc.isResponseRequired() ? 'T' : 'F');
Message m = null;
if (bc instanceof Message) {
m = (Message)bc;
}
if (bc instanceof MessageDispatch){
m = ((MessageDispatch)bc).getMessage();
}
if (m != null) {
sb.append(' ');
sb.append(m.getMessageId());
sb.append(',');
sb.append(m.getCommandId());
ProducerId pid = m.getProducerId();
long sid = pid.getSessionId();
sb.append(',');
sb.append(pid.getConnectionId());
sb.append(',');
sb.append(sid);
sb.append(',');
sb.append(pid.getValue());
sb.append(',');
sb.append(m.getCorrelationId());
sb.append(',');
sb.append(m.getType());
}
if (bc instanceof MessageDispatch){
sb.append(" toConsumer:");
sb.append(((MessageDispatch)bc).getConsumerId());
}
if (bc instanceof ProducerAck) {
sb.append(" ProducerId:");
sb.append(((ProducerAck)bc).getProducerId());
}
if (bc instanceof MessageAck) {
MessageAck ma = (MessageAck)bc;
sb.append(" ConsumerID:");
sb.append(ma.getConsumerId());
sb.append(" ack:");
sb.append(ma.getFirstMessageId());
sb.append('-');
sb.append(ma.getLastMessageId());
}
if (bc instanceof ConnectionInfo) {
ConnectionInfo ci = (ConnectionInfo)bc;
sb.append(' ');
sb.append(ci.getConnectionId());
}
} else if (command instanceof WireFormatInfo){
sb.append("WireFormatInfo");
} else {
sb.append("Unrecognized_object ");
sb.append(command.toString());
}
return sb.toString();
}
}