Simplest way to generate logs in Java using java.util.logging's SimpleFormatter, XMLFormatter

Java comes with lots of utilities. In this tutorial we will go over simplest way to generate log files using SimpleFormatter and XMLFormatter.

On Crunchify, we have published few tutorials about logging some time back.

Today I was working on setting up Elastic FileBeats on my host and wanted to generate logs which can be picked up by Elastic FileBeats at runtime.

I’ve quickly created log generated utility and wanted to share the same with you all. We will use java’s inbuilt java.util.logging utility.

CrunchifyLogGenerator.java

package crunchify.com.tutorial;

import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
import java.util.logging.XMLFormatter;

/**
 * @author Crunchify.com 
 * Version: 1.0 
 * Simplest way to generate logs files using SimpleFormatter and XMLFormatter
 */

public class CrunchifyLogGenerator {

        public static void main(String[] args) {

                // A Logger object is used to log messages for a specific system or application
                // component. Loggers are normally named, using a hierarchical dot-separated
                // namespace. Logger names can be arbitrary strings, but they should normally be
                // based on the package name or class name of the logged component, such as
                // java.net or javax.swing. In addition it is possible to create "anonymous"
                // Loggers that are not stored in the Logger namespace.
                Logger crunchifyLogger = Logger.getLogger("crunchifyLog");

                // Simple file logging Handler.
                FileHandler crunchifyFileHandler;
                
                try {

                        // We are setting handler to true = append data to file
                        crunchifyFileHandler = new FileHandler("/Users/ashah/crunchify/crunchify-log.log", true);
                        crunchifyLogger.addHandler(crunchifyFileHandler);

                        // Print a brief summary of the LogRecord in a human readable format.
                        SimpleFormatter formatter = new SimpleFormatter();      
                        crunchifyFileHandler.setFormatter(formatter);
                        
                        // Format a LogRecord into a standard XML format. Uncomment below 2 lines to see XML result.
        
                        // XMLFormatter formatter2 = new XMLFormatter();
                        // crunchifyFileHandler.setFormatter(formatter2);

                        int n = 1;

                        // infinite loop
                        while (true) {
                                // Log an INFO message.
                                crunchifyLogger.info("Adding Crunchify Log line: " + n);
                                Thread.sleep(1000);
                                n++;
                        }
                } catch (SecurityException e) {
                        e.printStackTrace();
                } catch (IOException e) {
                        e.printStackTrace();
                } catch (InterruptedException e) {
                        e.printStackTrace();
                }

        }

}

As you see in above program, I’ve commented out below 2 lines. Once you run above program, uncomment below two lines and you will see XML result output.

// XMLFormatter formatter2 = new XMLFormatter();
// crunchifyFileHandler.setFormatter(formatter2);

Just run above program as Java application and you will see below lines added to your specified log file.

Eclipse console output:

Jan 27, 2019 7:04:11 PM crunchify.com.tutorial.CrunchifyLogGenerator main
INFO: Adding Crunchify Log line: 3
Jan 27, 2019 7:04:12 PM crunchify.com.tutorial.CrunchifyLogGenerator main
INFO: Adding Crunchify Log line: 4
Jan 27, 2019 7:04:13 PM crunchify.com.tutorial.CrunchifyLogGenerator main
INFO: Adding Crunchify Log line: 5
Jan 27, 2019 7:04:14 PM crunchify.com.tutorial.CrunchifyLogGenerator main
INFO: Adding Crunchify Log line: 6
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
<record>
  <date>2019-01-27T19:07:37</date>
  <millis>1548637657211</millis>
  <sequence>0</sequence>
  <logger>crunchifyLog</logger>
  <level>INFO</level>
  <class>crunchify.com.tutorial.CrunchifyLogGenerator</class>
  <method>main</method>
  <thread>1</thread>
  <message>Adding Crunchify Log line: 1</message>
</record>
<record>
  <date>2019-01-27T19:07:38</date>
  <millis>1548637658233</millis>
  <sequence>1</sequence>
  <logger>crunchifyLog</logger>
  <level>INFO</level>
  <class>crunchify.com.tutorial.CrunchifyLogGenerator</class>
  <method>main</method>
  <thread>1</thread>
  <message>Adding Crunchify Log line: 2</message>
</record>
<record>
  <date>2019-01-27T19:07:39</date>
  <millis>1548637659236</millis>
  <sequence>2</sequence>
  <logger>crunchifyLog</logger>
  <level>INFO</level>
  <class>crunchify.com.tutorial.CrunchifyLogGenerator</class>
  <method>main</method>
  <thread>1</thread>
  <message>Adding Crunchify Log line: 3</message>
</record>
<record>
  <date>2019-01-27T19:07:40</date>
  <millis>1548637660244</millis>
  <sequence>3</sequence>
  <logger>crunchifyLog</logger>
  <level>INFO</level>
  <class>crunchify.com.tutorial.CrunchifyLogGenerator</class>
  <method>main</method>
  <thread>1</thread>
  <message>Adding Crunchify Log line: 4</message>
</record>

I hope you find this util helpful for your project. If you face any problem running this then let me know.

The post Simplest way to generate logs in Java using java.util.logging’s SimpleFormatter and XMLFormatter appeared first on Crunchify.