스프링 부트 - 로그 파일이 기록되지 않았습니다(로그).파일이 존중되지 않음)
Spring Boot을 사용하고 있는데 로그 출력을 파일에 쓰고 싶습니다.
문서에 따르면 이것은 단순히 설정만으로 이루어집니다.
logging.file=filename.log
출력은 하지만, 「」는 정상적으로 동작합니다.filename.log
작성되지 않았습니다. 수동으로 되지 않습니다.가가뭘 쳤??
logging.file.name
logging.file
의 spring-boot-parent(from version 2.2.0)
logging. , 「 」는파일은 권장되지 않습니다.
왜 이 질문에는 않아서 하지 않습니다.logging.file
자산이 존중되지 않습니다.
은 '천하태평'입니다.logback-spring.xml
같은 디렉토리에 있는 조르쥬의 대답에서application.properties
상주합니다.매뉴얼에 따르면 Spring Boot에서 픽업됩니다.제 경우엔 이런 일이 일어나지 않는 것 같아요.
추가로 더 돼요.logging.config=classpath:logback-spring.xml
츠키노의 내관분 의 application.properties
진행 중입니다.
logging.config=classpath:logback-spring.xml
logging.file=logs/logfile.log
( )을 했습니다.logs
(미국의
저 같은 경우에는 어플리케이션 속성 파일에서 아래를 사용했습니다.
logging.file
대신 다음 것을 사용해야 합니다.
logging.file.name
그 후, 다이렉트 패스 파일에 로그를 넣을 수 있게 되었습니다.
저도 같은 문제가 있었어요.파일 시스템에 대한 파일 권한 때문일 수 있습니다.응용 프로그램 폴더는 root이 소유했지만 ./logs는 프로세스 소유자가 소유합니다.그 때문에, 다음의 기능은 기능하지 않았습니다.
logging.file=my.log
근데 이게...
logging.file=/opt/myapp/logs/my.log
스프링 부트:버전 2.4.3
이든 '어느쪽이든'에서 .application.properties
일::logging.file.name
★★★★★★★★★★★★★★★★★」logging.file.path
예를 들어 다음과 같습니다.
logging.file.name=logs/myapp.log
logging.file.path=logs
logs
디렉토리로 이동합니다.클래스 경로에 자동으로 생성됩니다.
권장되지 않는 이 파일을 .~/.m2/repository/org/springframework/boot/spring-boot/2.4.3/spring-boot-2.4.3.jar!/org/springframework/boot/logging/LoggingSystemProperties.class
도움이 될지는 모르겠지만 로그백을 사용하고 있습니다.Spring-Boot
및 는 다음과 .
파일: logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="logback.xsd">
<property resource="\application.properties"/>
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${app.logPathPrefix}/myproject.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${app.logPathPrefix}/myproject.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%logger:%line] %msg%n
</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%logger:%line] %msg%n
</pattern>
</encoder>
</appender>
<logger name="org.springframework" level="INFO" />
<logger name="com.mycompany" level="INFO" />
<logger name="org.hibernate" level="DEBUG" />
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
파일: application.properties
app.logPathPrefix=/var/log/myproject
로컬 파일 파일에 출력을 쓸 수 있는 방법은 다음과 같습니다.콘솔 로깅을 디세블로 하고 파일에만 출력을 쓰려면 console-appender.xml 대신 file-appender.xml을 Import하는 템플릿 기능(날짜 포맷 등)을 이용하기 위해 logback-spring.xml이라고 부릅니다.이를 수행하려면 다음 코드를 logback-spring.xml 파일에 붙여넣어야 합니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>
또한 application.properties에 다음 항목을 추가해야 합니다.
logging.file=myapplication.log
이 로그 파일 myapplication.log는 springboot에 의해 생성됩니다.
응용 프로그램 구조 트리는 다음과 같습니다.
더 재미있게 놀고 싶다면 다음과 같이 base.xml을 maven 의존관계에서 찾을 수 있습니다.
Springboot 부모 버전을 확인합니다.
2.3.x+의 경우 속성은 logging.file.name=yourapplog.log 입니다.
Maven을 사용하는 경우 종속성을 추가합니다.
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
여기서 특정 디렉토리 'src/main/resources/log4j.properties'에 저장해야 하는 'log4j.properties'라는 파일을 지정해야 합니다.
다음은 파일의 예를 제시하겠습니다.
# Root logger option
log4j.rootLogger=INFO, file, stdout
log4j.logger.org.springframework.ws.client.MessageTracing.sent=TRACE
log4j.logger.org.springframework.ws.client.MessageTracing.received=TRACE
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# log4j.appender.springlog.Threshold=INFO
log4j.appender.springlog.layout=org.apache.log4j.PatternLayout
log4j.appender.springlog.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:/example/filename.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
다음 항목을 Import합니다.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
다음과 같이 로거 변수를 선언합니다.
final static Logger logger = Logger.getLogger(TheClassYourIn.class);
수업시간에 이렇게 쓰세요.
logger.info("Well hello world then ");
난 이렇게 하면 돼이 답변이 당신에게 도움이 되기를 바랍니다. 행운을 빌어요!
PS: log4j.appender.file.File='directory'는 로그를 저장할 위치를 지정하는 방법입니다.디렉토리를 지정하지 않고 filename.log로 두면 이 파일은 프로젝트 dir에 자동으로 생성됩니다.
D드라이브와 같은 특정 디렉토리에 로그파일을 배치하고 싶은 경우 스프링 부트프로젝트에서 아래의 변경을 할 수 있습니다.
1. logback-spring.xml 컨피규레이션파일을 생성하여 로그를 작성할 패키지 이름을 지정합니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<logger name="com.example.demo"
level="DEBUG" >
</logger>
</configuration>
2. 또한 application.properties 파일에 다음과 같이 추가합니다.
logging.config=classpath:logback-spring.xml
logging.file.name=F:/Springbootlogs/filename.log
주의: 전술한 변경은 버전 2.4.3에 대한 것입니다.
제 경우 실수로 서브모듈 중 하나에 "logback.xml" 파일을 추가했기 때문에 이 문제가 발생하였습니다.삭제하면 문제 없습니다.
답장이 늦어서 죄송합니다.봄의 벌목꾼은 자신의 클래스 패스에서 그 속성을 읽는 것 같다.우선 순위 때문에 제공된 속성을 존중하지 않습니다.
몇 가지 요령:
- 에서는 속성 합니다.
springApplication.setDefaultProperties(properties);
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(MainClass.class);
Properties properties = new Properties();
properties.put("logging.file", logDirectory);
springApplication.setDefaultProperties(properties);
springApplication.run(args);
}
- 을 JVM 변수인 JVM으로 전달합니다.
-Dlogging.file=/location/output.log
.
다른 로깅 속성을 정의하기 위해서는 같은 방법을 따라야 하기 때문에 위의 두 가지 모두 최적이 아닙니다.
솔루션
하고 그 에 모든 한 후 합니다.-Dspring.config.location
이것은 나의 다른 문제에서 파생된 것이며, 이렇게 해서 나는 그것을 해결했다.제가 시도했던 다른 해결책과 그들의 과제를 알기 위해 그것을 체크하세요.
Windows operating system에서도 같은 문제가 발생했습니다.로그를 변경했을 뿐입니다.파일 주소:/customer_revisor/flight_reservation_system/system/reservation.log
주의: 사용한Spring-boot 버전은 2.4.1 입니다.
Windows 운영체제에서는 파일 탐색기에서 파일 경로를 복사하면 D:\customer_projects\flight_reservation_system\logs\flight_reservation.log와 같은 파일 경로가 생성됩니다.
위의 파일 경로는 작동하지 않습니다.따라서 파일 경로를 D:/customer_projects/flight_reservation_system/logs/reservation.log와 같이 변경해야 합니다.그러면 지정한 경로에 로그 파일이 생성됩니다.감사합니다.
방금 스프링 부트에서 제공하는 로깅 메커니즘을 사용했습니다.logback.xml' 파일에 다음과 같이 적었습니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<include resource="org/springframework/boot/logging/logback/file- appender.xml" />
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>
application.properties와 logback.xml 파일을 모두 같은 패키지 'src/main/resources' 아래에 둡니다.application.properties 파일에 파라미터가 1개 추가되었습니다.
logging.file = xyz.log
나한테는 완벽하게 잘 작동했어.
스프링 부트 중인 경우 application.properties 파일에 다음 속성을 직접 추가하여 로깅 수준을 설정하고 로깅 패턴을 맞춤화하고 로그를 외부 파일에 저장할 수 있습니다.
이들은 최소 << maximum minimum minimum minimum minimum minimum minimum levels levels levels levels 。
소등 << FATAL << ERROR << WARN << INFO << DEBUG << TRACE << ALL >>
# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace
# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, your logs it won't work.
logging.file=D:/spring_app_log_file.log
# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
로그를 보다 생생하게 커스터마이즈하려면 이 링크를 클릭하십시오.
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html
또, Windows(경로에 「\」를 사용)가 제공하는 대로 패스를 카피했을 뿐이기 때문에, 같은 문제에 직면하고 있었습니다.
경로에서 : back slash("\")를 forward slash("/")로 변경하는 것만으로 수정됩니다.
주의: 패스에는 엄밀하게 슬래시("/")를 사용해야 합니다.OS는 제약사항이 아닙니다.
ex:- logging.file.name=D:/Logs/server.log
정상적으로 동작하는 명령줄 인수를 사용하여 스프링 부트서비스를 실행하고 있습니다.모든 스프링 부트 콘솔 로그가 파일에 기록됩니다..application.properties
: 파파 。 다음 중 하나:2.0.5.RELEASE
창:
java -jar target\microservice-0.0.1.jar --logging.file=C:\\logs\\microservice.log
Linux의 경우
java -jar target\microservice-0.0.1.jar --logging.file=\var\log\microservice.log
이 경우 일반적인 Configuration을 붙여넣고 로깅 패턴(logging.pattern.file)을 엉망으로 했을 가능성이 높습니다.
코멘트로 문제를 해결했습니다(파일은 작성되었지만 콘솔 출력이 있고 루트 로깅 레벨이 DEBUG로 설정되어 있는데도 파일에는 아무것도 써지지 않았습니다).그 이외의 에러는 발생하지 않았습니다.
[edit] 다른 경우(항상 이 문제에 부딪히는 것 같습니다), AppInitializer는 물론 logback.xml이 포함된 웹 애플리케이션(WAR)에서 클래스가 제거된 JAR 파일을 참조하고 있었습니다.패키지 이름이 완전히 달라 Spring auto config로 스캔할 수 없습니다.logback.xml이 클래스 패스에서 검출되어 모든 것을 완전히 망친 것 같습니다.WAR을 언급하는 것이 해킹이라는 것을 알았지만, 나는 그것을 고치고, 다른 것을 부수는 빠른 해결책을 희망하고 있었다.마니의 대답은 관련이 있다.
Springboot 2.4.2의 경우 Below Application.yml 설정은 다음과 같이 동작합니다.
logging:
file:
name: logpath
내 문제는 파일이 자동으로 생성되지 않고 프로젝트 루트 폴더에 파일을 생성해도 작성되지 않아 결국 폴더와 파일을 생성해 보았다.logs/logfile.lo
및 설정logging.file.name=scripts/logfile.log
application.parameties 파일도 동작했습니다.
application.properties에 다음 항목이 없는 경우
logging.file = logFileName.log
다음 것을 사용하다
logging.file.name= appLogName.log
언급URL : https://stackoverflow.com/questions/38527175/spring-boot-no-log-file-written-logging-file-is-not-respected
'programing' 카테고리의 다른 글
아무것도 반환되지 않은 경우의 JSON 디코드 오류 처리 (0) | 2023.03.22 |
---|---|
오라클이 왜?Oracle에서는 ManagedDataAccess가 작동하지 않습니다.Data Access는 무엇을 합니까? (0) | 2023.03.22 |
리액트 상태를 변환하기 위해 선호하는 방법은 무엇입니까? (0) | 2023.03.22 |
병렬 요구와 체인 요구를 $http와 조합한 각도입니다.() 및 $q.all()을 지정합니다. (0) | 2023.03.12 |
Jquery 버튼 클릭 이벤트가 발생하지 않음 (0) | 2023.03.12 |