$show=/label

Java 8 Util Logging - Loading logging.properties With Log Levels

SHARE:

A quick guide on How to load the logging.properties file in Java using Java util logging library. Example to load from classpath with LogManger class.

1. Overview

In this article, You'll learn how to load and set up the logging.properties file in java using Java Util Logging Library. Basically, Logging api helps to write the application activities and several variables values into a file as per the application.

Basically, The logging concepts works based on the log levels and mainly configuration given inside the logging.properties.

Logs information is displayed based on the log levels propery. If you give log level "debug" then all the info such as debug, info, warn, error and fatal. All log content is written to the log file or console.

Typically, the application log file name will be as "application.log" or "app.log" or "server.log". This file naming convention will be changing from company to company.

Java 8 added easy trick to use Java Logging api instantly. All application uses the log4j api for logging.

Java 8 Util Logging - Loading logging.properties With Log Levels


2. Loading logging.properties From Absolute Path

First, Create a sample logging.properties file as below with the console file appender and log level is INFO.

handlers= java.util.logging.ConsoleHandler

.level= INFO
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

com.javaprogramto.logging.level=INFO

This file placed under the folder "/Users/CoreJava/src/main/resources/custom/" which is not the application classpath. So, to tell to the util logger, you must set logger properties file location to system property "java.util.logging.config.file". So that Logger util api knows the location of the property file to be loaded.
package com.javaprogramto.logging.util;

import java.util.logging.Logger;

public class LoadLoggingPropertiesFIle {

    private static Logger logger;


    public static void main(String[] args) {

        logger.info("Hello, I am info logger.");

        logger.warning("Hello, no date is provided. So, taking the system date as DOJ");

        logger.severe("Error message. Can not connect to the service DateAPI.");

    }

    static {

        // Setting the log file location to the system varaible.
        System.setProperty("java.util.logging.config.file",
                "/Users/CoreJava/src/main/resources/custom/logging.properties");


        logger = Logger.getLogger(LoadLoggingPropertiesFIle.class.getName());
    }
}

Output:
Aug 10, 2020 11:58:54 AM com.javaprogramto.logging.util.LoadLoggingPropertiesFIle main
INFO: Hello, I am info logger.
Aug 10, 2020 11:58:54 AM com.javaprogramto.logging.util.LoadLoggingPropertiesFIle main
WARNING: Hello, no date is provided. So, taking the system date as DOJ
Aug 10, 2020 11:58:54 AM com.javaprogramto.logging.util.LoadLoggingPropertiesFIle main
SEVERE: Error message. Can not connect to the service DateAPI.

Look at the logger console output which is pretty easy to understand. It starts with the time that log has been generated. Even if you look at after a few days, still you can understand the error event that happened.

If the location is set to the property does not exist then it will not throw any error just ignores the logger object.

In the logging.properties file we have given the log level as "com.javaprogramto.logging.level=INFO" so that we are seeing all the logs levels in the console.

Let us change it to "com.javaprogramto.logging.level=SEVERE". Now we should see only the error messages.

let us run the code and see the output.
Aug 10, 2020 12:06:56 PM com.javaprogramto.logging.util.LoadLoggingPropertiesFIle main
SEVERE: Error message. Can not connect to the service DateAPI.

3. Loading logging.properties From Classpath


Next, let us keep the logging.properties file under the application classpath.

Application classpath: src/main/resources/logging.properties
handlers= java.util.logging.ConsoleHandler
.level= INFO
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

com.javaprogramto.logging.level=SEVERE
Now, You should not use the absolute path to load this file using a system property. Logging api provides another way to load the file classpath using it's api classes and methods.

Understand now, how to get the file path from classloader api.
package com.javaprogramto.logging.util;

import java.util.logging.Logger;

public class LoadLoggingPropertiesFIleFromClassPath {

    private static Logger logger;


    public static void main(String[] args) {

        logger.info("Hello, I am info logger.");

        logger.warning("Hello, no date is provided. So, taking the system date as DOJ");

        logger.severe("Error message. Can not connect to the service DateAPI.");

    }

    static {

        // loading the file location.
        String location = LoadLoggingPropertiesFIleFromClassPath.class.getClassLoader().getResource("logging.properties").getFile();
        System.setProperty("java.util.logging.config.file", location);

        logger = Logger.getLogger(LoadLoggingPropertiesFIleFromClassPath.class.getName());
    }
}

