[java] logger (log4j)에 대한 어 펜더를 찾을 수 없습니까?
log4j를 빌드 경로에 넣었지만 애플리케이션을 실행할 때 다음 메시지가 표시됩니다.
log4j:WARN No appenders could be found for logger (dao.hsqlmanager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
이 경고는 무엇을 의미합니까? 어 펜더는 무엇입니까?
답변
log4j 안내서에 대한 이 짧은 소개 는 약간 오래되었지만 여전히 유효합니다.
이 안내서는 로거 및 어 펜더 사용 방법에 대한 정보를 제공합니다.
당신이 갈 수 있도록 두 가지 간단한 접근 방식이 있습니다.
첫 번째는이 줄을 기본 메소드에 추가하는 것입니다.
BasicConfigurator.configure();
두 번째 방법은 log4j.properties
위에서 언급 한 가이드에서 가져온 이 표준 파일을 클래스 경로에 추가하는 것입니다.
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1
# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
답변
log4j.properties
Eclipse의 클래스 경로에 파일 위치를 추가 해야하는 것처럼 보입니다 .
프로젝트가 Eclipse에서 열려 있는지 확인한 다음 Eclipse 맨 위에있는 “실행”메뉴를 클릭하고 다음을 클릭하십시오.
- 운영
- 구성 실행
- 클래스 패스 (탭)
- 사용자 항목
- 고급 (오른쪽 버튼)
- 폴더 추가
- 그런 다음 log4j.properties 파일이 포함 된 폴더로 이동하십시오.
- 대다
- 운영
오류 메시지가 더 이상 나타나지 않아야합니다.
답변
빠른 솔루션 :
-
주요 기능 에 코드 추가 :
String log4jConfPath = "/path/to/log4j.properties"; PropertyConfigurator.configure(log4jConfPath);
-
/ path / to에 log4j.properties라는 파일을 작성하십시오.
log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
답변
이것은 단지 경고 일뿐입니다.
고정
이 때 기본 구성 파일을 발생 log4j.properties
하고 log4j.xml
찾을 수없는 응용 프로그램이 수행하는 명시 적으로 구성.
이 문제를 해결하려면 클래스 경로 의 위치 (일반적으로 jar 파일과 동일)를 작성 / 복사 log4j.properties
하거나 작성 log4j.xml
하십시오 .
선택적으로 java 옵션을 설정하십시오 -Dlog4j.configuration=file:///path/to/log4j.properties
.
log4j
Thread.getContextClassLoader().getResource()
기본 구성 파일을 찾는 데 사용 하며 파일 시스템을 직접 확인하지 않습니다. 배치 할 적절한 위치를 알고log4j.properties
있거나log4j.xml
사용중인 클래스 로더의 검색 전략을 이해해야합니다.log4j
일부 환경에서는 콘솔 또는 파일 시스템으로의 출력이 금지 될 수 있으므로 기본 구성을 제공하지 않습니다.
디버깅
디버깅을 위해 -Dlog4j.debug=true
매개 변수 를 사용하려고 할 수 있습니다 .
구성 log4j.properties
의 샘플 구성 log4j.properties
:
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1
# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN
다중 어 펜더를 사용하는 다른 구성 파일은 다음과 같습니다.
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
아파치 솔러
Solr을 사용 <solr>/example/resources/log4j.properties
하는 경우 클래스 경로 의 위치로 복사 하십시오 .
log4j.properties
Solr 의 샘플 구성 은 다음과 같습니다.
# Logging level
solr.log=logs/
log4j.rootLogger=INFO, file, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n
#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9
#- File to log to and log format
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN
# set to INFO to enable infostream log messages
log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF
또한보십시오:
답변
여기에있는 대부분의 답변은 log4j.properties
파일을 올바른 위치에 배치 할 것을 제안 했습니다 (maven 프로젝트의 경우 src/main/resources
)
그러나 나에게 문제는 내가 log4j.properties
올바르게 구성되지 않았다는 것입니다. 다음은 저에게 적합한 샘플입니다. 먼저 사용해 볼 수 있습니다.
# Root logger option
log4j.rootLogger=INFO, stdout
# 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.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
답변
앞에서 설명한 것처럼 두 가지 접근 방식이 있습니다
첫 번째는이 줄을 기본 메소드에 추가하는 것입니다.
BasicConfigurator.configure();
두 번째 방법은이 표준 log4j.properties 파일을 클래스 경로 에 추가 하는 것입니다.
두 번째 방법을 사용하는 동안 파일을 올바르게 초기화해야합니다 (예 :
Properties props = new Properties();
props.load(new FileInputStream("log4j property file path"));
props.setProperty("log4j.appender.File.File", "Folder where you want to store log files/" + "File Name");
로그 파일을 저장하는 데 필요한 폴더를 작성하십시오.
답변
Logger
코드에서를 사용하여 메시지를 기록합니다. 는 Appender
A와 추가 된 객체입니다 Logger
특정 대상에 메시지를 작성 할 수 있습니다. 있습니다 FileAppender
텍스트 파일이나에 쓰기ConsoleAppender
콘솔에 기록 할 수 있습니다. 도움이 필요하면 Logger 및 Appender 설정 코드를 표시해야합니다.
Logger와 Appender의 상호 작용에 대한 이해를 돕기 위해 학습서 를 읽으십시오 .