2016-07-08 3 views
1

포트에서 수신 대기하는 응용 프로그램이 있으며 요청이있을 경우 응답을 처리하고 다시 보냅니다. 프로그램의 System.out.println을 텍스트 파일로 리디렉션했습니다 . 매일 파일을 롤아웃해야합니다.하지만 오전 12시에 롤아웃이 표시되지 않습니다. 롤아웃이 발생하고 어제의 파일 자체에 로그가 추가되는 경우가 있습니다. 아래 코드 스 니펫.날짜에 따라 출력 파일이 매일 생성되지 않음

import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.PrintStream; 
import java.net.ServerSocket; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class MBServ { 
public static void main(String[] args) throws IOException { 
    ServerSocket serverSocket = null; 
    boolean listening = true; 
    String request_date = null; 
    String request_time = null; 
    String logFile="MBServ_"; 
    ConnectServiceInfo fiServiceInfo = ConnectServiceInfo.getInstance(); 
    ConnectServiceInfo fiservice = fiServiceInfo.getInstance(); 
    try { 
     serverSocket = new ServerSocket(1122); 


    } catch (IOException e) { 

     System.exit(-1); 

    } 

    while (listening) { 

     Date date = new Date(); 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); 
     request_date = sdf.format(date); 
     logFile="MBServ_"+request_date+".log"; 
     System.setOut(new PrintStream(new FileOutputStream(logFile,true))); 

     new MBServT(serverSocket.accept(), fiservice).start(); 
     } 

    serverSocket.close(); 
    } 
    } 
+0

어떤 오류 또는 예외가 있습니까? –

+0

오류/예외는 없습니다. 그러나 날짜가 바뀔 때 새 파일을 만드는 대신 로그가 오래된 파일에 추가됩니다. – jan

답변

0

파일을 사용하기 전에 강제로 생성해야한다고 생각합니다. 여기

는 exmaple입니다 :

Date date = new Date(); 
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); 
request_date = sdf.format(date); 
logFile="MBServ_"+request_date+".log"; 
File file = new File(logFile); 
file.createNewFile(); 
... 

문서 : https://docs.oracle.com/javase/7/docs/api/java/io/File.html#createNewFile()

+0

위 코드 스 니펫에 따라 변경했습니다. 날짜가 바뀌면 새 파일을 만들지 않습니다. – jan

+0

새 파일을 만들지 만 00.01에 정확하지 않습니다. 그것은 매일 다른 시간에 생성합니다 – jan

+0

어떤 제안? – jan