Java log exampleLogrecord filterimport java. util. logging. filter; import java. util. logging. level; import java. util. logging. logRecord; import java. util. logging. logger; public class SimpleFilter {private static Logger logger = Logger. getLogger ("SimpleFilter"); static class Duck {}; static class Wombat {}; static void sendLogMessages () {logger. log (Level. WARNING, "Aduck in the house! ", New Duck (); logger. log (Level. WARNING," A Wombat at large! ", NewWombat ();} public static void main (String [] args) {sendLogMessages (); logger. setFilter (newFilter () {public boolean isLoggable (LogRecord record) {Object [] params = record. getParameters (); if (params = null) return true; // No parameters if (record. getParameters () [0] instanceof Duck) return true; // Only log Ducks return false ;}}); logger.info ("After setting filter .. "); sendLogMessages ();} Output: Aug 28,2013 11:46:04 AM SimpleFilter sendLogMessagesWARNING: A duck in the house! Aug 28,2013 11:46:04 AM SimpleFilter sendLogMessagesWARNING: A Wombat at large! Aug 28,2013 11:46:04 AM SimpleFilter mainINFO: After setting filter .. Aug 28,2013 11:46:04 AM SimpleFilter sendLogMessagesWARNING: A duck in the house! Note: The isLoggable method can be used to filter logrecord objects. 2. simple for Formatter Exampleimport 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 SimpleFormatterExample {private static Logger logger = Logger. getLogger ("SimpleFormatterExample"); private static void logMessages () {logger.info ("Line One"); logger.info ("Line Tw ") O ");} 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 () ;}} O Utput: INFO: SimpleFormatterExample-:-logMessages-:-Line OneINFO: SimpleFormatterExample-:-logMessages-:-Line Two Note: You can format the output log format. 3. format log output by overriding tostring () function, import java. util. logging. level; import java. util. logging. logRecord; public class PrintableLogRecord extends LogRecord {public PrintableLogRecord (Level level, String str) {super (level, str);} public StringtoString () {String result = "Level <" + getLevel () + "> \ n" + "LoggerName <" + getLoggerName () + "> \ n" + "Message <" + getMessage () + "> \ n" + "CurrentMillis <" + getMillis () + "> \ n" + "Params"; Object [] objParams = getParameters (); if (objParams = null) result + = "<null> \ n "; else for (int I = 0; I <objParams. length; I ++) result + = "Param # <" + I + "value" + objParams [I]. toString () + "> \ n"; result + = "ResourceBundle <" + getResourceBundle () + "> \ nResourceBundleName <" + getResourceBundleName () + "> \ nSequenceNumber <" + getSequenceNumber () + "> \ nSourceClassName <" + getSourceClassName () + "> \ nSourceMethodName <" + getSourceMethodName () + "> \ nThreadId <" + getThreadID () + "> \ nThrown <" + getThrown () + ">"; return result ;} public static void main (String [] args) {PrintableLogRecord logRecord = new PrintableLogRecord (Level. FINEST, "SimpleLog Record"); System. out. println (logRecord) ;}} Output: level <FINEST> LoggerName <null> Message <SimpleLog Record> CurrentMillis <1377662640451> Params <null> ResourceBundle <null> ResourceBundleName <null> SequenceNumber <0> SourceClassName <null> SourceMethodName <null> ThreadId <10> Thrown <null> 4. email logimport java. util. logging. *; import java. io. *; import java. util. properties; import javax. mail. *; import javax. mail. internet. *; public class EmailLogger {private static Logger logger = Logger. getLogger ("EmailLogger"); public static void main (String [] args) throws Exception {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); logger. addHandler (new FileHandler ("EmailLoggerOutput. xml "); logger. addHandler (new MailingHandler (); logger. log (Level. INFO, "Testing Multiple Handlers", "SendMailTrue") ;}}// A handler that sends mail messagesclass MailingHandler extends Handler {public void publish (LogRecord record) {Object [] params = record. getParameters (); if (params = null) return; // Send mail only if the parameter is true if (params [0]. equals ("SendMailTrue") {new MailInfo ("bruce@theunixman.com", new String [] {"bruce@theunixman.com"}, "smtp.theunixman.com", "Test Subject", "Test Content "). sendMail () ;}} public void close () {} public void flush () {}} class MailInfo {private String fromAddr; private String [] toAddr; private String serverAddr; private String subject; private String message; public MailInfo (String from, String [] to, String server, String subject, String message) {fromAddr = from; toAddr =; serverAddr = server; this. subject = subject; this. message = message;} public void sendMail () {try {Properties prop = new Properties (); prop. put ("mail. smtp. host ", serverAddr); Session session = Session. getDefaultInstance (prop, null); session. setDebug (true); // Create a message Message mimeMsg = new MimeMessage (session); // Set the from and to address Address addressFrom = new InternetAddress (fromAddr); mimeMsg. setFrom (addressFrom); Address [] to = new InternetAddress [toAddr. length]; for (int I = 0; I <toAddr. length; I ++) to [I] = new InternetAddress (toAddr [I]); mimeMsg. setRecipients (Message. recipientType. TO, to); mimeMsg. setSubject (subject); mimeMsg. setText (message); Transport. send (mimeMsg);} catch (Exception e) {throw new RuntimeException (e );}}}