Java Tutorial/Log/Log Formatter

Материал из Java эксперт
Перейти к: навигация, поиск

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" + "\n\n");
 }
 public String getTail(Handler h) {
return ("
TimeLog Message
\n</body>\n</html>");
 }

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