1

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
  • I've tried various ports: 9010, 1099, 33445 etc
  • Content of my policy file (I've allowed everything):

    grant {
    permission java.security.AllPermission;
    };


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.

Arthur
  • 595
  • 1
  • 7
  • 17
  • I've logged a ticket on ASF JIRA [LOG4J2-665](https://issues.apache.org/jira/browse/LOG4J2-665). – Arthur Jun 10 '14 at 07:46
  • As per Ralph's feedback, I've included the log4j-api-2.0-rc1.jar in the classpath thus able to startup the standalone app. However, I only see "LoggerContext: sun.misc.Launcher$AppClassLoader@3b26456a", as opposed to the "LoggerContext: AsyncLoggerContext", and the StatusLogger tab on the second row displays a bunch of warnings (initially blank) after I click on the Reconfigure from Location of the Configuration tab. – Arthur Jun 10 '14 at 07:53
  • I am now able to startup both the standalone client and as a JConsole plugin. However, in both instances, i see "LoggerContext: sun.misc.Launcher$AppClassLoader@3b26456a", as opposed to the "LoggerContext: AsyncLoggerContext". And also, nothing is displayed under the StatusLogger tab. When I click on the Configuration Tab, and click on Reconfigure from Location, StatusLogger tab is refreshed with the a bunch of warnings: – Arthur Jun 11 '14 at 05:29
  • 2014-06-11 13:25:32,077 WARN Could not examine class 'org/apache/logging/log4j/core/appender/db/jpa/converter/ContextMapAttributeConverter.class' due to a java.lang.NoClassDefFoundError with message: javax/persistence/AttributeConverter 2014-06-11 13:25:32,079 WARN Could not examine class 'org/apache/logging/log4j/core/appender/db/jpa/converter/ContextMapJsonAttributeConverter$1.class' due to a java.lang.NoClassDefFoundError with message: com/fasterxml/jackson/core/type/TypeReference – Arthur Jun 11 '14 at 05:30
  • As per Remko from the log4j2 team, the Client GUI is for monitoring and configuring of the log4j configuration (not monitoring of the actual logging events). Thus this is not an issue. – Arthur Jun 12 '14 at 02:29

1 Answers1

0

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.

Remko Popma
  • 35,130
  • 11
  • 92
  • 114