1. #1

    Registriert seit
    28.10.2011
    Beiträge
    625
    Thanked 279 Times in 168 Posts

    Standard Easy Logger selbst erstellt (eclipse)

    Hier mal ein simples Tutorial, wie man einen wirklich einfachen Logger auf Basis der Standalone-App erstellt.

    1. Erstelle ein Java-Projekt

    2. Erstelle ein libs Ordner

    3. Kopiere die StApp in den libs Ordner und füge alle .jar-Files zum Build-Path des Projektes hinzu
    Code:
          C:\Users\<User>\Knuddels-Stapp\bXXXXX\ > /libs/
    4. Erstelle eine simple Logger-Klasse mit Start-Methode:

    public class KnuddelsLogger extends base.GroupChatStandalone {
    public KnuddelsLogger(String[] arg0, String arg1, int arg2) {
    super(arg0, arg1, arg2);
    }

    public static void main(String[] args) {
    new KnuddelsLogger(args, null, args.length);
    }
    }


    Die Klasse muss von base.GroupChatStandalone erben.
    Im prinzip kann die StApp nun bereits gestartet werden.

    Da wir aber die Pakete mitloggen möchten, müssen wir eine Methode suchen und auch überschreiben. Um die Pakete, die empfangen suchen wir in der Superklasse eine Methode, die folgendes Schema besitzt:
    public boolean <NAME>(String X)
    Da es einige wenige Methoden gibt, die diesem Schema entsprechen, müssen wir einfach herumprobieren und in unserer Logger-Klasse die Methode einfach überschreiben:

    @Override
    public boolean tx(String a) {
    return super.tx(a);
    }


    Um nun mitzuloggen, müssen wir nur das ganze ausgeben:

    @Override
    public boolean tx(String a) {
    System.out.println("[SEND] " + a);
    return super.tx(a);
    }


    Für Profis unter uns können wir das ganze nun noch etwas "formatieren", damit man die Tokens besser sieht - Hierzu benutze ich das mitgelieferte JSON:

    @Override
    public boolean tx(String a) {
    JSONArray j = new JSONArray();

    String[] tokens = a.split("\0");
    for (int i = 0; i < tokens.length; i++) {
    j.add(tokens[i]);
    }
    System.err.println("\n\tSEND: " + JSONArray.toJSONString(j));

    return super.tx(a);
    }


    Voilá, fast fertig!
    Das ganze müssen wir nun auch beim Receiver machen. Da sucht man sich nur die Methode, wo StringTokenizer verwendet werden.

    Und so schaut das ganze dann aus:
    [...]
    ServerSetting changed [chat.knuddels.de:2710/80 => DE]
    JX Starting Browser-Prewarm ...
    Connecting to server ...
    Using Normal Socket
    No version file detected: C:\Users\************\eclipse-workspace\Knuddels Billard-Debug\inst.version

    SEND: ["t","V9.0cab ","https:\/\/www.knuddels.de\/STAPP-null","14","14.0.2 (64bit)","-","62150","OpenJDK 64-Bit Server VM","****************","4076","Oracle Corporation","Windows 10 64bit)","standalone","********","***************** *******"]
    Connection try returned [0] Elapsed: 1462
    UPDATED Protocol 85037142 - 01.11.2020, 18:47:14
    JX-B1 Created new browser view. browserType: JX/HEAVYWEIGHT/persistent, appId: BrowserPrewarm
    JX Browser-Prewarm DONE: 675ms

    SEND: ["k","**","0","**********","*********************** ***********"]
    CONFIRMED Protocol 85037142 - 01.11.2020, 18:47:14
    [...]
    Das ganze wurde getestet mit der Version V9.0cab.

    Extended - Billard Logger
    Hierzu gehen wir in den lib Ordner und öffnen die main.jar mit WinRAR (oder einem ZIP-Programm). Hier löschen wir die BillardManager.class. Zieht die vorher am besten auf den Desktop und decompiliert sie, um die BillardGame-Klasse zu extrahieren.

    Wir erstellen nun im Java-Projekt eine BillardManager-Klasse und erweitern (wie beim Original) die BillardGame-Klasse:

    public class BillardManager extends cyz {

    }


    Wir folgen der BillardGame-Klasse (cyz) und finden das Interface für das Modul-System (onRecieve, destroy, regsiterModule). Hier überschreiben wir nun die Methoden:

    public class BillardManager extends cyz {
    // onReceive
    @Override
    public void j(final StringTokenizer stringTokenizer) {
    JSONArray j = new JSONArray();
    StringBuffer b = new StringBuffer();

    while(stringTokenizer.hasMoreTokens()) {
    String e = (String) stringTokenizer.nextElement();
    j.add(e);
    b.append(e);
    b.append("\0");
    }
    System.err.println("\n\tRECEIVE: " + JSONArray.toJSONString(j));

    super.j(new StringTokenizer(b.toString(), "\0"));
    }

    // send
    public void a(String tokens) {
    this.z.tx(tokens);
    }

    // load Image
    @Override
    public _q r(String paramString) {
    System.out.println("\n\tLoad Image: " + paramString);
    return super.r(paramString);
    }
    }



    P.S. Falls eclipse oder Java wegen irgendwelchen Security-Gedönse meckert, löscht einfach in allen .jar files die MANIFEST!
    Diese enthält nämlich Fingerprints des Builds.

  2. The Following User Says Thank You to Bubble Gum For This Useful Post:

    Manjaro (24.11.2020)

Ähnliche Themen

  1. Win7 Eclipse startet nicht
    Von ElkosMED im Forum Windows
    Antworten: 1
    Letzter Beitrag: 24.01.2014, 12:42
  2. Einführung Java mit Eclipse
    Von Silvatris im Forum Hochsprachen
    Antworten: 7
    Letzter Beitrag: 13.05.2013, 07:32
  3. Vorschau ChaisynoX (Selbst Designed & Selbst gecodete Homepage)
    Von ZarneXxX im Forum Showroom
    Antworten: 0
    Letzter Beitrag: 02.10.2012, 21:05
  4. Win7 Eclipse auf Deutsch ?
    Von IceNet im Forum Windows
    Antworten: 0
    Letzter Beitrag: 29.07.2012, 11:14
  5. Antworten: 2
    Letzter Beitrag: 02.07.2012, 23:06
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.