메서드가 STDERR에 대한 쓰기를 생성 할 때 내가 잡을 수있는 방법이 있습니까? 각 STDERR 쓰기와 함께 일부 정보를 미리 보류하려고합니다.메소드가 stderr를 생성 할 때 STDERR에 정보를 어떻게 추가합니까?
parser.thatGeneratesSTDERR();
가 생성됩니다 뭔가 라인 37:29 문자 없음 대안 'A'
난 그냥 그것을 포장 할 수
같은 :
은의 우리의 방법이 가정 해 봅시다 작성해야 할 stderr을 잡아서 정보를 미리 보류하면 다음과 같이 보입니다.
파일 : mybadfile.txt - 라인 37:29 내가 아마 STDERR 쓰기하지만 난 정말하지 않으려을 수행하는 실제 코드를 통해 팔 수있는 알 '은'
문자에 어떤 대안이 그 대신에이 메서드 대신에 일부 코드를 대신 감쌀 것입니다.
나는이 방법이 항상 STDERR을 생성하는 것은 아니라는 점에 유의해야한다. 나는 그들을 잡으려고하는 이유는 어떤 STDERR도 생성해서는 안되기 때문이다. 그러나 이것은 꽤 많은 파일에서 호출되기 때문에 40 이상) 어떤 파일이 오류 메시지를 생성하는지 알 수 없다. 찾는 데 영원히 걸린다.
UPDATE 그래서 예치, 우리는 우리의 STDERR을 변경할 수 있습니다 - 난 그냥 내 새로운 STDERR 내에 println를 오버라이드 (override) 할 필요가 잊고 있었다 ... 여기에 관련 코드 : 다음
public static String errfile = "";
static {
final PrintStream currentErr = System.err;
PrintStream newErr = new PrintStream(currentErr)
{
public void println(String string) {
print("File: " + errfile + " --");
print(string);
super.println();
}
};
System.setErr(newErr);
}
에 대한 내가해야하는 모든 파일은 errfile을 파일 이름으로 변경하고 출력은 예상대로 나온다.
감사합니다.
PrintStream final을 만드는 것이 좋은지 잘 모르겠습니다. - 코드가 작동하지 않을 수 있으므로 코드에 버그가있는 것 같습니다. –