package log;

/**
  * An object that can be logged.
  *
  * <p>When a Loggable object is handed to {@link Log#log}, its {@link #getLogData}
  * method will be called to create a {@link LogEntry} describing the given object.</p>
  *
  * @see Log#log
  * @see LogEntry
  *
  * @author Steffen Zschaler
  * @version 1.0
  * @since v1.0
  */
public interface Loggable {

  /**
    * Called when the object is being logged.
    *
    * <p>Should return a fresh instance of a subclass of {@link log.LogEntry} describing the object
    * or event to be logged.</p>
    *
    * @return the data to be stored in the log file.
    *
    * @override Always
    */
  public LogEntry getLogData();
}