2013-05-20 6 views
6

पैदा मैं जावा प्रवेश एपीआई पर ट्यूटोरियल के माध्यम से जाने की कोशिश की (Netbeans, ग्रहण में परीक्षण के साथ ही cmd से जार चल रहा है)। लॉग संदेश केवल कंसोल में प्रदर्शित होते हैं।जावा लॉगिंग API खाली लॉग फाइल

प्रोजेक्ट में उपयोग की जाने वाली फ़ाइलें निम्न हैं। इस तरह के व्यवहार का कारण क्या हो सकता है?

परियोजना: de.vogella.logger

MyHtmlFormatter.java

package de.vogella.logger; 

import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.logging.Formatter; 
import java.util.logging.Handler; 
import java.util.logging.Level; 
import java.util.logging.LogRecord; 

//This custom formatter formats parts of a log record to a single line 
class MyHtmlFormatter extends Formatter { 
    // This method is called for every log records 
    public String format(LogRecord rec) { 
    StringBuffer buf = new StringBuffer(1000); 
    // Bold any levels >= WARNING 
    buf.append("<tr>"); 
    buf.append("<td>"); 

    if (rec.getLevel().intValue() >= Level.WARNING.intValue()) { 
     buf.append("<b>"); 
     buf.append(rec.getLevel()); 
     buf.append("</b>"); 
    } else { 
     buf.append(rec.getLevel()); 
    } 
    buf.append("</td>"); 
    buf.append("<td>"); 
    buf.append(calcDate(rec.getMillis())); 
    buf.append(' '); 
    buf.append(formatMessage(rec)); 
    buf.append('\n'); 
    buf.append("<td>"); 
    buf.append("</tr>\n"); 
    return buf.toString(); 
    } 

    private String calcDate(long millisecs) { 
    SimpleDateFormat date_format = new SimpleDateFormat("MMM dd,yyyy HH:mm"); 
    Date resultdate = new Date(millisecs); 
    return date_format.format(resultdate); 
    } 

    // This method is called just after the handler using this 
    // formatter is created 
    public String getHead(Handler h) { 
    return "<HTML>\n<HEAD>\n" + (new Date()) 
     + "\n</HEAD>\n<BODY>\n<PRE>\n" 
     + "<table width=\"100%\" border>\n " 
     + "<tr><th>Level</th>" + 
     "<th>Time</th>" + 
     "<th>Log Message</th>" + 
     "</tr>\n"; 
    } 

    // This method is called just after the handler using this 
    // formatter is closed 
    public String getTail(Handler h) { 
    return "</table>\n </PRE></BODY>\n</HTML>\n"; 
    } 
} 

MyLogger.java

package de.vogella.logger; 

import java.io.IOException; 
import java.util.logging.FileHandler; 
import java.util.logging.Formatter; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import java.util.logging.SimpleFormatter; 

public class MyLogger { 
    static private FileHandler fileTxt; 
    static private SimpleFormatter formatterTxt; 

    static private FileHandler fileHTML; 
    static private Formatter formatterHTML; 

    static public void setup() throws IOException { 

    // Get the global logger to configure it 
    Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); 

    logger.setLevel(Level.INFO); 
    fileTxt = new FileHandler("Logging.txt"); 
    fileHTML = new FileHandler("Logging.html"); 

    // Create txt Formatter 
    formatterTxt = new SimpleFormatter(); 
    fileTxt.setFormatter(formatterTxt); 
    logger.addHandler(fileTxt); 

    // Create HTML Formatter 
    formatterHTML = new MyHtmlFormatter(); 
    fileHTML.setFormatter(formatterHTML); 
    logger.addHandler(fileHTML); 
    } 
} 

UseLogger.java

package de.vogella.logger.test; 

import java.io.IOException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

import de.vogella.logger.MyLogger; 

public class UseLogger { 
    // Always use the classname, this way you can refactor 
    private final static Logger LOGGER = Logger.getLogger(UseLogger.class 
     .getName()); 

    public void doSomeThingAndLog() { 
    // Image here some real work 

    // Now we demo the logging 

    // Set the LogLevel to Severe, only severe Messages will be written 
    LOGGER.setLevel(Level.SEVERE); 
    LOGGER.severe("Info Log"); 
    LOGGER.warning("Info Log"); 
    LOGGER.info("Info Log"); 
    LOGGER.finest("Really not important"); 

    // Set the LogLevel to Info, severe, warning and info will be written 
    // Finest is still not written 
    LOGGER.setLevel(Level.INFO); 
    LOGGER.severe("Info Log"); 
    LOGGER.warning("Info Log"); 
    LOGGER.info("Info Log"); 
    LOGGER.finest("Really not important"); 
    } 

    public static void main(String[] args) { 
    UseLogger tester = new UseLogger(); 
    try { 
     MyLogger.setup(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     throw new RuntimeException("Problems with creating the log files"); 
    } 
    tester.doSomeThingAndLog(); 
    } 
} 

उत्तर

8

बदलें निम्न पंक्ति (विधिमें):

// Get the global logger to configure it 
Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); 

साथ:

// Get the global logger to configure it 
Logger logger = Logger.getLogger(""); 

अधिक देखें:

+0

बहुत बहुत धन्यवाद! :) – endriu

+0

@endriu आपका स्वागत है! ;) –

संबंधित मुद्दे