<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_31) -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
LogEvent (Apache Log4j 1.2.17 API)
</TITLE>

<META NAME="date" CONTENT="2012-06-09">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="LogEvent (Apache Log4j 1.2.17 API)";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">
<HR>


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/LogEvent.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/log4j/pattern/LiteralPatternConverter.html" title="class in org.apache.log4j.pattern"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/log4j/pattern/LoggerPatternConverter.html" title="class in org.apache.log4j.pattern"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?org/apache/log4j/pattern/LogEvent.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="LogEvent.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.log4j.pattern</FONT>
<BR>
Class LogEvent</H2>
<PRE>
<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A>
  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>org.apache.log4j.pattern.LogEvent</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>LogEvent</B><DT>extends <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</A></DL>
</PRE>

<P>
This class is a copy of o.a.l.spi.LoggingEvent from
 log4j 1.2.15 which has been renamed to keep
 the same overall class name length to allow a
 serialization written with a prior instance of o.a.l.spi.LoggingEvent
 to be deserialized with this class just by mangling the class name
 in the byte stream.
<P>

<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#org.apache.log4j.pattern.LogEvent">Serialized Form</A></DL>
<HR>

<P>
<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#categoryName">categoryName</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>This field will be marked as private in future
 releases. Please do not access it directly. Use the <A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getLoggerName()"><CODE>getLoggerName()</CODE></A> method instead.</I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#fqnOfCategoryClass">fqnOfCategoryClass</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fully qualified name of the calling category class.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/log4j/Priority.html" title="class in org.apache.log4j">Priority</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#level">level</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>This field will be marked as private in future
 releases. Please do not access it directly. Use the <A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getLevel()"><CODE>getLevel()</CODE></A> method instead.</I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;long</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#timeStamp">timeStamp</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The number of milliseconds elapsed from 1/1/1970 until logging event
      was created.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#LogEvent(java.lang.String, org.apache.log4j.Category, long, org.apache.log4j.Priority, java.lang.Object, java.lang.Throwable)">LogEvent</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;fqnOfCategoryClass,
         <A HREF="../../../../org/apache/log4j/Category.html" title="class in org.apache.log4j">Category</A>&nbsp;logger,
         long&nbsp;timeStamp,
         <A HREF="../../../../org/apache/log4j/Priority.html" title="class in org.apache.log4j">Priority</A>&nbsp;level,
         <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;message,
         <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</A>&nbsp;throwable)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Instantiate a LoggingEvent from the supplied parameters.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#LogEvent(java.lang.String, org.apache.log4j.Category, org.apache.log4j.Priority, java.lang.Object, java.lang.Throwable)">LogEvent</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;fqnOfCategoryClass,
         <A HREF="../../../../org/apache/log4j/Category.html" title="class in org.apache.log4j">Category</A>&nbsp;logger,
         <A HREF="../../../../org/apache/log4j/Priority.html" title="class in org.apache.log4j">Priority</A>&nbsp;level,
         <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;message,
         <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</A>&nbsp;throwable)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Instantiate a LoggingEvent from the supplied parameters.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#LogEvent(java.lang.String, org.apache.log4j.Logger, long, org.apache.log4j.Level, java.lang.Object, java.lang.String, org.apache.log4j.spi.ThrowableInformation, java.lang.String, org.apache.log4j.spi.LocationInfo, java.util.Map)">LogEvent</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;fqnOfCategoryClass,
         <A HREF="../../../../org/apache/log4j/Logger.html" title="class in org.apache.log4j">Logger</A>&nbsp;logger,
         long&nbsp;timeStamp,
         <A HREF="../../../../org/apache/log4j/Level.html" title="class in org.apache.log4j">Level</A>&nbsp;level,
         <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;message,
         <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;threadName,
         <A HREF="../../../../org/apache/log4j/spi/ThrowableInformation.html" title="class in org.apache.log4j.spi">ThrowableInformation</A>&nbsp;throwable,
         <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;ndc,
         <A HREF="../../../../org/apache/log4j/spi/LocationInfo.html" title="class in org.apache.log4j.spi">LocationInfo</A>&nbsp;info,
         <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A>&nbsp;properties)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create new instance.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getFQNOfLoggerClass()">getFQNOfLoggerClass</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the fully qualified name of the calling logger sub-class/wrapper.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/log4j/Level.html" title="class in org.apache.log4j">Level</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getLevel()">getLevel</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the level of this event.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/log4j/spi/LocationInfo.html" title="class in org.apache.log4j.spi">LocationInfo</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getLocationInformation()">getLocationInformation</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the location information for this logging event.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getLoggerName()">getLoggerName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the name of the logger.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getMDC(java.lang.String)">getMDC</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the the context corresponding to the <code>key</code>
      parameter.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getMDCCopy()">getMDCCopy</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Obtain a copy of this thread's MDC prior to serialization or
     asynchronous logging.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getMessage()">getMessage</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the message for this logging event.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getNDC()">getNDC</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method returns the NDC for this event.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getProperties()">getProperties</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the set of properties
 for the event.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getProperty(java.lang.String)">getProperty</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;key)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return a property for this event.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getPropertyKeySet()">getPropertyKeySet</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the set of the key values in the properties
 for the event.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getRenderedMessage()">getRenderedMessage</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;long</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getStartTime()">getStartTime</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the time when the application started, in milliseconds
     elapsed since 01.01.1970.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getThreadName()">getThreadName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/log4j/spi/ThrowableInformation.html" title="class in org.apache.log4j.spi">ThrowableInformation</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getThrowableInformation()">getThrowableInformation</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the throwable information contained within this
     event.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getThrowableStrRep()">getThrowableStrRep</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return this event's throwable's string[] representaion.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;long</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getTimeStamp()">getTimeStamp</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getter for the event's time stamp.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#locationInformationExists()">locationInformationExists</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Check for the existence of location information without creating it
 (a byproduct of calling getLocationInformation).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#setProperty(java.lang.String, java.lang.String)">setProperty</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;propName,
            <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;propValue)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set value for MDC property.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->

