봄 부팅은 "서비스 [Tomcat을] 중지"던져 Tomcat을 내장

내가 springboot을 사용하면 코드에 문제가있는 경우, 콘솔 인쇄 다음 정보를 찾을 수 있습니다 :

Connected to the target VM, address: '127.0.0.1:42091', transport: 'socket'
log4j:WARN No appenders could be found for logger (org.springframework.boot.devtools.settings.DevToolsSettings).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

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

2018-10-25 10:10:21.425  INFO 102158 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2018-10-25 10:10:21.427  INFO 102158 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.34
2018-10-25 10:10:21.444  INFO 102158 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
2018-10-25 10:10:21.590  INFO 102158 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2018-10-25 10:10:24.522  INFO 102158 --- [  restartedMain] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
Disconnected from the target VM, address: '127.0.0.1:42091', transport: 'socket'

Process finished with exit code 0

WTF? 오류 메시지 문제를 해결하는 방법입니까? 검색의 다양한, 짧은에, 자신에게 확인, 문제의 코드입니다 ...

음, 직접 디버그

톰캣은 입구 클래스에 포함org.apache.catalina.core.StandardService

과정까지 // TODO 백

결국 찾을 org.springframework.context.support.AbstractApplicationContext 위치 방법을refresh()

if (logger.isWarnEnabled()) {
				logger.warn("Exception encountered during context initialization - " +
						"cancelling refresh attempt: " + ex);
			}

디버그는 일반적으로 입력 할 수 있습니다, 그리고 당신은 우리가 전을보고 싶어 참조

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fabricApiController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fabricTemplate': Injection of resource dependencies failed; nested exception is org.springframework.boot.context.properties.ConfigurationPropertiesBindException: Error creating bean with name 'fabricConfiguration': Could not bind properties to 'FabricConfiguration' : prefix=blockchain, ignoreInvalidFields=false, ignoreUnknownFields=true; nested exception is org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'blockchain.channel-peers' to java.util.List<com.smy.bc.fabric.core.configuration.FabricConfiguration$EndPoint>

문제는 자신의 문제를 다시 시작, 정상 해결하기 위해 코드를 발견! 모든 권리는 모든입니까? 잘못된이 시작되었다

上面我们简单解决了问题,但是根源没有解决!
要说解决方案把当前流行的日志体系简单说一遍
下面整理的来源网络:

常见的日志框架,注意不是具体解决方案

1 Commons-logging: apache 最早提供的日志的门面接口。避免和具体的日志方案直接耦合。类似于JDBC的api接口,具体的的JDBC driver实现由各数据库提供商实现。通过统一接口解耦,不过其内部也实现了一些简单日志方案
2 Slf4j: 全称为Simple Logging Facade for JAVA:java简单日志门面。是对不同日志框架提供的一个门面封装。可以在部署的时候不修改任何配置即可接入一种日志实现方案。和commons-loging应该有一样的初衷。

常见的日志实现:
log4j
logback
jdk-logging

详细优缺点不是本文重点,请自行搜索。

그런 다음 커먼즈 로깅이 이미 로그 시스템에 따라 기본 로깅 시스템 바람둥이 (아파치가 자신의 일을 지원해야), 특정 로깅 구현, 시스템 선택입니다, 위의 문제를 분석한다. 간단하게 다음 로그 구현을 포함 org.apache.commons.logging.Log | org.apache.commons.logging.impl.SimpleLog org.apache.commons.logging.impl.NoOpLog org.apache.commons.logging.impl.Log4JLogger을 org.apache.commons.logging.impl.SLF4JLog org.apache.commons.logging.impl.Jdk14Logger

springboot의 기본 logback 구현을 로깅, 문제는 여기서 발생한다! ! ! 공통 로그는 logback을 실현하지 않았다!

메이븐 의존성에 따르면, 우리는 그 때, springboot 사용 logback을 톰캣의 log4j를 선택할 수의 log4j와 logback 패키지 소개를 참조하십시오. log4j에와 logback는 다리의 부족, 출력은 springboot의 logback이 다리의 부족으로 이어질 수있다 보았다! ! !

다리의 중간는 다음에 따라 달라집니다

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
    </dependency>

이 의존은,의 log4j SLF4J로 출력 할 수 있도록 sl4j의 출력이.

요약 : 요약하면, 이미 철저하게 SLF4J / 공통 로그 <>의 log4j와 logback 정확한 복수를 이해

첫 번째 용액 : 로그의 위치, 그리고 또한 증가 JCL 오버 SLF4J 개방 채널 공통 로그 및 SLF4J를 사용하여 처리

두 번째 솔루션 : 산 두 호랑이 제외 SLF4J, 공통 로그 중 하나, 스프링을 사용 SLF4J 수 없습니다, 충돌을 해결하기 위해, 공통 로그를 제외 조정할 수 있습니다

최적화 프로그램,보다 바람직하게는 상기 제와의 관점에서 불필요한 의존성을 감소시킨다.

시스템 충돌을 기록하고이 아이디어를 참조 할 수 있습니다 로그 문제가있는 경우, 프로젝트 로그 이상을 처리.

게시 23 개 원래 기사 · 원 찬양 7 ·은 20000 +를 볼

추천

출처blog.csdn.net/ghd602338792/article/details/104949990