좋아, 이제는 콘솔이나 파일 대신 ArrayList에 기록하는 로거 (logger)라는 메모리 어 펜더를 만들려고했지만 지금은 콘솔로 인쇄하지 못하게하려고합니다.Log4j 로거에서 콘솔로 인쇄하는 것을 어떻게 중지합니까?
질문과 웹 사이트, 지금까지 읽었습니다 (하지만 난 여전히 문이 안 열려도 그것을 밖으로입니다) ..
- StackOverFlow Question log4j: Log output of a specific class to a specific appender
- StackOverFlow Question log4j : Disable log4j console logging and enable file logging
- Coder Launch: log4j: stop logging to console
그것은이 내가 성취하려고하는 모든 부분이 있지만 여전히 혼란 스럽습니다. 나는 또한 상태 Logback or Log4j Additivity Explained에서이 부분을 읽어
.. 로거 X의 aditivity 플래그 그러나 거짓, 또는 비활성화로 설정되어있는 경우
, 다음 호출 x.debug는()는 파일에 기록합니다 . 이론 내
log4j.properties
파일에 따라서
log4j.rootLogger=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %5p %c (%F:%L) - %m%n
#hide the Log4jMemoryAppender from console
log4j.logger.nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender= ERROR, MEMORY_APPENDER
log4j.appender.MEMORY_APPENDER=nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender.Log4jMemoryAppender
log4j.additivity.rootLogger = false
log4j.additivity.console = false
log4j.additivity.MEMORY_APPENDER=false
만 ***Hello World
를 인쇄 MEMORY_APPENDER
, rootLogger
및 console
로부터 아무것도를 제외해야합니다.
package nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender;
import java.util.ArrayList;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Log4jMemoryAppender extends AppenderSkeleton {
ArrayList<LoggingEvent> eventsList = new ArrayList();
public static void main (String [] args) {
PropertyConfigurator.configure("Lib/log4j.properties");
Log4jMemoryAppender app = new Log4jMemoryAppender();
Logger logger = Logger.getLogger(Log4jMemoryAppender.class);
logger.setLevel(Level.INFO);
logger.addAppender(app);
logger.info("Hello World");
logger.debug("Level DEBUG Is SET");
for (LoggingEvent le: app.eventsList) {
System.out.println("***" + le.getMessage());
}
}
@Override
protected void append(LoggingEvent event) {
eventsList.add(event);
}
public void close() {
}
public boolean requiresLayout() {
return false;
}
}
하지만 그렇지 ...
appender http://iforce.co.nz/i/2jypxucr.ilb.png
'nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender'에 대한 로거 나 appender를 정의하지 않았습니다. – maba
Logger logger = Logger.getLogger ("nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender"); '동일한 결과, 로거 정의 란 무엇입니까? – Killrawr
당신의'log4j.properties'에. 'log4j.logger.nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender = ERROR, MEMORY_APPENDER' 및'log4j.appender.MEMORY_APPENDER = ' –
maba