Java 콘솔 출력을 파일로 어떻게 파이프합니까?
-
06-07-2019 - |
문제
JVM을 완전히 정지시키는 애플리케이션의 버그를 발견했습니다.생성된 스택 추적은 개발자에게 귀중한 정보를 제공하므로 Java 콘솔에서 해당 정보를 검색하고 싶습니다.JVM이 충돌하면 콘솔이 정지되고 포함된 텍스트를 더 이상 복사할 수 없습니다.
Java 콘솔을 파일로 직접 파이프하는 방법이나 Java 애플리케이션의 콘솔 출력에 액세스하는 다른 방법이 있습니까?
업데이트:코드를 변경하지 않고 언급하는 것을 잊었습니다.저는 수동 테스터입니다.
업데이트 2:이것은 Windows XP에 있으며 실제로는 웹 시작 응용 프로그램입니다.출력 파이핑
javaws jnlp-url작동하지 않습니다(빈 파일).
해결책
실제로 활성화 할 수 있습니다 트레이싱 Java 제어판에서. 이것은 Java 콘솔에서 추적 파일로 끝나는 모든 것을 파이프합니다.
로그 파일은 다음과 같습니다.
- u003Cuser.home>/.java/deployment/log on Unix/Linux
- u003CUser Application Data Folder> sun java deployment Windows에 로그인
- /~/라이브러리/캐시/Java/로그온 OS X
다른 팁
(코드를 수정할 수있는 경우) System.out
다른 값으로 필드 :
System.setOut(new PrintStream(new FileOutputStream(fileName)));
스크립트를 실행중인 경우 ( java
) 에서 Unix
당신은 할 수 있습니다 :
/path/to/script.sh >& path/to/output.log
Mac에서 10.8.2 로그를 찾을 수 있습니다 /Users/<userName>/Library/Application Support/Oracle/Java/Deployment/log/
.
Java 제어판에서 로깅을 활성화해야합니다. 옵션 "Enable logging
"탭에있다"Advanced
". Java 제어판을 시작할 수 있습니다."System preferences
".
콘솔이 정지되면 아마도 교착 상태를 의미할 것입니다(예외가 반복적으로 발생한다는 의미일 수도 있음).다음을 사용하여 스택 덤프를 얻을 수 있습니다. jstack
. jps
프로세스를 더 쉽게 찾을 수 있습니다.
노력하다 이 안내서 그것은 나를 위해 작동합니다. 또한 "System.Setout (filestream);", "System.Seterr (Filestream)"를 설정하는 방법을 안내합니다.