Не удается заставить java.util.logging работать с приложением, запущенным через JNLP - PullRequest
3 голосов
/ 23 марта 2012

В целях отладки я бы хотел, чтобы мое приложение регистрировалось в java.util.logging.SocketHandler. Вот мой конфигурационный файл:

handlers = java.util.logging.SocketHandler
.level = WARNING
java.util.logging.SocketHandler.level = ALL
java.util.logging.SocketHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SocketHandler.host = localhost
java.util.logging.SocketHandler.port = 10101
com.mycompany.level = ALL

Этот файл конфигурации ведения журнала связан с jar-ом приложения и считывается из main. Когда я запускаю приложение автономно, ведение журнала работает как положено. Я вижу записи операторов, передаваемые на localhost: 10101. Тем не менее, когда я запускаю приложение через JNLP, не вижу регистрации. Вот мой файл конфигурации JNLP:

<jnlp spec="1.0+" codebase="http://mycompany.com" href="myapp.jnlp">
  <information>
    <title>My App</title>
    <vendor>My Company</vendor>
    <offline-allowed/>
  </information>
  <security>
      <all-permissions/>
  </security>
  <resources>
    <j2se version="1.6+"/>
    <jar href="myapp.jar"/>
  </resources>
  <application-desc main-class="com.mycompany.Main"/>
</jnlp>

Я не нашел никакой информации и не вижу причин, по которым это не должно работать. Может кто-нибудь, пожалуйста, помогите сделать эту работу? Или предложите другой (возможно, лучший?) Способ записи журналов из приложения, запущенного через JNLP.

1 Ответ

2 голосов
/ 27 марта 2012

Ну, я понял это. Оказывается, моя проблема заключалась в том, как я загружал файл свойств ведения журнала в качестве ресурса. Я использовал:

ClassLoader.getSystemResourceAsStream("/com/mycompany/logging.properties");

Но я должен был использовать:

Main.class.getResourceAsStream("/com/mycompany/logging.properties");
...