Hallo,
wie haben die folgende Aufgabe bekommen:
Das Thema Logging ist vollkommen neu für mich und nachdem ich mich im Internet informiert habe, weiß ich, dass es die beiden Möglichkeiten JSR 47 und log4j gibt.
Das fertige "Siedler von Catan"-Projekt (.jar-Datei) muss am Ende auf einem Rechner der Uni präsentiert werden und darauf läuft Linux. Eine .jar-Datei von log4j wird auf dem Uni-Rechner höchstwahrscheinlich nicht vorhanden sein und der Einfachheit halber wird es wohl sinnvoller sein, JSR 47 zu verwenden, da hierfür nichts weiter installiert werden muss (fest vorgeschriebene Präsentationszeit, da kommt es sicherlich schlecht, wenn man da erstmal irgendwelche Dinge installiert, was mit Pannen verbunden sein kann).
Allerdings ist diese Vermutung ziemlich vage und es wäre deshalb sehr nett, wenn jemand, der sich mit dem Logging gut auskennt, hier seine Meinung darüber schreiben würde, welche der beiden Möglichkeiten die sinnvollere ist.
Zu obiger Aufgabenstellung noch zwei kurze Fragen:
- Ich habe das Prinzip des Loggings so verstanden, dass man theoretisch jede Zeile loggen kann. Verlangt die Aufgabe tatsächlich nur, dort ein Logging einzufügen, wo etwas ausgegeben wird?
- Sind mit "Protokolldateien" die Logdateien gemeint, also auf dem System eines jeden Spielers wird eine separate und bzgl. des Inhalts unabhängige Logdatei erstellt?
Vielen Dank für Eure Hilfe und Mühe!
Gruß
Wang
wie haben die folgende Aufgabe bekommen:
Eliminieren Sie aus Ihrem “Siedler von Catan”-Programm sämtliche direkte Ausgaben auf System.out und System.err (also z.B. auch Aufrufe von printStackTrace() auf Exceptions) und ersetzen Sie sinnvolle Ausgaben durch ein flexibleres Logging.
Zum Debuggen kann es hilfreich sein, den Ablauf des Programmes mehr oder weniger detailliert zu protokollieren. Durch angepasste Logging-Klassen können Sie dabei die Detail-Schärfe Ihrer Protokolle genau steuern und auch definieren, wo die Informationen zu finden sind.
Es empfiehlt sich das Loggen in je eine Datei für Protokollmeldungen des normalen Spielablaufs einerseits und die Protokollierung auftretender Exceptions andererseits. Etwa bereits vorhandene log-Dateien sollten aber bei einem neuen Programmlauf nicht einfach überschrieben werden. Dies erreichen Sie beispielsweise durch die Verwendung temporärer Dateien (Hinweis: die Methoden createTempFile in der Klasse java.io.File können hilfreich sein). Alle auftretenden Exceptions, auch wenn sie anderweitig behandelt werden, sollen in der Fehler-Log-Datei protokolliert werden.
Funktionalitätseinschränkungen gegenüber den Spielregeln, nicht sinnvoll behandelte Exceptions und Programmabstürze sind nun nicht mehr akzeptabel, die Jagd nach kleineren Bugs wird nun aber erst recht eröffnet.
Präsentieren Sie Ihr Programm benutzerfreundlich (als plattformunabhängig ausführbares Jar-Archiv) auf der Gruppenwebseite. Dazu gehört auch eine Benutzerdokumentation (nicht zu verwechseln mit der Programmdokumentation, die Sie mit javadoc erstellt haben). Die Benutzerdokumentation soll einem Benutzer, der sich nicht für Ihren Quellcode interessiert, erklären, was er tun muss, um mit Ihrem Programm “Siedler von Catan” zu spielen, und wo auf seinem Dateisystem eventuelle Protokolldateien angelegt werden. Die Bedienung sollte aber dennoch intuitiv sein und den Benutzer durch die Bedienung von Client und Server führen. Idealerweise werden Client und Server von einer gemeinsamen Oberfläche aus gesteuert, auf der der Benutzer entscheiden kann, ob er ein neues Spiel anlegen (als Server) und (als Client) auch mitspielen oder einem bereits angelegten (nur als Client) beitreten will.
Das Thema Logging ist vollkommen neu für mich und nachdem ich mich im Internet informiert habe, weiß ich, dass es die beiden Möglichkeiten JSR 47 und log4j gibt.
Das fertige "Siedler von Catan"-Projekt (.jar-Datei) muss am Ende auf einem Rechner der Uni präsentiert werden und darauf läuft Linux. Eine .jar-Datei von log4j wird auf dem Uni-Rechner höchstwahrscheinlich nicht vorhanden sein und der Einfachheit halber wird es wohl sinnvoller sein, JSR 47 zu verwenden, da hierfür nichts weiter installiert werden muss (fest vorgeschriebene Präsentationszeit, da kommt es sicherlich schlecht, wenn man da erstmal irgendwelche Dinge installiert, was mit Pannen verbunden sein kann).
Allerdings ist diese Vermutung ziemlich vage und es wäre deshalb sehr nett, wenn jemand, der sich mit dem Logging gut auskennt, hier seine Meinung darüber schreiben würde, welche der beiden Möglichkeiten die sinnvollere ist.
Zu obiger Aufgabenstellung noch zwei kurze Fragen:
- Ich habe das Prinzip des Loggings so verstanden, dass man theoretisch jede Zeile loggen kann. Verlangt die Aufgabe tatsächlich nur, dort ein Logging einzufügen, wo etwas ausgegeben wird?
- Sind mit "Protokolldateien" die Logdateien gemeint, also auf dem System eines jeden Spielers wird eine separate und bzgl. des Inhalts unabhängige Logdatei erstellt?
Vielen Dank für Eure Hilfe und Mühe!
Gruß
Wang