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.
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
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.
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
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
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.
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.
No comments:
Post a Comment
Please do not add any spam links in the comments section.