2015-05-06 4 views
0

Я пытаюсь создать пакет, используя весеннюю партию, весеннюю mvc и весеннюю загрузку. И я использую log4j2 для ведения журнала.log4j2.xml загружен, но не применяется [аргумент JVM]

Моя цель состоит в том, чтобы загрузить внешний файл конфигурации log4j2.xml благодаря аргументам JVM, как этого

-Dlog4j.configurationFile=file://C:\{path}\Workspace\demo-indexeur\config\log4j2.xml 

Spring ботинке обнаружить мой файл (у меня нет ошибки в консоли) и загрузить его, но не примените конфигурацию, которую я установил внутри файла.

Вот отладки нагрузки моего файла конфигурации:

2015-05-06 15:36:53,279 DEBUG Starting configuration XmlConfiguration[location=C:\{path}\Workspace\demo-indexeur\config\log4j2.xml] 
2015-05-06 15:36:53,279 DEBUG PluginManager 'Core' found 69 plugins 
2015-05-06 15:36:53,279 DEBUG PluginManager 'Level' found 0 plugins 
2015-05-06 15:36:53,279 DEBUG PluginManager 'Lookup' found 10 plugins 
2015-05-06 15:36:53,279 DEBUG Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout]. Searching for builder factory method... 
2015-05-06 15:36:53,279 DEBUG Found builder factory method [newBuilder]: public static org.apache.logging.log4j.core.layout.PatternLayout$Builder org.apache.logging.log4j.core.layout.PatternLayout.newBuilder(). 
2015-05-06 15:36:53,289 DEBUG TypeConverterRegistry initializing. 
2015-05-06 15:36:53,289 DEBUG PluginManager 'TypeConverter' found 21 plugins 
2015-05-06 15:36:53,299 DEBUG Calling build() on class class org.apache.logging.log4j.core.layout.PatternLayout$Builder for element PatternLayout with params(pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n", Configuration(C:\{path}\Workspace\demo-indexeur\config\log4j2.xml), null, charset="null", alwaysWriteExceptions="null", noConsoleNoAnsi="null", header="null", footer="null") 
2015-05-06 15:36:53,299 DEBUG PluginManager 'Converter' found 33 plugins 
2015-05-06 15:36:53,299 DEBUG Built Plugin[name=layout] OK from builder factory method. 
2015-05-06 15:36:53,299 DEBUG Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.ConsoleAppender]. Searching for builder factory method... 
2015-05-06 15:36:53,299 INFO Log4j appears to be running in a Servlet environment, but there's no log4j-web module available. If you want better web container support, please add the log4j-web JAR to your web archive or server lib directory. 
2015-05-06 15:36:53,299 DEBUG PluginManager 'Converter' found 33 plugins 
2015-05-06 15:36:53,299 DEBUG Jansi is not installed, cannot find org.fusesource.jansi.WindowsAnsiOutputStream 
2015-05-06 15:36:53,299 DEBUG Found builder factory method [newBuilder]: public static org.apache.logging.log4j.core.appender.ConsoleAppender$Builder org.apache.logging.log4j.core.appender.ConsoleAppender.newBuilder(). 
2015-05-06 15:36:53,299 DEBUG No PluginVisitorStrategy found on annotation [interface org.apache.logging.log4j.core.config.plugins.validation.constraints.Required]. Ignoring. 
2015-05-06 15:36:53,299 DEBUG Encountered type [org.apache.logging.log4j.core.layout.PatternLayout] which can only be checked for null. 
2015-05-06 15:36:53,309 DEBUG No PluginVisitorStrategy found on annotation [interface org.apache.logging.log4j.core.config.plugins.validation.constraints.Required]. Ignoring. 
2015-05-06 15:36:53,309 DEBUG Encountered type [org.apache.logging.log4j.core.appender.ConsoleAppender$Target] which can only be checked for null. 
2015-05-06 15:36:53,309 DEBUG No PluginVisitorStrategy found on annotation [interface org.apache.logging.log4j.core.config.plugins.validation.constraints.Required]. Ignoring. 
2015-05-06 15:36:53,309 DEBUG Calling build() on class class org.apache.logging.log4j.core.appender.ConsoleAppender$Builder for element Console with params(PatternLayout(%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n), null, target="SYSTEM_OUT", name="Console", follow="null", ignoreExceptions="null") 
2015-05-06 15:36:53,309 DEBUG Jansi is not installed, cannot find org.fusesource.jansi.WindowsAnsiOutputStream 
2015-05-06 15:36:53,309 DEBUG Built Plugin[name=appender] OK from builder factory method. 
2015-05-06 15:36:53,309 DEBUG Building Plugin[name=appenders, class=org.apache.logging.log4j.core.config.AppendersPlugin]. Searching for builder factory method... 
2015-05-06 15:36:53,309 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.AppendersPlugin. Going to try finding a factory method instead. 
2015-05-06 15:36:53,309 DEBUG Still building Plugin[name=appenders, class=org.apache.logging.log4j.core.config.AppendersPlugin]. Searching for factory method... 
2015-05-06 15:36:53,309 DEBUG Found factory method [createAppenders]: public static java.util.concurrent.ConcurrentMap org.apache.logging.log4j.core.config.AppendersPlugin.createAppenders(org.apache.logging.log4j.core.Appender[]). 
2015-05-06 15:36:53,309 DEBUG Calling createAppenders on class org.apache.logging.log4j.core.config.AppendersPlugin for element Appenders with params(={Console}) 
2015-05-06 15:36:53,309 DEBUG Built Plugin[name=appenders] OK from factory method. 
2015-05-06 15:36:53,309 DEBUG Building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef]. Searching for builder factory method... 
2015-05-06 15:36:53,309 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.AppenderRef. Going to try finding a factory method instead. 
2015-05-06 15:36:53,309 DEBUG Still building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef]. Searching for factory method... 
2015-05-06 15:36:53,309 DEBUG Found factory method [createAppenderRef]: public static org.apache.logging.log4j.core.config.AppenderRef org.apache.logging.log4j.core.config.AppenderRef.createAppenderRef(java.lang.String,org.apache.logging.log4j.Level,org.apache.logging.log4j.core.Filter). 
2015-05-06 15:36:53,309 DEBUG Calling createAppenderRef on class org.apache.logging.log4j.core.config.AppenderRef for element AppenderRef with params(ref="Console", level="null", null) 
2015-05-06 15:36:53,309 DEBUG Built Plugin[name=AppenderRef] OK from factory method. 
2015-05-06 15:36:53,309 DEBUG Building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger]. Searching for builder factory method... 
2015-05-06 15:36:53,309 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger. Going to try finding a factory method instead. 
2015-05-06 15:36:53,309 DEBUG Still building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger]. Searching for factory method... 
2015-05-06 15:36:53,309 DEBUG Found factory method [createLogger]: public static org.apache.logging.log4j.core.config.LoggerConfig org.apache.logging.log4j.core.config.LoggerConfig$RootLogger.createLogger(java.lang.String,org.apache.logging.log4j.Level,java.lang.String,org.apache.logging.log4j.core.config.AppenderRef[],org.apache.logging.log4j.core.config.Property[],org.apache.logging.log4j.core.config.Configuration,org.apache.logging.log4j.core.Filter). 
2015-05-06 15:36:53,319 DEBUG Calling createLogger on class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger for element Root with params(additivity="null", level="ERROR", includeLocation="null", ={Console}, ={}, Configuration(C:\{path}\Workspace\demo-indexeur\config\log4j2.xml), null) 
2015-05-06 15:36:53,319 DEBUG Built Plugin[name=root] OK from factory method. 
2015-05-06 15:36:53,319 DEBUG Building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin]. Searching for builder factory method... 
2015-05-06 15:36:53,319 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.LoggersPlugin. Going to try finding a factory method instead. 
2015-05-06 15:36:53,319 DEBUG Still building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin]. Searching for factory method... 
2015-05-06 15:36:53,319 DEBUG Found factory method [createLoggers]: public static org.apache.logging.log4j.core.config.Loggers org.apache.logging.log4j.core.config.LoggersPlugin.createLoggers(org.apache.logging.log4j.core.config.LoggerConfig[]). 
2015-05-06 15:36:53,319 DEBUG Calling createLoggers on class org.apache.logging.log4j.core.config.LoggersPlugin for element Loggers with params(={root}) 
2015-05-06 15:36:53,319 DEBUG Built Plugin[name=loggers] OK from factory method. 
2015-05-06 15:36:53,319 DEBUG Started configuration XmlConfiguration[location=C:\{path}\Workspace\demo-indexeur\config\log4j2.xml] OK. 
2015-05-06 15:36:53,319 TRACE Stopping [email protected]b3... 
2015-05-06 15:36:53,319 TRACE AbstractConfiguration stopped 0 AsyncLoggerConfigs. 
2015-05-06 15:36:53,319 TRACE AbstractConfiguration stopped 0 AsyncAppenders. 
2015-05-06 15:36:53,319 TRACE AbstractConfiguration stopped 1 Appenders. 
2015-05-06 15:36:53,319 TRACE AbstractConfiguration stopped 0 Loggers. 
2015-05-06 15:36:53,319 DEBUG Stopped [email protected]74 OK 
2015-05-06 15:36:53,319 DEBUG Registering MBean org.apache.logging.log4j2:[email protected] 
2015-05-06 15:36:53,329 DEBUG Registering MBean org.apache.logging.log4j2:[email protected],component=StatusLogger 
2015-05-06 15:36:53,329 DEBUG Registering MBean org.apache.logging.log4j2:[email protected],component=ContextSelector 
2015-05-06 15:36:53,329 DEBUG Registering MBean org.apache.logging.log4j2:[email protected],component=Loggers,name= 
2015-05-06 15:36:53,329 DEBUG Registering MBean org.apache.logging.log4j2:[email protected],component=Appenders,name=Console 
2015-05-06 15:36:53,329 DEBUG Reconfiguration complete for context[[email protected]] at null ([email protected]) with optional ClassLoader: null 
2015-05-06 15:36:53,329 DEBUG Shutdown hook enabled. Registering a new one. 
2015-05-06 15:36:53,329 DEBUG LoggerContext[[email protected], [email protected]] started OK. 
2015-05-06 15:36:53,489 DEBUG Using configurationFactory or[email protected]6973bf95 
2015-05-06 15:36:53,489 INFO Log4j appears to be running in a Servlet environment, but there's no log4j-web module available. If you want better web container support, please add the log4j-web JAR to your web archive or server lib directory. 

