001 package log;
002
003 /**
004 * An object that can be logged.
005 *
006 * <p>When a Loggable object is handed to {@link Log#log}, its {@link #getLogData}
007 * method will be called to create a {@link LogEntry} describing the given object.</p>
008 *
009 * @see Log#log
010 * @see LogEntry
011 *
012 * @author Steffen Zschaler
013 * @version 1.0
014 * @since v1.0
015 */
016 public interface Loggable {
017
018 /**
019 * Called when the object is being logged.
020 *
021 * <p>Should return a fresh instance of a subclass of {@link log.LogEntry} describing the object
022 * or event to be logged.</p>
023 *
024 * @return the data to be stored in the log file.
025 *
026 * @override Always
027 */
028 public LogEntry getLogData();
029 }