Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Kann man System.out in eine Datei speichern? ähnlich wie log
Ich würde gerne wissen ob es in Java eine Möglichkeit gibt den Output den man zum Beispiel mit dem Befehl System.out.println("Hallo Java"); in einer Datei speichern kann!
Ich würde gerne beim starten meine Jar-Datei die Konsolenausgabe angucken.
Ja, du kannst einfach den OutputStream (System.out) umleiten. Aber wenn du die sysouts eines Jars ansehen möchtest, dann starte das Jar doch einfach via
Oder Du baust Dir kurz 'ne statische Logger-Klasse, mit einer log(String)-Funktion, die den String einfach direkt auf der Console ausgibt UND in eine Datei speichert. Dann kannst Du das auch immer wieder ein- und ausschalten, je nachdem, wie Du willst. Kannst das natürlich dann auch über Parameter lösen.
public class Logger
{
private static FileOutputStream file = null;
public static void log(String str)
{
System.out.println(str);
if (file != null)
file.write(str.getBytes());
}
public static void log(Object o)
{
log(o.toString());
}
public static void setFileOutput(FileOutputStream f)
{
file = f;
}
}
Das ist jetzt ungetestet, müßte aber funzen. Im Prinzip kannst Du auch den FileOutputStream direkt initialisieren, ohne ihn erst zu übergeben (also daß er beim ersten Log-Versuch einfach einen öffnen in 'nem bestimmten Verzeichnis oder sowas).
Der Vorteil ist, daß Du von nun an immer das hier benutzt:
Code:
Logger.log("Gib das hier mal aus...");
Somit hast Du eine einzige zentrale Log-Funktion. Diese kannst Du immer beliebig anpassen, z.B. kannst Du später auch Netzwerk-Funktionalitäten hinzufügen, sodaß Dein Logger über einen Socket die Ausgaben an einen anderen Rechner schickt und Du z.B. mit einem Laptop die Log-Ausgaben mitverfolgen kannst. Der Phantasie sind keine Grenzen gesetzt
Es sei aber auch erwähnt, daß es berreits fertige Logger gibt, die oftmals sehr viele coole Sachen bieten. Zum Beispiel verschiedene Loglevel (Info, Warning, Error, usw), und Du kannst dann jederzeit einstellen, welche Levels Dich z.B. überhaupt nicht interessieren, und das wird dann auch nicht mehr ausgegeben. Natürlich ist es auch kein Problem, sich sowas selbst zu basteln (am besten zusätzlich zur log()-Funktion einfach eine info()-, error()-Funktion usw. bauen). Aber falls Du dazu keine Lust hast, dann sieh Dich mal nach fertigen Loggern um
Ach ja... ein weiterer Vorteil ist auch, daß Du die Ausgaben formatieren kannst. Beispielsweise kannst Du durch Deine eigene Log-Funktion bestimmen, wie viele \n angefügt werden sollen, oder daß immer vorne der Name der aufrufenden Klasse dransteht, z.B. so:
Code:
public static void log(String str, Object invoker)
{
str = invoker.getClass().getName() + "> " + str + "\n";
System.out.println(str);
// und noch der file-output eben...
}
Du siehst, Du hast eine Fülle an Möglichkeiten, und mußt es immer nur an einer einzigen Stelle ändern, weil jede Ausgabe nur noch über Deine Logger-Klasse erfolgen.