2017-02-24 38 views
7

Mam aplikację do rozruchu wiosennego, która wyprowadza około 1500 linii rejestrowania debugowania JNDI do stdout przy uruchomieniu przed zainicjowaniem funkcji logback. Czy ktoś wie, co jest przyczyną tego i czy istnieje sposób, aby zainicjować logback przed tym? Mam -Dlogback.debug = true, ale to niewiele pomaga.Rejestrowanie JNDI wiosny przed zainicjowaniem rejestrowania danych

10:44:56.453 [main] DEBUG org.springframework.jndi.JndiTemplate - Looking up JNDI object with name [java:comp/env/logging.exception-conversion-word] 
10:44:56.457 [main] DEBUG jndi - InitialContextFactory.getInitialContext() 
10:44:56.457 [main] DEBUG jndi - Created initial context delegate for local namespace:[email protected] 
10:44:56.457 [main] DEBUG org.eclipse.jetty.jndi.java.javaURLContextFactory - >>> new root context requested 
10:44:56.457 [main] DEBUG jndi - Looking up name="comp/env/logging.exception-conversion-word" 
10:44:56.457 [main] DEBUG jndi - Trying thread context classloader 
10:44:56.457 [main] DEBUG jndi - Looking up name="env/logging.exception-conversion-word" 
10:44:56.458 [main] DEBUG org.springframework.jndi.JndiLocatorDelegate - Converted JNDI name [java:comp/env/logging.exception-conversion-word] not found - trying original name [logging.exception-conversion-word]. javax.naming.NameNotFoundException; remaining name 'env/logging.exception-conversion-word' 
10:44:56.458 [main] DEBUG org.springframework.jndi.JndiTemplate - Looking up JNDI object with name [logging.exception-conversion-word] 

... 

10:44:56.487 [main] DEBUG jndi - Looking up name="env/LOGGING_PATTERNLEVEL" 
10:44:56.487 [main] DEBUG org.springframework.jndi.JndiLocatorDelegate - Converted JNDI name [java:comp/env/LOGGING_PATTERNLEVEL] not found - trying original name [LOGGING_PATTERNLEVEL]. javax.naming.NameNotFoundException; remaining name 'env/LOGGING_PATTERNLEVEL' 
10:44:56.487 [main] DEBUG org.springframework.jndi.JndiTemplate - Looking up JNDI object with name [LOGGING_PATTERNLEVEL] 
10:44:56.487 [main] DEBUG jndi - InitialContextFactory.getInitialContext() 
10:44:56.487 [main] DEBUG jndi - Created initial context delegate for local namespace:[email protected] 
10:44:56.487 [main] DEBUG jndi - Looking up name="LOGGING_PATTERNLEVEL" 
10:44:56.487 [main] DEBUG org.springframework.jndi.JndiPropertySource - JNDI lookup for name [LOGGING_PATTERNLEVEL] threw NamingException with message: null. Returning null. 
10:44:56,536 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 
10:44:56,539 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT] 
10:44:56,543 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 
10:44:56,561 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender] 
10:44:56,564 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [FILE] 
10:44:56,565 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 
10:44:56,571 |-INFO in [email protected] - Will use the pattern /tmp/logs/qs.%d{yyyyMMdd-HHmmss}.log to archive files 
10:44:56,574 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Active log file name: /tmp/logs/qs.log 
10:44:56,574 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - File property is set to [/tmp/logs/qs.log] 
10:44:56,576 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to WARN 
10:44:56,576 |-INFO in [email protected] - Propagating WARN level on Logger[ROOT] onto the JUL framework 
10:44:56,576 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [FILE] to Logger[ROOT] 
10:44:56,576 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT] 
10:44:56,576 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 
10:44:56,577 |-INFO in org.s[email protected]32b260fa - Registering current configuration as safe fallback point 

    . ____   _   __ _ _ 