Когда я переместить файл внутри «SRC/основные/ресурсов», она работает отлично, но когда я пытаюсь экспортирования файла он Безразлично «т.

Вот мой XML-файл:

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="WARN"> 
    <Appenders> 
    <Console name="Console" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
    </Console> 
    </Appenders> 
    <Loggers> 
    <Root level="error"> 
     <AppenderRef ref="Console"/> 
    </Root> 
    </Loggers> 
</Configuration> 

Вот моя зависимость:

<!-- Spring Batch --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-batch</artifactId> 
     <exclusions> 
<!--   Suppression de SLF4J --> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

<!-- Spring web--> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <exclusions> 
<!--   Suppression de SLF4J --> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

<!-- Utilisation de LOG4J2 --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-log4j2</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 

Может кто-нибудь сказать мне, почему это не работает, когда я экстернализовать файл? Благодарим вас за помощь.

ответ

1

Log4j имеет возможность автоматически конфигурировать себя во время инициализации. Log4j проверит системное свойство log4j.configurationFile и, если установлено, попытается загрузить конфигурацию.

Именно поэтому мой файл был обнаружен и загружен без ошибок, но не использовался весной.

То, что я забыл это сказать сапог пружинный где найти файл конфигурации протоколирования слишком и для этого я должен добавить в application.properties яровой загрузки:

