2012-12-20 6 views
5

Ich versuche, die Ereignisse in einer Protokolldatei zu schreiben, aber keine Datei wird erstellt. Ich bekomme überhaupt keinen Fehler. Hier ist die Log-Klasse:(Java) Schreiben von Ereignissen, um Textdatei zu protokollieren

public class Logs { 
static FileHandler fileTxt; 
static SimpleFormatter formatterTxt; 


static public void logging() throws IOException { 

    Logger logger = Logger.getLogger(""); 
    logger.setLevel(Level.INFO);//Loget Info, Warning dhe Severe do ruhen 
    fileTxt = new FileHandler("c:/SimleTaskEvents.txt"); 
    formatterTxt = new SimpleFormatter(); 
    fileTxt.setFormatter(formatterTxt); 
    logger.addHandler(fileTxt); 

} 
} 
+1

In Zukunft bitte posten Sie Ihre genaue Fehlermeldung – wlk

+0

Ich bin überhaupt kein Fehler. Nur dass keine Datei in "c: /" erstellt wird – Han

+0

Getestet wurde Ihr Code und es funktioniert einwandfrei. Das Problem ist woanders. – svz

Antwort

3
fileTxt = new FileHandler("c:/SimleTaskEvents.txt"); 

Diese Linie erzeugt nur einen Handler.

Es erstellt die Datei nicht. Was Sie tun müssen, ist, erstellen Sie die Datei (SimleTaskEvents.txt) im Verzeichnis "C: /". Danach, wenn Sie Ihr Programm ausführen, das gleiche Programm, das Sie hier gesetzt haben, sehen Sie Protokolle, die darauf geschrieben werden.

0

Sie müssen diese Importe hinzuzufügen:

import java.util.logging.Logger; 
import java.util.logging.Level; 
+0

natürlich habe ich das getan :) – Han

+0

und es funktioniert nicht ... – Han

4

Sie müssen das Protokoll zuerst

logger.info("this is a line of logging"); 

und vielleicht lesen Sie in diesem tutorial

+0

Ja, ich mache das durch eine andere Klasse. Ich erkläre: – Han

+0

private endgültige statische Logger lgs = Logger.getLogger (Logs.class.getName()); – Han

+0

und ich benutze das LGS-Objekt als. Das Problem ist, dass keine Datei erstellt wird! – Han

0
schreiben

Wir verwenden Logger in unserer Anwendung wie diese

import org.apache.log4j.BasicConfigurator; 
import org.apache.log4j.Category; 
import org.apache.log4j.PropertyConfigurator; 



public class MyLogger { 


public static Category appLog = Category.getInstance(MyLogger .class.getName() + ".APPLOG"); 

static { 
    try{ 
     BasicConfigurator.configure(); 
     Properties properties = new Properties(); 
     properties.load("PropertyFileName"); 
     PropertyConfigurator.configure(properties); 
     MyLogger.appLog.setAdditivity(false); 
     MyLogger.appLog.info("This is application log"); 

    }catch(Exception e){ 
     e.printStacktrace(); 
    } 
} 
} 

Und das sind die Daten in Eigenschaftendatei

#Logging configuration file. 

log4j.rootCategory=DEBUG, DEFAULTAPPENDER 

log4j.category.MyLogger.APPLOG=DEBUG, APPLOGAPPENDER 
log4j.appender.APPLOGAPPENDER=org.apache.log4j.RollingFileAppender 
log4j.appender.APPLOGAPPENDER.File=${catalina.home}/logs/applog.log 
log4j.appender.APPLOGAPPENDER.MaxFileSize=5000KB 
log4j.appender.APPLOGAPPENDER.MaxBackupIndex=20 
log4j.appender.APPLOGAPPENDER.layout=org.apache.log4j.PatternLayout 
log4j.appender.APPLOGAPPENDER.layout.ConversionPattern=%d - %m%n 
+1

das ist log4j, ich muss nur eine einfache Textdatei schreiben. Allerdings habe ich das Tutorial des vorherigen Kommentars verfolgt und ich bin auf einem guten Weg, denke ich :) – Han

