Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Configuring SLF4J/Logback for a Standalone App

DZone's Guide to

Configuring SLF4J/Logback for a Standalone App

Configuring SLF4J/Logback for a Java SE app doesn't have to be a nightmare. In fact, there's already a library out there that does the initialization for you.

· Java Zone
Free Resource

Learn how to troubleshoot and diagnose some of the most common performance issues in Java today. Brought to you in partnership with AppDynamics.

Most examples of SLF4J/Logback you can find on the Internet are about how web applications are configured. But if you have a command line or JavaFX application, you’ll require a different setup. Most probably, you want a local ‘logback.xml’ that is located in your application’s folder or in the home directory of the user. But how do you configure SLF4J/Logback for a Java SE application?

The good news is that there is already a tiny library that does the trick: ext4logback. It allows you simply to specify the location of your ‘logback.xml’ and does all the initialization for you. It also creates a default logback XML configuration if no file exists at startup.

Simply add the dependency to your Maven POM:

<dependency>
    <groupId>org.fuin</groupId>
    <artifactId>ext4logback</artifactId>
    <version>0.2.0</version>
</dependency>


Then you can just initialize the log in your applications ‘main’ method:

/**
 * Starts the application.
 * 
 * @param args
 *            Only optional argument is the 'logback.xml' file path and
 *            name. If no argument is provided it's assumed that the file name 
 *            is 'logback.xml' and it's in the current directory.
 */
public static void main(final String[] args) {
    try {
        // Initializes Logback by reading the XML config file.
        // If the file does not exist, it will be created with some defaults.
        // This is a convenience method that directly uses the main method's arguments.
        new LogbackStandalone().init(args, new NewLogConfigFileParams("your.app.package", "myapp"));
        LOG.info("Application running...");
        // Your code goes here...
        System.exit(0);
    } catch (RuntimeException ex) {
        ex.printStackTrace(System.err);
        System.exit(1);
    }
}


Understand the needs and benefits around implementing the right monitoring solution for a growing containerized market. Brought to you in partnership with AppDynamics.

Topics:
java ,logging ,jvm ,sl4j ,tutorial

Published at DZone with permission of Michael Schnell, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}