<!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_65) on Sat Jul 12 16:49:45 PDT 2014 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
Index (Apache Log4j JMX GUI 2.0 API)
</TITLE>

<META NAME="date" CONTENT="2014-07-12">

<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="Index (Apache Log4j JMX GUI 2.0 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="./org/apache/logging/log4j/jmx/gui/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./org/apache/logging/log4j/jmx/gui/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="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&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;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="./index.html?index-all.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="index-all.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>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<A HREF="#_C_">C</A> <A HREF="#_G_">G</A> <A HREF="#_H_">H</A> <A HREF="#_I_">I</A> <A HREF="#_M_">M</A> <A HREF="#_N_">N</A> <A HREF="#_O_">O</A> <HR>
<A NAME="_C_"><!-- --></A><H2>
<B>C</B></H2>
<DL>
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/Client.html" title="class in org.apache.logging.log4j.jmx.gui"><B>Client</B></A> - Class in <A HREF="./org/apache/logging/log4j/jmx/gui/package-summary.html">org.apache.logging.log4j.jmx.gui</A><DD>This class allows client-side code to perform operations on remote
 (server-side) MBeans via proxies.<DT><A HREF="./org/apache/logging/log4j/jmx/gui/Client.html#Client(javax.management.remote.JMXConnector)"><B>Client(JMXConnector)</B></A> - 
Constructor for class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/Client.html" title="class in org.apache.logging.log4j.jmx.gui">Client</A>
<DD>Constructs a new <code>Client</code> object and creates proxies for all known
 remote MBeans.
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/Client.html#Client(javax.management.MBeanServerConnection)"><B>Client(MBeanServerConnection)</B></A> - 
Constructor for class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/Client.html" title="class in org.apache.logging.log4j.jmx.gui">Client</A>
<DD>Constructs a new <code>Client</code> object and creates proxies for all known
 remote MBeans.
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/ClientEditConfigPanel.html" title="class in org.apache.logging.log4j.jmx.gui"><B>ClientEditConfigPanel</B></A> - Class in <A HREF="./org/apache/logging/log4j/jmx/gui/package-summary.html">org.apache.logging.log4j.jmx.gui</A><DD>Panel for editing Log4j configurations.<DT><A HREF="./org/apache/logging/log4j/jmx/gui/ClientEditConfigPanel.html#ClientEditConfigPanel(org.apache.logging.log4j.core.jmx.LoggerContextAdminMBean)"><B>ClientEditConfigPanel(LoggerContextAdminMBean)</B></A> - 
Constructor for class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/ClientEditConfigPanel.html" title="class in org.apache.logging.log4j.jmx.gui">ClientEditConfigPanel</A>
<DD>&nbsp;
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/ClientGui.html" title="class in org.apache.logging.log4j.jmx.gui"><B>ClientGui</B></A> - Class in <A HREF="./org/apache/logging/log4j/jmx/gui/package-summary.html">org.apache.logging.log4j.jmx.gui</A><DD>Swing GUI that connects to a Java process via JMX and allows the user to view
 and modify the Log4j 2 configuration, as well as monitor status logs.<DT><A HREF="./org/apache/logging/log4j/jmx/gui/ClientGui.html#ClientGui(org.apache.logging.log4j.jmx.gui.Client)"><B>ClientGui(Client)</B></A> - 
