2016-07-08 10 views
1

私はポートでリッスンし続けるアプリケーションを持っています。リクエストがあった場合は、処理して返信します。プログラムのSystem.out.printlnをテキストファイルにリダイレクトしました。 。ファイルは毎日ロールアウトされますが、私は午前12時にロールアウトすることはありません。ロールアウトが発生し、昨日のファイル自体にログが追加されることがあります。コードスニペットを以下に示します。日時に基づいてsetoutファイルが毎日生成されない

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

新しいファイルを作成します毎日異なる時刻に作成する – jan

+0

提案はありますか? – jan

関連する問題