XXL-JOB 명령 행 을 사용 하여 python 을 시작 할 때 로그 가 너무 많아 서 막 히 는 해결 방법
2444 단어 spring
이 문 제 는 XXL-JOB 의 문제 라 고 할 수 없 으 며 자바 의 Runtime.getRuntime().exec()로 인 한 버퍼 크기 가 제한 되 어 있 습 니 다.버퍼 에서 출력 을 제때에 가 져 가지 못 하면 버퍼 가 가득 찬 후에 프로그램 이 막 힐 수 있 습 니 다.
1.어떻게 해결 하나
가장 간단 한 방법 은 정상 적 인 출력 과 이상 출력 을 두 개의 서로 다른 라인 으로 조작 하 는 것 이다
Process process = Runtime.getRuntime().exec(command);
StreamOutter errorGobbler = new StreamOutter(process.getErrorStream(), "ERROR");
// any output?
StreamOutter outputGobbler = new StreamOutter(process.getInputStream(), "OUTPUT");
// kick them off
errorGobbler.start();
outputGobbler.start();
// command exit
process.waitFor();
public class StreamOutter extends Thread {
InputStream is;
String type;
public StreamOutter(InputStream is, String type) {
this.is = is;
this.type = type;
}
public void run() {
System.out.println(" " + type + " ");
BufferedReader br = null;
try {
InputStreamReader isr = new InputStreamReader(is);
br = new BufferedReader(isr);
String line;
System.out.println(" " + type + " ");
while ((line = br.readLine()) != null) {
XxlJobLogger.log(line);
}
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
2.만약 에 1 에 적 힌 대로 Buffered Reader 의 read 방식 으로 신속하게 처리 할 수 있 습 니 다.
br = new BufferedReader(isr);
int one = null;
if((one=br.read()) != -1){
System.out.println((char) one);
}
br.read()는 각각 모든 문 자 를 꺼 내기 때문에 one 을 연결 한 후 n 으로 나 누 어야 합 니 다.파일 의 모든 내용 을 한꺼번에 읽 는 방식 과 비슷 합 니 다.스스로 처리 한 후에 줄 데 이 터 를 받 아야 합 니 다.
제 가 여기 서 첫 번 째 방식 을 사용 하 는 것 은 문제 가 없습니다.두 번 째 방식 은 스스로 탐색 해 야 합 니 다.만약 에 두 번 째 방식 으로 해결 하 는 친구 가 있다 면 하나,둘 을 지적 할 수 있 습 니 다.
\#2.Spring Boot 가 명령 행 을 통 해 들 어 오 는 인자\#\##방식 1:
java -jar xxx.jar aaa bbb cccc
aaa,bbb,ccc 등 3 개의 인 자 를 전 달 했 습 니 다.
main 방법의 매개 변 수 를 통 해 가 져 오기
방식 2:
java -jar xxx.jar --test.test=aaa --domain=bbb
springboot 의 쓰기 입 니 다.@Value("${test.test}")\@Value("${domain}")를 통 해 가 져 올 수 있 습 니 다.
달팽이
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.