package com.bao.lc.httpcommand.impl; import org.apache.commons.chain.Command; import org.apache.commons.chain.Context; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.bao.lc.bean.IDValuePair; import com.bao.lc.httpcommand.CommandCompleteListener; import com.bao.lc.httpcommand.params.HttpCommandParams; import com.bao.lc.httpcommand.utils.HttpCommandUtils; public class LogCompleteListener implements CommandCompleteListener { private static Log classLog = LogFactory.getLog(LogCompleteListener.class); private Log log = null; public LogCompleteListener(Log log) { this.log = log; if(this.log == null) { this.log = classLog; } } public LogCompleteListener() { this(null); } @Override public void commandComplete(boolean commandResult, IDValuePair rc, Command command, Context context) { StringBuilder sb = new StringBuilder(); sb.append("Command[").append(command.getClass().getName()).append("] Result: "); sb.append(HttpCommandUtils.getCommandResultText(commandResult)); sb.append(", Code: ").append(rc); log.info(sb.toString()); } @Override public void commandException(Exception e, Command command, Context context) throws Exception { StringBuilder sb = new StringBuilder(); sb.append("Command[").append(command.getClass().getName()).append("] Exception"); Command exceptionCommand = HttpCommandParams.getExceptionCommand(context); if(exceptionCommand != null) { sb.append(" at: ").append(exceptionCommand.getClass().getName()); } log.error(sb.toString(), e); } }