/*
* Copyright (c) 2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.systemservices.impl.logsvc.marshaller;
import java.io.IOException;
import java.io.OutputStream;
import com.emc.storageos.systemservices.impl.logsvc.LogMessage;
import com.emc.storageos.systemservices.impl.logsvc.util.LogUtil;
public class XMLMarshaller extends Marshaller {
XMLMarshaller(OutputStream outputStream) {
super(outputStream);
// TODO Auto-generated constructor stub
}
@Override
public void head() throws IOException {
outputStream.write("<log_list>\n".getBytes());
}
@Override
public void tail() throws IOException {
outputStream.write("</log_list>\n".getBytes());
}
@Override
public void marshall(LogMessage logMessage) throws IOException {
outputStream.write("<log_info>\n\t<class>".getBytes());
outputStream.write(LogUtil.escapeXml(logMessage.getFileName()));
outputStream.write("</class>\n\t<line>".getBytes());
outputStream.write(LogUtil.escapeXml(logMessage.getLineNumber()));
outputStream.write("</line>\n\t<node>".getBytes());
outputStream.write(LogUtil.escapeXml(logMessage.getNodeId()));
outputStream.write("</node>\n\t<node_name>".getBytes());
outputStream.write(LogUtil.escapeXml(logMessage.getNodeName()));
outputStream.write("</node_name>\n\t<message>".getBytes());
outputStream.write(LogUtil.escapeXml(logMessage.getLogContent()));
outputStream.write("</message>\n\t<severity>".getBytes());
outputStream.write(LogUtil.escapeXml(logMessage.getLevel()));
outputStream.write("</severity>\n\t<service>".getBytes());
outputStream.write(LogUtil.escapeXml(logMessage.getService()));
outputStream.write("</service>\n\t<thread>".getBytes());
outputStream.write(LogUtil.escapeXml(logMessage.getThreadName()));
outputStream.write("</thread>\n\t<time>".getBytes());
outputStream.write(LogUtil.escapeXml(logMessage.getTimeBytes()));
outputStream.write("</time>\n\t<time_ms>".getBytes());
outputStream.write(String.valueOf(logMessage.getTime()).getBytes());
outputStream.write("</time_ms>\n</log_info>\n".getBytes());
}
@Override
public void marshall(String msg, LogMessage prevMsg) throws IOException {
outputStream.write("<log_info>\n\t<message>".getBytes());
outputStream.write(LogUtil.escapeXml(msg.getBytes()));
outputStream.write("</message>\n\t<severity>ERROR</severity>\n\t<service>internal</service>\n\t<time>".getBytes());
outputStream.write(prevMsg == null ? "--".getBytes() : LogUtil.escapeXml(prevMsg.getTimeBytes()));
outputStream.write("</time>\n\t<time_ms>".getBytes());
outputStream.write(prevMsg == null ? "--".getBytes() : String.valueOf(prevMsg.getTime()).getBytes());
outputStream.write("</time_ms>\n</log_info>\n".getBytes());
}
}