logging.config= # location of logging config file 

И после того, все работы Что ж.

+0

Это работало для меня в моем файле загрузки boot.properties. Благодарю. – AdrianVeidt

0

Попробуйте один из этих форматов:

-Dlog4j.configurationFile=/Workspace/demo-indexeur/config/log4j2.xml 
-Dlog4j.configurationFile=file://c:/Workspace/demo-indexeur/config/log4j2.xml 
-Dlog4j.configurationFile=file:///c:/Workspace/demo-indexeur/config/log4j2.xml 

Если запустить файл банку, этот аргумент должен быть помещен перед -jar application.jar.

+0

Я пробовал 3 варианта, но не работает. – youtix

0

Я думаю, нам просто нужно добавить свойство в application.properties
Например, мы хотим поместить log4j2.xml в подкаталог jar named config. Так, в application.properties мы имеем:

logging.config=classpath:config/log4j2.xml 
0

logging.config = путь к классам: log4j2.xml будет работать, если файл log4j2.xml помещается в папку по умолчанию ресурсы структуры проекта Maven.

Проверен на Спринг BOOT 1.3.5

0

кот JVM аргумент перекроет logging.config свойства. Постарайтесь достичь этого с помощью статического блока.

static { 
    // ...get the log4j2.xml uri 
    org.apache.logging.log4j.LogManager.getContext(null, false, uri); 
} 
Смежные вопросы