ServerPlugin Logdatei erstellen

Dieses Thema im Forum "Programmierung" wurde erstellt von 2801MC, 2. Mai 2015.

  1. 2801MC
    Offline

    2801MC

    Registriert seit:
    15. August 2013
    Beiträge:
    77
    Hallo,
    Ich möchte im Ordner plugins/<mein-plugin> neben der Config.yml noch eine joinlog.txt und eine deathlog.txt erstellen.
    In dieser soll immer wenn ich die Methode joinlog(string) oder deathlog(string) aufrufe eine neue zeile hinzugefügt werden, ich habe leider keine ahnung, wie sowas geht, könnte es mir jemand erklären?
    Es ist nicht das erste Plugin, dass ich programmiere, ich habe schon viele programmiert.
     
    #1
  2. [Dev] iTzSasukeHDxLP
    Offline

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
  3. Heldin
    Offline

    Heldin

    Registriert seit:
    22. April 2015
    Beiträge:
    42
  4. 2801MC
    Offline

    2801MC

    Registriert seit:
    15. August 2013
    Beiträge:
    77
    Also könnte ich es jetzt einfach diese Methode erstellen:
    Code (Text):
    1. public static void log(String log, String text) throws IOException {
    2.     FileWriter fw = new FileWriter("cblogs/" + log + "log.txt");
    3.     fw.write(text + "\n");
    4.     fw.close();
    5. }
    Oder müsste ich da noch was anders machen?

    Würde dann auch beide jedem aufruf in die nächste zeile geschrieben werden?
     
    #4
  5. Heldin
    Offline

    Heldin

    Registriert seit:
    22. April 2015
    Beiträge:
    42
    Ja. So müsste es klappen. Ansonsten musst du dich hier nochmal melden.
     
    #5
  6. 2801MC
    Offline

    2801MC

    Registriert seit:
    15. August 2013
    Beiträge:
    77
    Ich habs jetzt mal versuchs, ich habe diese methode erstellt:
    Code (Text):
    1. public void cblog(String log, String text) throws IOException {
    2.         FileWriter fw = new FileWriter("cblogs/" + log + "log.txt");
    3.         fw.write(text + "\n");
    4.         fw.close();
    5.     }
    Und im JoinEvent ist dieser Code mit drin:

    Code (Text):
    1. Player p = e.getPlayer();
    2.         try {
    3.             cblog("join", p.getName());
    4.         } catch (IOException e1) {
    5.             e1.printStackTrace();
    6.         }
    Wenn jetzt aber ein Spieler joint, dann wird keine datei erstellt...
     
    #6
  7. [Dev] iTzSasukeHDxLP
    Offline

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    Die soll ja auch schon vorher existieren
     
    #7
  8. 2801MC
    Offline

    2801MC

    Registriert seit:
    15. August 2013
    Beiträge:
    77
    oh
    ok und wie kann ich die erstellen, wenn sie noch nicht existiert?
     
    #8
  9. Heldin
    Offline

    Heldin

    Registriert seit:
    22. April 2015
    Beiträge:
    42
    #9
  10. Nightishaman
    Offline

    Nightishaman

    Registriert seit:
    3. Januar 2015
    Beiträge:
    51
    Am besten wäre es ein LogRecord zu erstellen und da dann einfach per getText oder getMessage den String zu holen. Dann kannste den in eine LogFile schreiben
     
    #10
  11. 2801MC
    Offline

    2801MC

    Registriert seit:
    15. August 2013
    Beiträge:
    77
    Also egal wie ich es versuche geht gerade garnichts, wie muss ich meine Methode jetzt verändern?
     
    #11
  12. Nightishaman
    Offline

    Nightishaman

    Registriert seit:
    3. Januar 2015
    Beiträge:
    51
    Es gibt ne viel Bessere Methode alles zu loggen:

    private Logger logger;

    public void log(String string) {
    if(logger == null) {
    logger = Logger.getLogger("Deinpluginname");
    FileHandler fh = new FileHandler(new File("DEINPLUGINNAME.log").getAbsolutePath());
    SimpleFormatter formatter = new SimpleFormatter();
    fh.setFormatter(formatter);
    logger.addHandler(fh);
    }
    logger.log(Level.INFO, string);
    }
    FERTIG
     
    #12