0

Vielleicht this is, was Sie brauchen ...

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.IOException; 
import java.util.logging.FileHandler; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 

/** 
* LogToFile class 
* This class is intended to be use with the default logging class of java 
* It save the log in an XML file and display a friendly message to the user 
* @author Ibrabel <[email protected]> 
*/ 
public class LogToFile { 

    protected static final Logger logger=Logger.getLogger("MYLOG"); 
    /** 
    * log Method 
    * enable to log all exceptions to a file and display user message on demand 
    * @param ex 
    * @param level 
    * @param msg 
    */ 
    public static void log(Exception ex, String level, String msg){ 

     FileHandler fh = null; 
     try { 
      fh = new FileHandler("log.xml",true); 
      logger.addHandler(fh); 
      switch (level) { 
       case "severe": 
        logger.log(Level.SEVERE, msg, ex); 
        if(!msg.equals("")) 
         JOptionPane.showMessageDialog(null,msg, 
          "Error", JOptionPane.ERROR_MESSAGE); 
        break; 
       case "warning": 
        logger.log(Level.WARNING, msg, ex); 
        if(!msg.equals("")) 
         JOptionPane.showMessageDialog(null,msg, 
          "Warning", JOptionPane.WARNING_MESSAGE); 
        break; 
       case "info": 
        logger.log(Level.INFO, msg, ex); 
        if(!msg.equals("")) 
         JOptionPane.showMessageDialog(null,msg, 
          "Info", JOptionPane.INFORMATION_MESSAGE); 
        break; 
       case "config": 
        logger.log(Level.CONFIG, msg, ex); 
        break; 
       case "fine": 
        logger.log(Level.FINE, msg, ex); 
        break; 
       case "finer": 
        logger.log(Level.FINER, msg, ex); 
        break; 
       case "finest": 
        logger.log(Level.FINEST, msg, ex); 
        break; 
       default: 
        logger.log(Level.CONFIG, msg, ex); 
        break; 
      } 
     } catch (IOException | SecurityException ex1) { 
      logger.log(Level.SEVERE, null, ex1); 
     } finally{ 
      if(fh!=null)fh.close(); 
     } 
    } 

    public static void main(String[] args) { 

     /* 
      Create simple frame for the example 
     */ 
     JFrame myFrame = new JFrame(); 
     myFrame.setTitle("LogToFileExample"); 
     myFrame.setSize(300, 100); 
     myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     myFrame.setLocationRelativeTo(null); 
     JPanel pan = new JPanel(); 
     JButton severe = new JButton("severe"); 
     pan.add(severe); 
     JButton warning = new JButton("warning"); 
     pan.add(warning); 
     JButton info = new JButton("info"); 
     pan.add(info); 

     /* 
      Create an exception on click to use the LogToFile class 
     */ 
     severe.addActionListener(new ActionListener(){ 

      @Override 
      public void actionPerformed(ActionEvent ae) { 
       int j = 20, i = 0; 
       try { 
        System.out.println(j/i); 
       } catch (ArithmeticException ex) { 
        log(ex,"severe","You can't divide anything by zero"); 
       } 

      } 

     }); 

     warning.addActionListener(new ActionListener(){ 

      @Override 
      public void actionPerformed(ActionEvent ae) { 
       int j = 20, i = 0; 
       try { 
        System.out.println(j/i); 
       } catch (ArithmeticException ex) { 
        log(ex,"warning","You can't divide anything by zero"); 
       } 

      } 

     }); 

     info.addActionListener(new ActionListener(){ 

      @Override 
      public void actionPerformed(ActionEvent ae) { 
       int j = 20, i = 0; 
       try { 
        System.out.println(j/i); 
       } catch (ArithmeticException ex) { 
        log(ex,"info","You can't divide anything by zero"); 
       } 

      } 

     }); 

     /* 
      Add the JPanel to the JFrame and set the JFrame visible 
     */ 
     myFrame.setContentPane(pan); 
     myFrame.setVisible(true); 
    } 
} 
Verwandte Themen