<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Field Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="fqnOfCategoryClass"><!-- --></A><H3>
fqnOfCategoryClass</H3>
<PRE>
public final transient <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>fqnOfCategoryClass</B></PRE>
<DL>
<DD>Fully qualified name of the calling category class.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="categoryName"><!-- --></A><H3>
categoryName</H3>
<PRE>
public final <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>categoryName</B></PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>This field will be marked as private in future
 releases. Please do not access it directly. Use the <A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getLoggerName()"><CODE>getLoggerName()</CODE></A> method instead.</I><DD><p>The category (logger) name.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="level"><!-- --></A><H3>
level</H3>
<PRE>
public transient <A HREF="../../../../org/apache/log4j/Priority.html" title="class in org.apache.log4j">Priority</A> <B>level</B></PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>This field will be marked as private in future
 releases. Please do not access it directly. Use the <A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getLevel()"><CODE>getLevel()</CODE></A> method instead.</I><DD>Level of logging event. Level cannot be serializable because it
 is a flyweight.  Due to its special seralization it cannot be
 declared final either.
   
 <p> This field should not be accessed directly. You shoud use the
 <A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#getLevel()"><CODE>getLevel()</CODE></A> method instead.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="timeStamp"><!-- --></A><H3>
timeStamp</H3>
<PRE>
public final long <B>timeStamp</B></PRE>
<DL>
<DD>The number of milliseconds elapsed from 1/1/1970 until logging event
      was created.
<P>
<DL>
</DL>
</DL>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="LogEvent(java.lang.String, org.apache.log4j.Category, org.apache.log4j.Priority, java.lang.Object, java.lang.Throwable)"><!-- --></A><H3>
LogEvent</H3>
<PRE>
public <B>LogEvent</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;fqnOfCategoryClass,
                <A HREF="../../../../org/apache/log4j/Category.html" title="class in org.apache.log4j">Category</A>&nbsp;logger,
                <A HREF="../../../../org/apache/log4j/Priority.html" title="class in org.apache.log4j">Priority</A>&nbsp;level,
                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;message,
                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</A>&nbsp;throwable)</PRE>
<DL>
<DD>Instantiate a LoggingEvent from the supplied parameters.

     <p>Except <A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#timeStamp"><CODE>timeStamp</CODE></A> all the other fields of
     <code>LoggingEvent</code> are filled when actually needed.
     <p>
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>logger</CODE> - The logger generating this event.<DD><CODE>level</CODE> - The level of this event.<DD><CODE>message</CODE> - The message of this event.<DD><CODE>throwable</CODE> - The throwable of this event.</DL>
</DL>
<HR>

<A NAME="LogEvent(java.lang.String, org.apache.log4j.Category, long, org.apache.log4j.Priority, java.lang.Object, java.lang.Throwable)"><!-- --></A><H3>
LogEvent</H3>
<PRE>
public <B>LogEvent</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;fqnOfCategoryClass,
                <A HREF="../../../../org/apache/log4j/Category.html" title="class in org.apache.log4j">Category</A>&nbsp;logger,
                long&nbsp;timeStamp,
                <A HREF="../../../../org/apache/log4j/Priority.html" title="class in org.apache.log4j">Priority</A>&nbsp;level,
                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;message,
                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</A>&nbsp;throwable)</PRE>
