2012-12-20 13 views
5

Tôi đang cố viết các sự kiện trong tệp nhật ký nhưng không có tệp nào được tạo. Tôi không nhận được lỗi nào cả. Đây là lớp đăng nhập:(Java) ghi sự kiện để đăng nhập tệp văn bản

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

Trong tương lai xin vui lòng gửi thông báo lỗi chính xác của bạn – wlk

+0

Tôi nhận được không có lỗi gì cả. Chỉ không có tệp nào được tạo trong "c: /" – Han

+0

Kiểm tra mã của bạn và nó hoạt động tốt. Vấn đề là ở một nơi khác. – svz

Trả lời

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

Dòng này chỉ tạo ra một handler.

Nó không tạo tệp. Những gì bạn cần làm là, tạo tệp (SimleTaskEvents.txt) trong thư mục "C: /". sau đó khi u thực hiện chương trình của bạn, cùng một chương trình mà bạn đã đặt ở đây, bạn sẽ thấy các bản ghi được ghi vào nó.

0

Bạn cần phải thêm những hàng nhập khẩu:

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

tất nhiên tôi đã làm điều đó :) – Han

+0

và nó không hoạt động ... – Han

4

Bạn cần phải viết vào nhật ký đầu tiên

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

và có thể kiểm tra điều này tutorial

+0

Có Tôi đang làm điều đó thông qua một lớp khác. Tôi tuyên bố: – Han

+0

riêng cuối cùng tĩnh Logger lgs = Logger.getLogger (Logs.class.getName()); – Han

+0

và tôi sử dụng đối tượng lgs hơn. Vấn đề là không có tập tin nào đang được tạo! – Han

0

Chúng tôi đang sử dụng logger trong ứng dụng của chúng tôi như thế này

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

Và đây là các dữ liệu trong tập tin tài sản

#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

này đang sử dụng log4j, tôi chỉ cần viết một tệp văn bản đơn giản. Tuy nhiên tôi theo hướng dẫn của bình luận trước đó và tôi đang ở trong một cách tốt tôi nghĩ :) – Han

0

lẽ this is những gì bạn cần ...

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