Output:
Aug 10, 2020 12:13:47 PM com.javaprogramto.logging.util.LoadLoggingPropertiesFIleFromClassPath main
SEVERE: Error message. Can not connect to the service DateAPI.

4. java.util.logging.logger configuration example with LogManager From Classpath in Java 8.


In the above approach, We are still using the system property and this is not a good practice in the real-time application so it good logging framework to look at the application classpath using LogManager.readConfiguration() method.

Create a util method that will create a logger instance and returns each class wherever we are invoking it.

See the below code is written for the real-time application. It just loads the files classpath and needs to provide only once the log file name.
package com.javaprogramto.logging.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.logging.LogManager;
import java.util.logging.Logger;

public class LoadLoggingPropertiesFIleLogManger {

    private static Logger logger = getLogger(LoadLoggingPropertiesFIleLogManger.class);


    public static void main(String[] args) {

        logger.info("Hello, I am info logger.");

        logger.warning("Hello, no date is provided. So, taking the system date as DOJ");

        logger.severe("Error message. Can not connect to the service DateAPI.");

    }

    private static Logger getLogger(Class classObject) {

        InputStream stream = classObject.getClassLoader().getResourceAsStream("logging.properties");
        try {
            LogManager.getLogManager().readConfiguration(stream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return Logger.getLogger(LoadLoggingPropertiesFIleLogManger.class.getName());
    }
}

This program produces the output as same as loading from the system property.

5. Conclusion


In this article, You've seen how to load the logging.properties from application classpath and absolute external path using system variable "java.util.logging.config.file".

Finally, Example program to load from classpath using LogManager.readConfiguration() in Java 8.

All examples are shown are over GitHub.




COMMENTS

BLOGGER

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,16,Arrays,7,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,5,Collections,22,Collector,1,Command Line,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,81,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,4,Dictionary,1,Difference,1,Download,1,Eclipse,2,Efficiently,1,Error,1,Errors,1,Exception,1,Exceptions,3,Fast,1,Files,9,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,4,Grant,1,Grep,1,HashMap,1,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,5,Iterate,2,Jackson API,3,Java,29,Java 10,1,Java 11,5,Java 12,5,Java 13,2,Java 14,2,Java 8,66,Java 8 Difference,2,Java 8 Stream Conversions,2,java 8 Stream Examples,3,Java 9,1,Java Conversions,11,Java Design Patterns,1,Java Files,1,Java Program,2,Java Programs,65,java.lang,5,java.util. function,1,jQuery,1,Kotlin,10,Kotlin Conversions,3,Kotlin Programs,6,Lambda,1,lang,29,Leap Year,1,live updates,1,Logging,1,Mac OS,2,Math,1,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,1,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,21,String,58,String Programs,9,String Revese,1,Swing,1,System,1,Tags,1,Threads,10,Tomcat,1,Tomcat 8,1,Troubleshoot,16,Unix,2,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: Java 8 Util Logging - Loading logging.properties With Log Levels
Java 8 Util Logging - Loading logging.properties With Log Levels
A quick guide on How to load the logging.properties file in Java using Java util logging library. Example to load from classpath with LogManger class.
https://1.bp.blogspot.com/-YK2DtrY7o1E/XzDzjuxVxgI/AAAAAAAAC44/tj_x5HexpTUouiSseAeFCENQ5SvIB4g9wCLcBGAsYHQ/w640-h343/%2BJava%2B8%2BUtil%2BLogging%2B-%2BLoading%2Blogging.properties%2BWith%2BLog%2BLevels.png
https://1.bp.blogspot.com/-YK2DtrY7o1E/XzDzjuxVxgI/AAAAAAAAC44/tj_x5HexpTUouiSseAeFCENQ5SvIB4g9wCLcBGAsYHQ/s72-w640-c-h343/%2BJava%2B8%2BUtil%2BLogging%2B-%2BLoading%2Blogging.properties%2BWith%2BLog%2BLevels.png
JavaProgramTo.com
https://www.javaprogramto.com/2020/08/java-util-logging-loading-logging-properties.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2020/08/java-util-logging-loading-logging-properties.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content