Schreiben in ein Webprotokoll (Textdatei) Java EE
-
12-12-2019 - |
Frage
Ich habe echte Probleme, eine Textdatei pro 'Operation' zu generieren, um operationsspezifische Informationen zu speichern, egal welchen Ansatz ich wähle, ich kann keine Textdatei auf dem Webserver erstellen, geschweige denn Informationen darin speichern, das erste Beispiel ist idealerweise das, was ich möchte (pro Operation erstellen und speichern)
Hinweis - Ich versuche dies derzeit zu Testzwecken in einem Servlet zu tun.Hilfe sehr geschätzt.
try {
FileWriter fstream = new FileWriter("out.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write("test");
out.close();
} catch (Exception ex) {
System.out.println(ex);
}
Anderer Ansatz
try {
URL url;
URLConnection urlConn;
DataOutputStream dos;
DataInputStream dis;
url = new URL("http://localhost:8080/" + request.getContextPath() + "/tmp/myfile.txt");
System.out.println(url);
urlConn = url.openConnection();
urlConn.setDoInput(true);
urlConn.setDoOutput(true);
urlConn.setUseCaches(false);
urlConn.setRequestProperty ("Content-Type", "text/plain");
dos = new DataOutputStream (urlConn.getOutputStream());
dos.writeUTF("test");
dos.flush();
dos.close();
//to test
dis = new DataInputStream(urlConn.getInputStream());
String s = dis.readLine();
System.out.println(s);
dis.close();
} catch(Exception ex) {
System.out.println(ex);
}
Lösung
Ich bin mir nicht sicher, warum du das so machen willst;es gibt bereits robuste Protokollierungslösungen und Datenbanken.
Im ersten Fall wird mit ziemlicher Sicherheit eine Datei erstellt, wenn Sie keine Ausnahmen erhalten, Sie wissen nur nicht, wo sie sich befindet.Verwenden Sie entweder einen absoluten Pfad zu einem bekanntermaßen zugänglichen Speicherort oder einen relativen Pfad zur Anwendung selbst mit .getRealPath
.
(Beachten Sie, dass der Versuch, in einen app-relativen Pfad zu schreiben, nicht funktioniert, wenn Sie einen Krieg bereitstellen.)
Im zweiten Fall sind Sie sich nicht sicher, warum Sie dachten, dass das funktionieren würde.