package at.gv.egovernment.moa.logging;

/**
 * A unified message type to log messages from inside the MOA subsystem.
 * 
 * @author Patrick Peck
 * @version $Id$
 */
public class LogMsg {
  /** The message to log. */
  private Object message;

  /**
   * Create a <code>LogMsg</code> object.
   * 
   * @param message The actual message to log. May be <code>null</code>. 
   */
  public LogMsg(Object message) {
    this.message = message;
  }

  /**
   * Convert this log message to a <code>String</code>.
   * 
   * @return The <code>String</code> representation of this log message. 
   */
  public String toString() {
    StringBuffer msg = new StringBuffer();
    LoggingContext ctx =
      LoggingContextManager.getInstance().getLoggingContext();
    String tid = ctx != null ? ctx.getTransactionID() : null;
    String nodeId = ctx != null ? ctx.getNodeID() : null;
    
    msg.append("TID=");
    msg.append(tid != null ? tid : "<null>");
    msg.append(" NID=");
    msg.append(nodeId != null ? nodeId : "<null>");
    msg.append(" MSG=");
    msg.append(message != null ? message.toString() : "<null>");

    return msg.toString();
  }
}