Search code examples
javajvmclassloaderwebsphere-liberty

WebSphere Liberty Profile Verbose Class Logging - where is it's output?


I'm getting an error in my program about a class not being found. I have double (and triple) checked and the class is definitely in my jar - it's finding other classes from the same jar just fine.

To help with debugging this, I want to turn on verbose class loading logging as described here: http://java.dzone.com/articles/how-use-verbose-options-java

That doesn't say how exactly to turn on this option if you're using WebSphere Liberty Profile, though, so I looked around some more and found this: http://www-01.ibm.com/support/knowledgecenter/SSD28V_8.5.5/com.ibm.websphere.wlp.doc/ae/twlp_admin_customvars.html

This says that I need to place the line in ${server.config.dir}/jvm.options.

So I wrote a simple file which consists only of:

-verbose:class

And I saved that to wlp/usr/servers/defaultServer/jvm.options, which means the new file is in the same directory as my apps folder, my logs folder, and my server.xml.

I stopped my server and started it back up and looked in the logs directory. It generated the same logs as always, nothing new: console.log, messages.log, status.log, and trace.log. I checked all of these log files and none of them have anything like the output from my first link.

So I don't think I'm doing this properly. Here are the three points where I think I may have gone wrong:

  1. Was my file too simple? Is there more that I need to put in it than just -verbose:class? Does that perhaps need to be nested in something? Are there more parameters that I must have? Prior to this I didn't have any jvm.options file at all, so I assume that it'll use default values for anything I'm not explicit about.

  2. Did I put the file in the proper place? As far as I can tell from the documentation, I think I put it in the proper spot, but the docs are a bit less explicit than I would like.

  3. Am I looking in the right place for the logs? What will the name of the log file be? Where will it be placed? I assumed it would be in the logs directory just like all of the other logs generated by WebSphere Liberty Profile, but maybe I'm incorrect?


Solution

  • While writing the third bullet for my question, I realized that console.log was actually a new file that didn't previously exist, and I hadn't actually checked what was in it. I just opened it up and lo and behold, it's exactly the class loading logs that I was looking for.

    So to recap, here are the answers to my bullets:

    1. You can have a file with nothing but -verbose:class
    2. You save it to wlp/usr/servers/<server name>/jvm.options
    3. The output is in wlp/usr/servers/<server name>/logs/console.log