log4j를 사용하여 콘솔에 출력하는 Java 프로그램이 이미 있지만 다른 Java 프로그램을 사용하여 첫 번째 프로세스 (하위 프로세스)를 호출하고 출력을 가로채는 것이 좋습니다. 나는 XXX, log4j에 의해 생성되지 메시지를 에코 일부 코드 내가 출력 메시지를 얻을 수 있지만, 단지 를 사용하여 "run.bat를"에서 할 수 상위 프로세스에서 하위 프로세스의 출력을 가로 채는 방법
class StreamRedirector extends Thread { InputStream is; StreamRedirector(InputStream is) { this.is = is; } public void run() { try { BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line=null; while ((line = br.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } } ............. try { Process p = Runtime.getRuntime().exec("run.bat"); StreamRedirector errSR = new StreamRedirector(p.getErrorStream()); StreamRedirector outSR = new StreamRedirector(p.getInputStream()); errSR.run(); outSR.run(); int exitVal = p.waitFor(); System.out.println("Exit Value: " + exitVal); } log4j config: <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%t] [%c{1}] %m%n" /> </layout> </appender>
아래처럼,이 페이지 http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=4의 방법을 사용합니다. "run.bat"을 실행하면 콘솔에서 두 출력을 모두 볼 수 있습니다. 부모 프로세스에서 log4j 출력을 얻을 수있는 방법이 있습니까? 감사.
대단히 감사합니다. Hemal, 저는 어리석은 실수를해서 유감입니다. P – daniel
얼마나 많은 사람들이 그 실수를 저지르고 있는지 놀랄 것입니다. 그것을 피하는 방법은 위의 편집을 참조하십시오. –