我有持续监听端口的应用程序,如果有任何请求,请处理并发回响应。我已将程序的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)
我认为你必须在使用之前强制创建文件。
这是一个例子:
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()