2012-12-20 13 views
5

Sto tentando di scrivere gli eventi in un file di registro ma nessun file viene creato. Non sto ottenendo alcun errore. Qui è la classe di registro:(Java) scrivere gli eventi per registrare il file di testo

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 futuro si prega di inviare il vostro messaggio di errore esatto – wlk

+0

sto ottenendo nessun errore a tutti. Solo che nessun file viene creato in "c: /" – Han

+0

Testato il tuo codice e funziona correttamente. Il problema è da qualche altra parte. – svz

risposta

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

Questa linea crea solo un gestore.

Non crea il file. Quello che devi fare è, creare il file (SimleTaskEvents.txt) nella directory "C: /". dopo di ciò, quando esegui il tuo programma, lo stesso programma che hai messo qui, vedrai i log che vengono scritti su di esso.

0

è necessario aggiungere tali importazioni:

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

ovviamente l'ho fatto :) – Han

+0

e non funziona ... – Han

4

Hai bisogno di scrivere nel registro prima

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

e magari controllare questo tutorial

+0

Sì, lo sto facendo attraverso un'altra classe. Dichiaro: – Han

+0

Logger statico finale privato lgs = Logger.getLogger (Logs.class.getName()); – Han

+0

e io uso l'oggetto lgs di. Il problema è che nessun file è stato creato! – Han

0

Usiamo il logger nella nostra applicazione

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(); 
    } 
} 
} 

e questo è i dati in file di proprietà

#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

questo sta usando log4j, ho solo bisogno di scrivere un semplice file di testo. Comunque ho seguito il tutorial del commento precedente e sono in un buon modo penso :) – Han

0

Forse this is quello che ti serve ...

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); 
    } 
} 
Problemi correlati