[NEWSboard IBMi Forum]
Seite 4 von 5 Erste ... 3 4 5 Letzte
  1. #37
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    import ist schon mal gut
    das mit dem Logger sieht ebenfalls gut aus
    das ganze Gedöns danach brauchst du nicht
    am einfachsten eine log4j.properties im Classpath platzieren, da kann man alles einstellen, für den Anfang tuts da jedes Beispiel.
    Die ifs Datei wird da bei dem entsprechenden Appender (FileAppender oder RollingFileAppender...) angegeben, relativ oder absolute Pfadnamen sind möglich.

    D*B

    Zitat Zitat von LindnerSpezial Beitrag anzeigen
    Ich probiere gerade das Log4j einzubauen!

    import org.apache.log4j.*;

    private static Logger logger = Logger.getLogger( ExtDBsql.class );

    SimpleLayout layout = new SimpleLayout();
    ConsoleAppender consoleAppender = new ConsoleAppender( layout );
    logger.addAppender( consoleAppender );
    FileAppender fileAppender = new FileAppender( layout, "MeineLogDatei.log", false );
    logger.addAppender( fileAppender );
    // ALL | DEBUG | INFO | WARN | ERROR | FATAL | OFF:
    logger.setLevel( Level.WARN );

    Wie gibt man denn eine Datei im IFS an, in die die Logdaten geschrieben werden?

    Es gibt zwar viel im Internet zu finden, aber meistens nur für PC's und nicht für die iSeries.

    Danke im voraus

    Gruß
    Henning
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  2. #38
    Registriert seit
    Dec 2003
    Beiträge
    106
    zum Thema Konsolenausgabe.

    Das kann auch per setzen von Umgebungsvariablen erreicht werden.

    ADDENVVAR ENVVAR(QIBM_RPG_JAVA_PROPERTIES)
    VALUE('-Dos400.stderr=file:/home/java/error/err.txt;-Dos400.stdout=file:/home/java/error/out.txt;')

    ADDENVVAR ENVVAR(QIBM_USE_DESCRIPTOR_STDIO) VALUE('Y')

  3. #39
    Registriert seit
    Jul 2008
    Beiträge
    20
    Irgendwie funktioniert das nicht so wie ich es gerne hätte!

    In meiner Class steht jetzt nur noch:

    import org.apache.log4j.*;

    private static Logger logger = Logger.getLogger( ExtDB.class );

    logger.setLevel( Level.ALL );
    logger.debug("Testnachricht!.");


    Meine log4j.properties sieht so aus:

    log4j.rootLogger=debug, stdout, R
    log4j.appender.stdout=org.apache.log4j.ConsoleAppe nder
    log4j.appender.stdout.layout=org.apache.log4j.Patt ernLayout
    # Pattern to output the caller's file name and line number.
    log4j.appender.stdout.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
    log4j.appender.R=org.apache.log4j.RollingFileAppen der
    # log4j.appender.R.File=log4j.log
    log4j.appender.R.File=//SYSTEMNAME/Home/BENUTZER/log4j.log
    log4j.appender.R.MaxFileSize=1000KB
    # Keep one backup file
    log4j.appender.R.MaxBackupIndex=1
    log4j.appender.R.layout=org.apache.log4j.PatternLa yout
    log4j.appender.R.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n

    Die log4j.properties steht im gleichen Verzeichnis wie die Class der Application.

    Die log4j.log müsste doch eigentlich automatisch erstellt werden, oder muss eine vorhanden sein?

    Gruß
    Henning

  4. #40
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    - die Verzeichnisnamen sind case sensitive und lass mal den Systemnamen weg.

    log4j.appender.R.File=/home/BENUTZER/log4j.log

    - den setLevel brauchst du ebenfalls nicht
    - und schau mal in den System.out Ausgaben nach, da findet sich wahrscheinlich ein Hinweis auf den Pfad

    Zitat Zitat von LindnerSpezial Beitrag anzeigen
    Irgendwie funktioniert das nicht so wie ich es gerne hätte!

    In meiner Class steht jetzt nur noch:

    import org.apache.log4j.*;

    private static Logger logger = Logger.getLogger( ExtDB.class );

    logger.setLevel( Level.ALL );
    logger.debug("Testnachricht!.");


    Meine log4j.properties sieht so aus:

    log4j.rootLogger=debug, stdout, R
    log4j.appender.stdout=org.apache.log4j.ConsoleAppe nder
    log4j.appender.stdout.layout=org.apache.log4j.Patt ernLayout
    # Pattern to output the caller's file name and line number.
    log4j.appender.stdout.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
    log4j.appender.R=org.apache.log4j.RollingFileAppen der
    # log4j.appender.R.File=log4j.log
    log4j.appender.R.File=//SYSTEMNAME/Home/BENUTZER/log4j.log
    log4j.appender.R.MaxFileSize=1000KB
    # Keep one backup file
    log4j.appender.R.MaxBackupIndex=1
    log4j.appender.R.layout=org.apache.log4j.PatternLa yout
    log4j.appender.R.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n

    Die log4j.properties steht im gleichen Verzeichnis wie die Class der Application.

    Die log4j.log müsste doch eigentlich automatisch erstellt werden, oder muss eine vorhanden sein?

    Gruß
    Henning
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #41
    Registriert seit
    Jul 2008
    Beiträge
    20
    Zitat Zitat von BenderD Beitrag anzeigen
    - die Verzeichnisnamen sind case sensitive und lass mal den Systemnamen weg.

    log4j.appender.R.File=/home/BENUTZER/log4j.log

    - den setLevel brauchst du ebenfalls nicht
    - und schau mal in den System.out Ausgaben nach, da findet sich wahrscheinlich ein Hinweis auf den Pfad
    Funktioniert leider nicht!

    Ich habe keine System.out Ausgaben.
    Das Java Programm wird von einem SQL Statement auf der iSeries aufgerufen und läuft ohne das ich was mitbekomme.
    Deshalb ja auch die Logdatei, in die ich Variablen-Inhalte usw. ausgeben möchte.

    Gruß
    Henning

  6. #42
    Registriert seit
    Mar 2004
    Beiträge
    181
    Hallo zusammen,

    ich habe mich vor ca. einem Jahr mit Java auf der AS/400 befasst. Out of the box war die Geschwindigkeit nicht so toll. Wie Dieter sagt, sollte man ein Programm im Batch laufen lassen, welches auf neue Jobs per Queue wartet. Solch ein Programm hatte ich damals geschrieben. Die Idee von Dieter ein Open Source Projekt zu erstellen finde ich sehr gut! Ich würde auch gerne mein Wissen mit einbringen...
    Am besten schaltet man auch die Auto Performance der Speicherpools aus und erstellt einen eigenen Pool für die Java Anwendung.

    Gruß
    Michael

  7. #43
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ich denke, dies solltest du dir durchlesen:
    Apache log4j 1.2 - Short introduction to log4j

    Die Konfiguration wird über Parameter nicht über Classpath ermittelt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #44
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    @Baldur:
    wenn kein ConfigFile benannt ist, sucht log4j beim ersten Anticken nach Start der JVM über den Classpath eine log4j.properties
    @Muchi: Das Open Source Projekt gibt es schon, wer mitmachen will kann sich bei SourceForge oder auf meiner WebSeite den publizierten Stand holen und dann per Mail mit mir Kontakt aufnehmen
    @LindnerSpezial: den SystemOut und SystemErr gibts immer und wenn keine Konsole dranhängt sollte der zumindest ins Joblog gehen, ansonsten würde ich mir mal ein kleines HelloWorld mit log4j zum testen schreiben, damit du dann auf der Konsole siehst wo es hakt

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #45
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Soweit meine Erfahrung zeigt, ist STDOUT und STDERR auf NULL (also leer) zugewiesen, wenn kein Bildschirm verfügbar ist (Batch, oder wie hier SQL), es kann also keine Ausgaben geben.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #46
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    dann gehts immer noch mit Gewalt im Java Programm:

    System.out = new PrintStream(new FileOutputStream("MyPath/denkste.log", true);

    D*B

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Soweit meine Erfahrung zeigt, ist STDOUT und STDERR auf NULL (also leer) zugewiesen, wenn kein Bildschirm verfügbar ist (Batch, oder wie hier SQL), es kann also keine Ausgaben geben.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #47
    Registriert seit
    Jul 2008
    Beiträge
    20
    Hallo!

    Also mit "HelloWorld" funktioniert das, nachdem ich den Classpath der log4j.jar gesetzt habe und das Programm direkt mit java ... aufrufe.
    In die log4j.log wird also geschrieben!
    Nur wenn ich das gleiche in die Class einbaue, welche von SQL aufgerufen wird, funktioniert das nicht.
    Gibt es eine Möglichkeit beim Anmelden eines Users einen Classpath zu setzen ohne den System Classpath zu verändern?


    Das mit dem Sytem.out habe ich auch getestet! Das würde mir ja auch schon reichen! Funktioniert aber nicht, obwohl ich die Fehlende Klammer und in der Klasse import java.io.*; eingefügt habe!

    /home/ExtDB.java:94: cannot assign a value to final variable out
    System.out = new PrintStream(new FileOutputStream("/Home/SEC0495/log4j.log", true));
    ^
    1 error


    Gruß
    Henning

  12. #48
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Per User nützt das nichts, da die QZDA-Job's alle mit QUSER gestartet werden (JDBC läuft auch mit QZDA).

    Ggf. musst du in deiner Main-Prozedur per System.getenv() und System.putenv() deine Umgebung anpassen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. PDF auf iSeries
    By PeterKarsten in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 20-08-08, 12:52
  2. NFS von Linux auf ISeries
    By linguin in forum NEWSboard Linux
    Antworten: 0
    Letzter Beitrag: 03-01-07, 08:22
  3. Antworten: 3
    Letzter Beitrag: 27-08-06, 17:31
  4. Java, JDBC, iSeries und Tschechische/Russische/Chinesische Zeichen
    By Christian.Hesse in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 04-08-06, 10:04
  5. Java auf der iSeries
    By binhierneu in forum NEWSboard Java
    Antworten: 7
    Letzter Beitrag: 19-10-04, 21:02

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •