/* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.jivesoftware.util.log; import java.io.ObjectStreamException; import java.io.Serializable; /** * This class encapsulates each individual log event. * LogEvents usually originate at a Logger and are routed * to LogTargets. * * @author <a href="mailto:peter@apache.org">Peter Donald</a> */ public final class LogEvent implements Serializable { //A Constant used when retrieving time relative to start of applicaiton start private final static long START_TIME = System.currentTimeMillis(); ///The category that this LogEvent concerns. (Must not be null) private String m_category; ///The message to be logged. (Must not be null) private String m_message; ///The exception that caused LogEvent if any. (May be null) private Throwable m_throwable; ///The time in millis that LogEvent occurred private long m_time; ///The priority of LogEvent. (Must not be null) private Priority m_priority; ///The context map associated with LogEvent. (May be null). private ContextMap m_contextMap; /** * Get Priority for LogEvent. * * @return the LogEvent Priority */ public final Priority getPriority() { return m_priority; } /** * Set the priority of LogEvent. * * @param priority the new LogEvent priority */ public final void setPriority(final Priority priority) { m_priority = priority; } /** * Get ContextMap associated with LogEvent * * @return the ContextMap */ public final ContextMap getContextMap() { return m_contextMap; } /** * Set the ContextMap for this LogEvent. * * @param contextMap the context map */ public final void setContextMap(final ContextMap contextMap) { m_contextMap = contextMap; } // /** // * Get ContextStack associated with LogEvent // * // * @return the ContextStack // * @deprecated ContextStack has been deprecated and thus so has this method // */ // public final ContextStack getContextStack() // { // return m_contextStack; // } // /** // * Set the ContextStack for this LogEvent. // * Note that if this LogEvent ever changes threads, the // * ContextStack must be cloned. // * // * @param contextStack the context stack // * @deprecated ContextStack has been deprecated and thus so has this method // */ // public final void setContextStack( final ContextStack contextStack ) // { // m_contextStack = contextStack; // } /** * Get the category that LogEvent relates to. * * @return the name of category */ public final String getCategory() { return m_category; } /** * Get the message associated with event. * * @return the message */ public final String getMessage() { return m_message; } /** * Get throwabe instance associated with event. * * @return the Throwable */ public final Throwable getThrowable() { return m_throwable; } /** * Get the absolute time of the log event. * * @return the absolute time */ public final long getTime() { return m_time; } /** * Get the time of the log event relative to start of application. * * @return the time */ public final long getRelativeTime() { return m_time - START_TIME; } /** * Set the LogEvent category. * * @param category the category */ public final void setCategory(final String category) { m_category = category; } /** * Set the message for LogEvent. * * @param message the message */ public final void setMessage(final String message) { m_message = message; } /** * Set the throwable for LogEvent. * * @param throwable the instance of Throwable */ public final void setThrowable(final Throwable throwable) { m_throwable = throwable; } /** * Set the absolute time of LogEvent. * * @param time the time */ public final void setTime(final long time) { m_time = time; } /** * Helper method that replaces deserialized priority with correct singleton. * * @return the singleton version of object * @throws ObjectStreamException if an error occurs */ private Object readResolve() throws ObjectStreamException { if (null == m_category) m_category = ""; if (null == m_message) m_message = ""; String priorityName = ""; if (null != m_priority) { priorityName = m_priority.getName(); } m_priority = Priority.getPriorityForName(priorityName); return this; } }