У меня есть приложение Java maven, в котором я создал свинг GUI.
Я использую logback-classi c для ведения журнала. logback. xml присутствует в каталоге src / main / resources.
Когда я запускаю приложение с помощью eclipse «Run As Java Application», оно работает как положено, и приложение регистрируется в консоли и в файле журнала.
Но после экспорта приложения в виде исполняемого файла JAR и двойного щелчка, чтобы запустить приложение, оно не регистрируется в файле.
Когда я открыл командную строку и запустил приложение, используя "java -jar myjarfile.jar ", я могу видеть журналы консоли, но она использует конфигурацию обратного входа по умолчанию.
Я попытался задать дополнительный параметр, -Dlogback.configurationFile = "путь к файлу / logback. xml", и я получаю следующую ошибку:
Не удалось создать экземпляр [ch.qos.logback.classi c .LoggerContext] Сообщаемое исключение: java .lang.IllegalArgumentException: имя в sun.mis c .URLClassPath $ Loader.findResource (неизвестный источник) в sun.mis c .URLClassPath $ 1.next (неизвестный источник) в sun.mis c .URLClassPath $ 1.hasMoreElements (неизвестный источник) в java. net .URLClassLoader $ 3 $ 1.run (неизвестный источник) в java. net .URLClassLoader $ 3 $ 1.run (неизвестный источник) в java .security.AccessController.doPrivileged (собственный метод) в java. net .URLClassLoader $ 3.next (неизвестный источник) в java. net .URLClassLoader $ 3.hasMoreElements (неизвестный источник) в sun.mis c .CompoundEnumeration.next (неизвестный источник) в sun.mis c .CompoundEnumeration.hasMoreElements (неизвестный источник) в ch.qos.logback.core.util. Loader.getResources (Loader. java: 73) в ch.qos.logback.classi c .util.C ontextInitializer.multiplicityWarning (ContextInitializer. java: 183) в ch.qos.logback.classi c .util.ContextInitializer.statusOnResourceSearch (ContextInitializer. java: 175) в ch.qos.logback.classi * 10. util.ContextInitializer.findConfigFileURLFromSystemProperties (ContextInitializer. java: 111) по адресу ch.qos.logback.classi c .util.ContextInitializer.findURLOfDefaultConfigurationFile (ContextInitializer. java: 120.log). * .util.ContextInitializer.autoConfig (ContextInitializer. java: 148) в org.slf4j.impl.StaticLoggerBinder.init (StaticLoggerBinder. java: 84) в org.slf4j.impl.Static *oggerBinder. (StaticLog 1058B). : 55) в org.slf4j.LoggerFactory.bind (LoggerFactory. java: 150) в org.slf4j.LoggerFactory.performInitialization (LoggerFactory. java: 124) в org.slf4j.LoggerFactory.getILoggerFactory 10 (Log. *: 412) в org.slf4j.LoggerFactory.getLogger (LoggerFactory. java: 357) в org.slf4j.LoggerFactory.getLogger (LoggerFactory. java: 383) в com.esig nature.tools.templatemigration.Converter GUI. (Converter GUI. java: 35) в java .lang.Class.forName0 (собственный метод) в java .lang.Class.forName (неизвестный источник ) в org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main (JarRsrcLoader. java: 59)
Я не знаю, что мне не хватает, и я хочу войти в систему из запускаемого JAR в файл журнала.
Это сбивает с толку, потому что оно работает из Eclipse, но не из экспортированного запускаемого JAR.
Ниже приведен logback. xml файл.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_HOME" value="C:/template converter logs" />
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level - %msg%n</pattern>
</encoder>
</appender>
<appender name="rollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/applog-%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="rollingFile" />
</root>
</configuration>