Java Tutorial/Log/Log Formatter
Содержание
Create custom formatter
<source lang="java">
import java.util.logging.ConsoleHandler; import java.util.logging.Formatter; import java.util.logging.Handler; import java.util.logging.LogRecord; import java.util.logging.Logger; public class MainClass {
private static Logger logger = Logger.getLogger("SimpleFormatterExample"); private static void logMessages() { logger.info("Line One"); logger.info("Line Two"); } public static void main(String[] args) { logger.setUseParentHandlers(false); Handler conHdlr = new ConsoleHandler(); conHdlr.setFormatter(new Formatter() { public String format(LogRecord record) { return record.getLevel() + " : " + record.getSourceClassName() + " -:- " + record.getSourceMethodName() + " -:- " + record.getMessage() + "\n"; } }); logger.addHandler(conHdlr); logMessages(); }
}</source>
Creating a Custom Formatter for a Logger Handler
<source lang="java">
import java.util.Date; import java.util.logging.FileHandler; import java.util.logging.Formatter; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; class MyHtmlFormatter extends Formatter {
public String format(LogRecord rec) { StringBuffer buf = new StringBuffer(1000); if (rec.getLevel().intValue() >= Level.WARNING.intValue()) { buf.append(""); buf.append(rec.getLevel()); buf.append(""); } else { buf.append(rec.getLevel()); } buf.append(" "); buf.append(rec.getMillis()); buf.append(" "); buf.append(formatMessage(rec)); buf.append("\n"); return buf.toString(); } public String getHead(Handler h) {return "<HTML><HEAD>" + (new Date()) + "</HEAD><BODY>
\n"; } public String getTail(Handler h) { return "</BODY></HTML>\n";
}
} public class Main {
public static void main(String[] argv) throws Exception { Logger logger = Logger.getLogger("com.mycompany"); FileHandler fh = new FileHandler("mylog.html"); fh.setFormatter(new MyHtmlFormatter()); logger.addHandler(fh); logger.setLevel(Level.ALL); logger.severe("my severe message"); logger.info("my info message"); logger.entering("Main class", "myMethod", new Object[] { "para1", "para2" }); }
}</source>
Define your own Custom Formatter
<source lang="java">
import java.util.logging.Formatter; import java.util.logging.LogRecord; public class CustomFormatter extends Formatter {
public synchronized String format(LogRecord record) { String methodName = record.getSourceMethodName(); String message = record.getMessage(); StringBuffer buffer = new StringBuffer(50); buffer.append(methodName); buffer.append("="); buffer.append(message); return buffer.toString(); }
}</source>
Logger with XMLFormatter and FileHandler
<source lang="java">
import java.util.logging.FileHandler; import java.util.logging.Handler; import java.util.logging.Logger; import java.util.logging.XMLFormatter; public class Main {
public static void main(String[] args) throws Exception { Logger logger = Logger.getLogger("my.log"); Handler handler = null; handler = new FileHandler("messages.log"); logger.addHandler(handler); handler.setFormatter(new XMLFormatter()); logger.info("Our first logging message"); logger.severe("Something terrible happened"); }
}</source>
Log HTML formatter
<source lang="java">
import java.util.Date; import java.util.logging.FileHandler; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.LogManager; import java.util.logging.LogRecord; import java.util.logging.Logger; import java.util.logging.XMLFormatter; class HTMLFormatter extends java.util.logging.Formatter {
public String format(LogRecord record) { return ("<tr><td>" + (new Date(record.getMillis())).toString() + "</td><td>" + record.getMessage() + "</td></tr>\n"); } public String getHead(Handler h) {return ("<html>\n <body>\n" + "
Time | Log Message |
}
} public class LoggingHTMLFormatter {
public static void main(String args[]) throws Exception { LogManager lm = LogManager.getLogManager(); Logger parentLogger, childLogger; FileHandler xml_handler = new FileHandler("log_output.xml"); FileHandler html_handler = new FileHandler("log_output.html"); parentLogger = Logger.getLogger("ParentLogger"); childLogger = Logger.getLogger("ParentLogger.ChildLogger"); lm.addLogger(parentLogger); lm.addLogger(childLogger); parentLogger.setLevel(Level.WARNING); childLogger.setLevel(Level.ALL); xml_handler.setFormatter(new XMLFormatter()); html_handler.setFormatter(new HTMLFormatter()); parentLogger.addHandler(xml_handler); childLogger.addHandler(html_handler); childLogger.log(Level.FINE, "This is a fine log message"); childLogger.log(Level.SEVERE, "This is a severe log message"); xml_handler.close(); html_handler.close(); }
}</source>
Set log Formatter
<source lang="java">
import java.util.logging.FileHandler; import java.util.logging.Logger; import java.util.logging.SimpleFormatter; public class MainClass {
private static Logger logger = Logger.getLogger("LogToFile2"); public static void main(String[] args) throws Exception { FileHandler logFile = new FileHandler("LogToFile2.txt"); logFile.setFormatter(new SimpleFormatter()); logger.addHandler(logFile); logger.info("A message logged to the file"); }
}</source>
Setting the Formatter of a Logger Handler
<source lang="java">
import java.util.logging.FileHandler; import java.util.logging.Logger; import java.util.logging.SimpleFormatter; public class Main{
public static void main(String[] argv) throws Exception{ Logger logger = Logger.getLogger("com.mycompany"); FileHandler fh = new FileHandler("mylog.txt"); fh.setFormatter(new SimpleFormatter()); logger.addHandler(fh); // fh = new FileHandler("mylog.xml"); // fh.setFormatter(new XMLFormatter()); // logger.addHandler(fh); // Log a few messages logger.severe("my severe message"); logger.warning("my warning message"); logger.info("my info message"); logger.config("my config message"); logger.fine("my fine message"); logger.finer("my finer message"); logger.finest("my finest message"); }
}</source>
XMLFormatter based Logging
<source lang="java">
import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.XMLFormatter; public class Main {
public static void main(String args[]) throws Exception{ XMLFormatter formatter = new XMLFormatter(); LogRecord record = new LogRecord(Level.INFO, "XML message.."); FileHandler handler = new FileHandler("newxml.xml"); handler.setFormatter(formatter); handler.publish(record); handler.flush(); }
}</source>