Most examples for 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 to configure such a 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); } }