<DL>
<DD>Instantiate a LoggingEvent from the supplied parameters.

     <p>Except <A HREF="../../../../org/apache/log4j/pattern/LogEvent.html#timeStamp"><CODE>timeStamp</CODE></A> all the other fields of
     <code>LoggingEvent</code> are filled when actually needed.
     <p>
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>logger</CODE> - The logger generating this event.<DD><CODE>timeStamp</CODE> - the timestamp of this logging event<DD><CODE>level</CODE> - The level of this event.<DD><CODE>message</CODE> - The message of this event.<DD><CODE>throwable</CODE> - The throwable of this event.</DL>
</DL>
<HR>

<A NAME="LogEvent(java.lang.String, org.apache.log4j.Logger, long, org.apache.log4j.Level, java.lang.Object, java.lang.String, org.apache.log4j.spi.ThrowableInformation, java.lang.String, org.apache.log4j.spi.LocationInfo, java.util.Map)"><!-- --></A><H3>
LogEvent</H3>
<PRE>
public <B>LogEvent</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;fqnOfCategoryClass,
                <A HREF="../../../../org/apache/log4j/Logger.html" title="class in org.apache.log4j">Logger</A>&nbsp;logger,
                long&nbsp;timeStamp,
                <A HREF="../../../../org/apache/log4j/Level.html" title="class in org.apache.log4j">Level</A>&nbsp;level,
                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;message,
                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;threadName,
                <A HREF="../../../../org/apache/log4j/spi/ThrowableInformation.html" title="class in org.apache.log4j.spi">ThrowableInformation</A>&nbsp;throwable,
                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;ndc,
                <A HREF="../../../../org/apache/log4j/spi/LocationInfo.html" title="class in org.apache.log4j.spi">LocationInfo</A>&nbsp;info,
                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A>&nbsp;properties)</PRE>
<DL>
<DD>Create new instance.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>fqnOfCategoryClass</CODE> - Fully qualified class name
                 of Logger implementation.<DD><CODE>logger</CODE> - The logger generating this event.<DD><CODE>timeStamp</CODE> - the timestamp of this logging event<DD><CODE>level</CODE> - The level of this event.<DD><CODE>message</CODE> - The message of this event.<DD><CODE>threadName</CODE> - thread name<DD><CODE>throwable</CODE> - The throwable of this event.<DD><CODE>ndc</CODE> - Nested diagnostic context<DD><CODE>info</CODE> - Location info<DD><CODE>properties</CODE> - MDC properties<DT><B>Since:</B></DT>
  <DD>1.2.15</DD>
</DL>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="getLocationInformation()"><!-- --></A><H3>
getLocationInformation</H3>
<PRE>
public <A HREF="../../../../org/apache/log4j/spi/LocationInfo.html" title="class in org.apache.log4j.spi">LocationInfo</A> <B>getLocationInformation</B>()</PRE>
<DL>
<DD>Set the location information for this logging event. The collected
     information is cached for future use.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getLevel()"><!-- --></A><H3>
getLevel</H3>
<PRE>
public <A HREF="../../../../org/apache/log4j/Level.html" title="class in org.apache.log4j">Level</A> <B>getLevel</B>()</PRE>
<DL>
<DD>Return the level of this event. Use this form instead of directly
 accessing the <code>level</code> field.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getLoggerName()"><!-- --></A><H3>
getLoggerName</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getLoggerName</B>()</PRE>
<DL>
<DD>Return the name of the logger. Use this form instead of directly
 accessing the <code>categoryName</code> field.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getMessage()"><!-- --></A><H3>
getMessage</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A> <B>getMessage</B>()</PRE>
<DL>
<DD>Return the message for this logging event.

     <p>Before serialization, the returned object is the message
     passed by the user to generate the logging event. After
     serialization, the returned value equals the String form of the
     message possibly after object rendering.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Since:</B></DT>
  <DD>1.1</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="getNDC()"><!-- --></A><H3>
getNDC</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getNDC</B>()</PRE>
<DL>
<DD>This method returns the NDC for this event. It will return the
 correct content even if the event was generated in a different
 thread or even on a different machine. The <A HREF="../../../../org/apache/log4j/NDC.html#get()"><CODE>NDC.get()</CODE></A> method
 should <em>never</em> be called directly.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getMDC(java.lang.String)"><!-- --></A><H3>
getMDC</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A> <B>getMDC</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;key)</PRE>
<DL>
<DD>Returns the the context corresponding to the <code>key</code>
      parameter. If there is a local MDC copy, possibly because we are
      in a logging server or running inside AsyncAppender, then we
      search for the key in MDC copy, if a value is found it is
      returned. Otherwise, if the search in MDC copy returns a null
      result, then the current thread's <code>MDC</code> is used.

      <p>Note that <em>both</em> the local MDC copy and the current
      thread's MDC are searched.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getMDCCopy()"><!-- --></A><H3>
getMDCCopy</H3>
<PRE>
public void <B>getMDCCopy</B>()</PRE>
<DL>
<DD>Obtain a copy of this thread's MDC prior to serialization or
     asynchronous logging.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getRenderedMessage()"><!-- --></A><H3>