/\\/___'_ __ _ _(_)_ __ __ _ \ \ \ \ 
(()\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 
\\/ ___)| |_)| | | | | || (_| | )))) 
    ' |____| .__|_| |_|_| |_\__, |//// 
=========|_|==============|___/=/_/_/_/ 
:: Spring Boot ::  (v1.4.4.RELEASE) 

10:44:56,750 |-INFO in c.q.l.co.rolling.helper.RenameUtil - Renaming file [/tmp/logs/qs.log] to [/tmp/logs/qs.20170222-173130.log] 
10:44:56 [main] INFO my.Application - Starting ... 
+0

W jakim środowisku ty uruchomieniem aplikacji? Wygląda jak Jetty z włączonym JNDI. Czy używasz wbudowanego Jetty lub wdrażania pliku wojny? –

+0

używamy wbudowanego pomostu. Uruchamiamy jak @SpringBootApplication (scanBasePackages = {...}, wykluczyć = {...}) @ImportResource ("ścieżka klasy: /spring/foobar-context.xml") @ServletComponentScan public class FoobarApplication rozciąga SpringBootServletInitializer { public static void main (final String [] args) { SpringApplication.run (FoobarApplication.class, args); } ... } – dlipofsky

+0

Dzieje się tak również w przypadku używania autonomicznego Tomcat 8.0.33. Odpowiedź "spring.jndi.ignore = true" działa, ale nie działa dobrze. – mle

Odpowiedz

9

Widziałem to również z Spring Boot 1.5.1, gdy używano niestandardowego pliku logback-spring.xml. Instrukcje debugowania nie pojawiają się, jeśli nie istnieje plik logback-spring.xml.

Udało mi się obejść go, wyłączając JNDIPropertySource. Utwórz plik, spring.properties w ścieżce klas root:

# Disable the JNDIPropertySource. This avoids dozens of spurious DEBUG messages 
# when starting up with a custom logback-spring.xml. We're not alone: 
# http://stackoverflow.com/questions/42446013/spring-jndi-logging-before-logback-is-initialized 
spring.jndi.ignore=true 

spring.jndi.ignore dodano https://jira.spring.io/browse/SPR-14026.

Podejście to wydaje się nudne, ale ponieważ nie używam kontenera, w którym przydałby się JNDI, nic dla mnie nie psuje.

+0

To działa dla mnie. Możesz również ustawić go z flagą -D, ale plik działa lepiej dla moich celów. – dlipofsky

+0

Na wypadek, gdyby ktoś inny wpadł na ten problem. Ta zmiana działa dla mnie, gdy umieszczam konfigurację w spring.properties, ale nie wtedy, gdy umieszczam ją w pliku bootstrap.properties. –

2

Też miałem ten sam problem, ale nie mogłem wyłączyć jndi, ponieważ moja aplikacja używa go przy starcie. Więc po kilku badań, skończyło się z rozwiązaniem:

1) Zmień nazwę logback-spring.xml do innej nazwy, na przykład logback-config.xml

2) umieścić logging.config własności do application.properties pliku.

W rezultacie konfiguracja zostanie zastosowana tylko przy starcie sprężyny, a to logowanie debugowania zostanie pominięte. Również w moim przypadku pierwsze rozwiązanie nie działało, ponieważ potrzebowałem jndi, w tym przypadku również pozostawiłeś włączony jndi.

Aktualizacja: to pomogło tylko dla lokalnego środowiska, aby tę samą pracę na zdalnym Tomcat i usunąć ten dziennik debugowania z catalina.log pliku, skończyło się zmiany nazwy tego pliku logback do logback.xml, dlatego znalazł na starcie, przed wyszukiwaniem jndi.

-1

można tego uniknąć poprzez dodanie tej linii do logback pliku xml

<logger name="org.springframework.jndi" level="INFO" /> 
+0

Nie, nie można, ponieważ te komunikaty są rejestrowane przed zainicjowaniem funkcji logback. Moje logowanie jest już domyślnie ustawione na wartość WARN. – dlipofsky