javajmxlog4j2jconsoleconnectionexception

Unable to connect from log4j2 Client GUI to my application


OS: OSX Mavericks
IDE: Netbeans 8.0 (Build 201403101706)
Java: 1.7.0_45; Java HotSpot(TM) 64-Bit Server VM 24.45-b08
log4j: 2.0rc1

I am unable to connect from the log4j2 Client GUI, regardless of whether running it as a JConsole Plug-in, or running it as a standalone application.

Below are details of what I've used in my attempts:

My application
- ran from Netbeans, with these VM arguments:

-Djava.security.policy=~/Downloads/policy -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false


Running the Client GUI as a JConsole Plug-in
- command I used to execute:

jconsole -pluginpath ~/Downloads/Software/Development/Java/log4j/2.0/rc1/apache-log4j-2.0-rc1-bin/log4j-core-2.0-rc1.jar:~/Downloads/Software/Development/Java/log4j/2.0/rc1/apache-log4j-2.0-rc1-bin/log4j-jmx-gui-2.0-rc1.jar 

The JConsole starts without issue, but I don't see the Log4j2 tab as per the manual (http://logging.apache.org/log4j/2.x/manual/jmx.html)

Running the Client GUI as a Stand-alone Application
- command I used to execute (I'm running this from the directory where the JARs are:

java -cp log4j-core-2.0-rc1.jar:log4j-jmx-gui-2.0-rc1.jar org.apache.logging.log4j.jmx.gui.ClientGUI localhost:9010

- however, i getting a java.lang.NoClassDefFoundError:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/logging/log4j/status/StatusLogger
        at org.apache.logging.log4j.core.jmx.Server.<clinit>(Server.java:59)
        at org.apache.logging.log4j.jmx.gui.Client.getStatusLoggerAdmin(Client.java:143)
        at org.apache.logging.log4j.jmx.gui.ClientGUI.addWidgetForLoggerContext(ClientGUI.java:109)
        at org.apache.logging.log4j.jmx.gui.ClientGUI.populateWidgets(ClientGUI.java:98)
        at org.apache.logging.log4j.jmx.gui.ClientGUI.<init>(ClientGUI.java:81)
        at org.apache.logging.log4j.jmx.gui.ClientGUI$2.run(ClientGUI.java:276)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
        at java.awt.EventQueue.access$200(EventQueue.java:103)
        at java.awt.EventQueue$3.run(EventQueue.java:694)
        at java.awt.EventQueue$3.run(EventQueue.java:692)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.status.StatusLogger
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        ... 20 more

Any suggestions/guidances would be much appreciated! Thanks in advance.

Cheers.


Solution

  • I've updated the documentation in the source repository to clarify that the log4j-api jar must be added to the jconsole pluginpath. The manual page will show this correctly in the next release (rc2).

    Thanks for reporting this.