Constructor for class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/ClientGui.html" title="class in org.apache.logging.log4j.jmx.gui">ClientGui</A>
<DD>&nbsp;
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.html" title="class in org.apache.logging.log4j.jmx.gui"><B>ClientGuiJConsolePlugin</B></A> - Class in <A HREF="./org/apache/logging/log4j/jmx/gui/package-summary.html">org.apache.logging.log4j.jmx.gui</A><DD>Adapts the <code>ClientGui</code> to the <code>JConsolePlugin</code> API.<DT><A HREF="./org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.html#ClientGuiJConsolePlugin()"><B>ClientGuiJConsolePlugin()</B></A> - 
Constructor for class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.html" title="class in org.apache.logging.log4j.jmx.gui">ClientGuiJConsolePlugin</A>
<DD>&nbsp;
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/Client.html#close()"><B>close()</B></A> - 
Method in class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/Client.html" title="class in org.apache.logging.log4j.jmx.gui">Client</A>
<DD>Closes the client connection to its server.
</DL>
<HR>
<A NAME="_G_"><!-- --></A><H2>
<B>G</B></H2>
<DL>
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/Client.html#getConnection()"><B>getConnection()</B></A> - 
Method in class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/Client.html" title="class in org.apache.logging.log4j.jmx.gui">Client</A>
<DD>Returns the MBean server connection through which to communicate with the
 remote mbeans.
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/Client.html#getLoggerContextAdmin(javax.management.ObjectName)"><B>getLoggerContextAdmin(ObjectName)</B></A> - 
Method in class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/Client.html" title="class in org.apache.logging.log4j.jmx.gui">Client</A>
<DD>&nbsp;
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/Client.html#getLoggerContextAdmins()"><B>getLoggerContextAdmins()</B></A> - 
Method in class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/Client.html" title="class in org.apache.logging.log4j.jmx.gui">Client</A>
<DD>Returns a list of proxies that allow operations to be performed on the
 remote <code>LoggerContextAdminMBean</code>s.
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/Client.html#getStatusLoggerAdmin(java.lang.String)"><B>getStatusLoggerAdmin(String)</B></A> - 
Method in class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/Client.html" title="class in org.apache.logging.log4j.jmx.gui">Client</A>
<DD>Returns the <code>StatusLoggerAdminMBean</code> associated with the specified
 context name, or <code>null</code>.
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/Client.html#getStatusLoggerObjectName(javax.management.ObjectName)"><B>getStatusLoggerObjectName(ObjectName)</B></A> - 
Method in class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/Client.html" title="class in org.apache.logging.log4j.jmx.gui">Client</A>
<DD>Returns the <code>ObjectName</code> of the <code>StatusLoggerAdminMBean</code>
 associated with the specified <code>LoggerContextAdminMBean</code>.
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.html#getTabs()"><B>getTabs()</B></A> - 
Method in class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.html" title="class in org.apache.logging.log4j.jmx.gui">ClientGuiJConsolePlugin</A>
<DD>&nbsp;
</DL>
<HR>
<A NAME="_H_"><!-- --></A><H2>
<B>H</B></H2>
<DL>
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/ClientGui.html#handleNotification(javax.management.Notification, java.lang.Object)"><B>handleNotification(Notification, Object)</B></A> - 
Method in class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/ClientGui.html" title="class in org.apache.logging.log4j.jmx.gui">ClientGui</A>
<DD>&nbsp;
</DL>
<HR>
<A NAME="_I_"><!-- --></A><H2>
<B>I</B></H2>
<DL>
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/Client.html#isLoggerContext(javax.management.ObjectName)"><B>isLoggerContext(ObjectName)</B></A> - 
Method in class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/Client.html" title="class in org.apache.logging.log4j.jmx.gui">Client</A>
<DD>Returns <code>true</code> if the specified <code>ObjectName</code> is for a
 <code>LoggerContextAdminMBean</code>, <code>false</code> otherwise.
</DL>
<HR>
<A NAME="_M_"><!-- --></A><H2>
<B>M</B></H2>
<DL>
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/ClientGui.html#main(java.lang.String[])"><B>main(String[])</B></A> - 
Static method in class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/ClientGui.html" title="class in org.apache.logging.log4j.jmx.gui">ClientGui</A>
<DD>Connects to the specified location and shows this panel in a window.
</DL>
<HR>
<A NAME="_N_"><!-- --></A><H2>
<B>N</B></H2>
<DL>
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.html#newSwingWorker()"><B>newSwingWorker()</B></A> - 
Method in class org.apache.logging.log4j.jmx.gui.<A HREF="./org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.html" title="class in org.apache.logging.log4j.jmx.gui">ClientGuiJConsolePlugin</A>
<DD>&nbsp;
</DL>
<HR>
<A NAME="_O_"><!-- --></A><H2>
<B>O</B></H2>
<DL>
<DT><A HREF="./org/apache/logging/log4j/jmx/gui/package-summary.html"><B>org.apache.logging.log4j.jmx.gui</B></A> - package org.apache.logging.log4j.jmx.gui<DD>Log4j 2.0 JMX GUI.</DL>
<HR>
<A HREF="#_C_">C</A> <A HREF="#_G_">G</A> <A HREF="#_H_">H</A> <A HREF="#_I_">I</A> <A HREF="#_M_">M</A> <A HREF="#_N_">N</A> <A HREF="#_O_">O</A> 

<!-- ======= 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="./org/apache/logging/log4j/jmx/gui/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="./org/apache/logging/log4j/jmx/gui/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="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&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;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="./index.html?index-all.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="index-all.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>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
<p align="center">Copyright &#169; 1999-2014 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.<br />             Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, the Apache Logging project logo,             and the Apache Log4j logo are trademarks of The Apache Software Foundation.</p>
</BODY>
</HTML>