getRenderedMessage</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getRenderedMessage</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getStartTime()"><!-- --></A><H3>
getStartTime</H3>
<PRE>
public static long <B>getStartTime</B>()</PRE>
<DL>
<DD>Returns the time when the application started, in milliseconds
     elapsed since 01.01.1970.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getThreadName()"><!-- --></A><H3>
getThreadName</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getThreadName</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getThrowableInformation()"><!-- --></A><H3>
getThrowableInformation</H3>
<PRE>
public <A HREF="../../../../org/apache/log4j/spi/ThrowableInformation.html" title="class in org.apache.log4j.spi">ThrowableInformation</A> <B>getThrowableInformation</B>()</PRE>
<DL>
<DD>Returns the throwable information contained within this
     event. May be <code>null</code> if there is no such information.

     <p>Note that the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang"><CODE>Throwable</CODE></A> object contained within a
     <A HREF="../../../../org/apache/log4j/spi/ThrowableInformation.html" title="class in org.apache.log4j.spi"><CODE>ThrowableInformation</CODE></A> does not survive serialization.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Since:</B></DT>
  <DD>1.1</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="getThrowableStrRep()"><!-- --></A><H3>
getThrowableStrRep</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>[] <B>getThrowableStrRep</B>()</PRE>
<DL>
<DD>Return this event's throwable's string[] representaion.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="setProperty(java.lang.String, java.lang.String)"><!-- --></A><H3>
setProperty</H3>
<PRE>
public final void <B>setProperty</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;propName,
                              <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;propValue)</PRE>
<DL>
<DD>Set value for MDC property.
 This adds the specified MDC property to the event.
 Access to the MDC is not synchronized, so this
 method should only be called when it is known that
 no other threads are accessing the MDC.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>propName</CODE> - <DD><CODE>propValue</CODE> - <DT><B>Since:</B></DT>
  <DD>1.2.15</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="getProperty(java.lang.String)"><!-- --></A><H3>
getProperty</H3>
<PRE>
public final <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getProperty</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;key)</PRE>
<DL>
<DD>Return a property for this event. The return value can be null.

 Equivalent to getMDC(String) in log4j 1.2.  Provided
 for compatibility with log4j 1.3.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>key</CODE> - property name
<DT><B>Returns:</B><DD>property value or null if property not set<DT><B>Since:</B></DT>
  <DD>1.2.15</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="locationInformationExists()"><!-- --></A><H3>
locationInformationExists</H3>
<PRE>
public final boolean <B>locationInformationExists</B>()</PRE>
<DL>
<DD>Check for the existence of location information without creating it
 (a byproduct of calling getLocationInformation).
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>true if location information has been extracted.<DT><B>Since:</B></DT>
  <DD>1.2.15</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="getTimeStamp()"><!-- --></A><H3>
getTimeStamp</H3>
<PRE>
public final long <B>getTimeStamp</B>()</PRE>
<DL>
<DD>Getter for the event's time stamp. The time stamp is calculated starting
 from 1970-01-01 GMT.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>timestamp<DT><B>Since:</B></DT>
  <DD>1.2.15</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="getPropertyKeySet()"><!-- --></A><H3>
getPropertyKeySet</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</A> <B>getPropertyKeySet</B>()</PRE>
<DL>
<DD>Returns the set of the key values in the properties
 for the event.

 The returned set is unmodifiable by the caller.

 Provided for compatibility with log4j 1.3
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>Set an unmodifiable set of the property keys.<DT><B>Since:</B></DT>
  <DD>1.2.15</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="getProperties()"><!-- --></A><H3>
getProperties</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A> <B>getProperties</B>()</PRE>
<DL>
<DD>Returns the set of properties
 for the event.

 The returned set is unmodifiable by the caller.

 Provided for compatibility with log4j 1.3
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>Set an unmodifiable map of the properties.<DT><B>Since:</B></DT>
  <DD>1.2.15</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="getFQNOfLoggerClass()"><!-- --></A><H3>
getFQNOfLoggerClass</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getFQNOfLoggerClass</B>()</PRE>
<DL>
<DD>Get the fully qualified name of the calling logger sub-class/wrapper.
 Provided for compatibility with log4j 1.3
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>fully qualified class name, may be null.<DT><B>Since:</B></DT>
  <DD>1.2.15</DD>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/LogEvent.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/log4j/pattern/LiteralPatternConverter.html" title="class in org.apache.log4j.pattern"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/log4j/pattern/LoggerPatternConverter.html" title="class in org.apache.log4j.pattern"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?org/apache/log4j/pattern/LogEvent.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="LogEvent.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright &#169; 1999-2012 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.
</BODY>
</HTML>
