Spring Boot에서 Log4J를 사용하여 logstash를 사용하고 SRC/Main/Resources 디렉토리의 log4j.properties 파일을 추가하여 출력 로그 파일을 사용자 정의했지만 실패했습니다. Application.yml의 로깅 경로 구성 로그 인쇄가 성공적으로 인쇄되었지만 로그 파일 로깅이 성공적으로 디버깅되지 않았습니다. 온라인에서 정보를 확인했고 Spring Boot는 로그백을 사용하여 기본적으로 로그를 녹음한다고 말했습니다. 많은 시도 후 Log4J가 실패하여 기록을 위해 로그백으로 변경했으며 최종 테스트가 성공했습니다.
1. Spring Boot Log 파일의 경로에 대해 궁금한 점이 있습니까?
logging.path 및 logging.file 속성은 다음과 같이 동시에 구성됩니다.
로깅 : 경로 : /var /로그 파일 : test.log
test.log 파일 만 프로젝트 루트 경로에서 생성되며 지정된 경로에서 로그 파일이 생성되지 않습니다 (예상 로그 경로는 : logging.path + logging.file)입니다.
이유 : Spring Boot에서는 Logging.Path 및 Logging.File의 두 속성 중 하나만 구성하면됩니다. 동시에 구성된 경우 Logging.File 속성을 사용하십시오.
loggin.path 속성이 구성되면이 경로에서 Spring.log 파일이 생성됩니다. 즉, 기본 로그 파일 이름 Spring.log는 현재 사용됩니다.
loggin.file 속성이 구성되면 지정된 이름의 로그 파일이 지정된 경로에서 생성됩니다. 기본값은 프로젝트 상대 경로이며 로깅의 절대 경로를 지정할 수 있습니다.
벌채 반출:
경로 :/var/logs # spring.log 파일 생성/var/logs directory 파일 : /var/logs/test.log #/var/logs destrectory에서 test.log 파일 생성
2. 로그백이 log4J를 대체하는 이유 :
인터넷에서 발췌 한 내용은 다음과 같습니다.
로그백과 로그 4J는 매우 유사합니다. Log4J에 익숙하다면 로그백은 익숙해지기가 매우 쉽습니다. 다음은 Log4J보다 로그백의 몇 가지 장점입니다.
1. 로그백을 더 빨리 구현하는 커널이 다시 작성되었으며 일부 주요 실행 경로에서 성능이 10 배 이상 향상되었습니다. 또한 로그백은 성능을 향상시킬뿐만 아니라 초기 메모리를로드합니다.
2. 몇 년 후 매우 충분한 테스트 로그백, 수많은 테스트 시간. 로그백의 테스트는 완전히 다릅니다. 저자의 관점에서 볼 때 Log4J 대신 로그백을 선택하는 것이 중요합니다.
3. 로그 백 클래스는 SLF4J를 매우 자연스럽게 구현합니다. 로그 백 클래스는 SLF4J를 구현합니다. SLF4J를 사용할 때는 로그 백 클래스를 느낄 수 없습니다. Logback 클래스는 SLF4J를 매우 자연스럽게 구현하기 때문에 LOG4J 또는 기타로 전환하는 것은 매우 쉽습니다. 다른 JAR 패키지에만 제공해도 괜찮으며 SLF4japi를 통해 구현 된 코드를 터치 할 필요가 없습니다.
4. 매우 충분한 문서에서 공식 웹 사이트에는 200 페이지가 넘는 문서가 있습니다.
5. 구성 파일을 자동으로 다시로드합니다. 구성 파일이 수정되면 Logback Classic은 구성 파일을 자동으로 다시로드 할 수 있습니다. 스캐닝 프로세스는 빠르고 안전하며 다른 스캐닝 스레드를 만들 필요가 없습니다. 이 기술은 JEE 환경에서 애플리케이션이 행복하게 실행될 수 있도록합니다.
6. Lilith, Lilith는 Log4J Chainsaw와 유사한 로그 이벤트의 관찰자입니다. Lilith는 많은 양의 로그 데이터를 처리 할 수 있습니다.
7.주의 모드와 매우 친근한 복구. 주의 모드에서 여러 JVMS에서 실행되며 동일한 로그 파일을 안전하게 쓸 수 있습니다. RollingFileAppender에는 몇 가지 제한 사항이 있습니다. Logback의 Fileappender와 RollingFileAppender를 포함한 서브 클래스는 I/O 예외에서 매우 친절하게 복구 할 수 있습니다.
8. 구성 파일은 다른 상황을 처리 할 수 있습니다. 개발자는 종종 다른 로그백 구성 파일이 다른 환경 (개발, 테스트, 생산)에 있다고 판단해야합니다. 이러한 구성 파일은 약간 다르고 구현할 수 있으므로 구성 파일이 여러 환경에 적응할 수 있습니다.
9. 때로는 필터를 문제를 진단하고 기록해야합니다. Log4J에서는 로그 레벨을 줄일 수 있지만 많은 수의 로그를 생성하고 응용 프로그램 성능에 영향을 미칩니다. 로그백에서는 해당 로그 레벨을 계속 유지하고 특별한 상황을 제거 할 수 있습니다. 예를 들어, 로그인 한 사용자, 그녀의 로그는 디버그 레벨에서 치고 다른 사용자는 계속해서 경고 수준에서 타격을 입을 수 있습니다. 이 기능을 구현하려면 4 줄의 XML 구성 만 필요합니다. MDCFilter를 참조 할 수 있습니다.
10. SIFTINGAPPENDER (매우 다기능 부서) 주어진 실행중인 매개 변수를 기반으로 로그 파일을 분할하는 데 사용할 수 있습니다. 예를 들어, SiftingAppender는 로그 이벤트를 후속 조치와 사용자 세션으로 구별 할 수 있으며 각 사용자에게 로그 파일이 있습니다.
11. 인쇄 된 로그를 자동으로 압축합니다. 새 파일이 생성되면 인쇄 된 로그 파일이 자동으로 압축됩니다. 압축은 비동기 프로세스이므로 큰 로그 파일의 경우에도 응용 프로그램이 압축 프로세스에 영향을 미치지 않습니다.
12. 스택 트리에는 패키지 버전이 있습니다. 로그백은 패키지 데이터가 게시 될 때 패키지 데이터를 가져옵니다.
13. 이전 로그 파일을 자동으로 제거합니다. TimeBasedRollingPolicy 또는 SizeAndTimeBasedFNATP의 Maxhistory 속성을 설정하면 생성 된 최대 로그 파일 수를 제어 할 수 있습니다. Maxhistory 12가 설정되면 12 개월이 넘는 로그 파일은 자동으로 제거됩니다.
요컨대, 로그백은 log4J보다 낫습니다. 로그백에 모든 응용 프로그램을 구축하겠습니다!
3. 프로젝트에 로그백을 도입하십시오
패키지 의존성 추가, Maven 스타일 :
<pectionency> <groupid> org.springframework.boot </groupid> <artifactid> 스프링-부트-스타터 로깅 </artifactid> </fectionency> <pectionement> <groupid> net.logstash.logback </groupid> <artifactid> logstash-logback-encoder </artifactid> 4.11 </version> 4.11. <groupid> net.logstash.log4j </groupid> <artifactid> jsonevenvent-layout </artifactid> <버전> 1.7 </version> </fectionency>
4. logback.xml을 추가하십시오
logback.xml 파일을 src/main/resources 디렉토리에 추가하면 시스템이 LogBack.xml 구성을 자동으로로드합니다.
logback.xml :
<? xml version = "1.0"encoding = "utf-8"?> <configuration scan = "true"scanperiod = "60 초"debug = "false"> include resource = "org/springframework/boot/logging/logback/base.xml"/> <contextname> logback </contextname> <!-<!->-> "->"-" value = "e : //test//logback.log"/>-> <property name = "log.path"value = "/user/chang/chlogs/logback.log"/> <appender name = "stash"> <sonatation> 192.168.220.83:9601 </destination> </appender> </appender> 이름 = "콘솔"> <!-<filter> <le level> 오류 </level> </filter>-> <comoder> <pattern> %d {HH : MM : Ss.sss} %contextName [ %스레드] %-5level %logger {36}- %msg %n </pantions> </applender> <file> $ {log.path} </file> <RollingPolicy> <filenamepattern> logback. %d {yyyy-mm-dd} .log </filenamepattern> </rollingpolicy> <encoder> <패턴> %d {hh : mm : ss.sss} %contextname [ %tool] %-5level %] %- %msg %n </pattern> </encoder> </appender> <root level = "info"> <appender-ref ref = "stash"/> <appender-ref ref = "console"/> <appender-ref ref = "file"/> </root> <!-로그백은 java <logger name = "com.dudu.controgbach. 클래스 <logger name = "com.dudu.controller.learncontroller"level = "warn"acdde = "false"> <Appender-Ref Ref = "Console"/> </logger>-> </configuration>5. logstash-logback-encoder 버전 문제
Spring-Boot에서 Logstash-Logback-Encoder를 사용하는 경우 패키지 의존성 충돌을 피하기 위해 Maven에게 특정 버전 번호를 알려야 할 수도 있습니다. 예를 들어, 로그백 코어, 로그 백 클래스 및 로그 백 액세스의 종속성을 다음과 같이 설정할 수 있습니다.
<properties> <ch.qos.logback.version> 1.2.3 </ch.qos.logback.version> </properties> <pectionementagement> <pectients> <pectionement> <groupid> ch.qos.logback </groupId> <artifactid> logback-core </inpenivactid> </version> $ {ch.qoS.log.logbach.logback. <pectionency> <groupid> ch.qos.logback </groupid> <artifactid> logback-classic </artifactid> <버전> $ {ch.qos.logback.version} </dependency> <pectionency> <groupid> ch.qos.logback </groupid> <artifactid> logback-casss </artifacccess> <버전> $ {ch.qos.logback.version} </version> </fectionency> </fectionency> </fectionencymanagement>6. Logstash 서비스 구성
참조 :
1. logstash-logback-encoder
요약
위의 것은 로그백, 로그 스타 및 엘크를 사용하여 Spring Boot에서 로그 파일을 녹음하는 방법입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!