각 프로세스 런타임에 로그를 만들었습니다. 현재 가지고있는 문제는 현재 실행중인 프로세스의 자식이 아닌 모든 패키지가 로그를 내 파일에 쓰지 않는다는 것입니다. 예를 들어, running-.log라는 새 로그 파일을 만듭니다. 실행중인 프로세스는이 클래스의 com.me.foo입니다. com.you에 메소드를 호출하고 com.zee에 메소드를 호출합니다. com.you 및 com.zee 로그를 콘솔 로그가 아닌 실행중인 .log에 기록하고 싶습니다. getLogger() 메소드를 com.me.foo의 자식으로 변경하는 것만 큼 간단하지 않습니다. 일부 로그는 제 3 자 병에서 기록됩니다. 나는 실종됐다. 더 많은 코드 또는 추가 정보가 필요하면 알려주십시오. 이것을 처리 할 다른 방법이 있어야합니다. 로그 파일을 만들 수Log4J가 동적으로 로그 파일을 만듭니다.
감사
코드를 동적으로
public void createLogInstance(String packaging,String appenderName, String logFileName){
Logger logger = Logger.getLogger(packaging);
Appender fileAppender = logger.getAppender(appenderName);
if(fileAppender != null){
logger.removeAppender(fileAppender);
}
//Create the root appender
ConsoleAppender console = new ConsoleAppender();
String pattern = ....;
console.setLayout(new PatternLayout(pattern));
console.setThreshold(Level.FATAL);
console.activateOptions();
logger.addAppender(console);
FileAppender fa = new FileAppender();
fa.setName(appenderName);
fa.setFile(logFileName);
fa.setLayout(new PatternLayout(..));
fa.setThreshold(Level.DEBUG);
fa.setAppend(true);
fa.activateOptions();
logger.setAdditivity(false);
logger.addAppender(fa);
}
나는 rootLogger 누락 된
private static Logger logger = LoggerFactory.getLogger(You.class);