EduArn is your learning hub for AI, Cloud Computing, and DevOps tools and technologies. Explore detailed guides, practical examples, and real-world use cases of artificial intelligence platforms, cloud services, automation tools, CI/CD pipelines, containers, Kubernetes, infrastructure as code, and modern IT solutions. Learn how emerging technologies are transforming software development, deployment, and business operations while building your technical skills for the future.
Showing posts with label Logging. Show all posts
Showing posts with label Logging. Show all posts
LOGGER.isDebugEnabled() Example Java
Why LOGGER.isDebugEnabled() condition need to check in all implementation of LOG messages?
We all know logger bring app slowness if unnecessary, message will log in place, if we implement as mention below. We can avoid/control on logging message:
e.g.:-
protected static final Logger LOG = Logger.getLogger(TutorialByExampleJavaLogger.class);
Make sure that whenever using LOG messages, check with LOGGER.isDebugEnabled() flag, so that when debugger is disabled, logs won't get printed to the log files.
e.g.:-
if(LOG. isDebugEnabled())
{ /* print your log messages as you want to print*/
LOG.info("Info type message") ;
//OR
LOG.debug("Debug type message");
}
Feel free put your point of view if any....!!!
Log4j Logging in Java
Overview:
Log4j is an open source project maintained by the Apache Foundation. It is available for many programming languages other than Java as well, such as C, C++, C#, and others.
In any application, maintaining the logs, and it's implementation is on and off required either by db log or logger file. Some time due to bad implementation of logger, application will slow down. But if there is any failure even though in live application, We can easily trace it out while enabling the debugging.
Hardware/Software requirement:
JDK (using 1.7)
Eclipse or any editor.
log4j-1.2.17.jar
Operating System
Log4j differentiates five such log levels (in ascending order): DEBUG, INFO, WARN, ERROR, FATAL, NONE. A logger set to NONE will never be triggered.
In above image, a logger set to the DEBUG level will report any event that is passed to it, a logger set to FATAL will only report events of level FATAL.
Example:
1. Create the java project in eclipse:
File > New > Java Project > Next > Project Name: log4jbycorejava > Next > Finished.
2. Right click on the src > New > class >Package : log4jbycorejava > name: Log4JCoreJavaSample > Finished
3. Log4JCoreJavaSample .java
package log4jbycorejava;
import org.apache.log4j.Logger;
public class Log4JCoreJavaSample {
final static Logger logger = Logger.getLogger(Log4JCoreJavaSample.class);
public void callMeInAppInfo(String parameter) {
if (logger.isInfoEnabled()) {
logger.info("This is info : " + parameter);
}
}
public void callMeInAppWarn(String parameter) {
if (logger.isWarnEnabled()) {
logger.warn("This is warn : " + parameter);
}
}
public void callMeInAppDebug(String parameter) {
if (logger.isDebugEnabled()) {
logger.debug("This is Debug : " + parameter);
}
}
public void callMeInAppError(String parameter) {
if (logger.isErrorEnabled()) {
logger.error("This is error : " + parameter);
}
}
public void callMeInAppFatal(String parameter) {
if (logger.isFatalEnabled()) {
logger.fatal("This is fatal : " + parameter);
}
}
}
4. Right click on the src > New > class > Package : log4jbycorejava > name: MainApp > Finished
MainApp.java
package log4jbycorejava;
public class MainApp {
public static void main(String[] args) {
Log4JCoreJavaSample objLog4JCoreJavaSample = new Log4JCoreJavaSample();
objLog4JCoreJavaSample.callMeInAppInfo("Log4JCoreJavaSample by Info");
objLog4JCoreJavaSample.callMeInAppWarn("Log4JCoreJavaSample by Warn");
objLog4JCoreJavaSample.callMeInAppDebug("Log4JCoreJavaSample by Debug");
objLog4JCoreJavaSample.callMeInAppError("Log4JCoreJavaSample by Error");
objLog4JCoreJavaSample.callMeInAppFatal("Log4JCoreJavaSample by Fatel");
}
}
5. Right click on the src > New > File > File name: log4j.properties > Finished.
log4j.properties
###### LOG4J SETTINGS ####################################################
# Log4J Settings
###########################################################################
log4j.rootLogger=DEBUG, stdout, file
# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=c:\\log4j-application.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=2
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
6. Add the log4j-x.x.x.jar file in project. Download from http://logging.apache.org
7. Directory structure look like below
8. Run it. Right Click on the MainApp.java > Run As > Java Application.
9. Console output and file creation in c:\log4j-application
2015-02-06 16:05:57 INFO Log4JCoreJavaSample:12 - This is info : Log4JCoreJavaSample by Info
2015-02-06 16:05:57 WARN Log4JCoreJavaSample:20 - This is warn : Log4JCoreJavaSample by Warn
2015-02-06 16:05:57 DEBUG Log4JCoreJavaSample:28 - This is Debug : Log4JCoreJavaSample by Debug
2015-02-06 16:05:57 ERROR Log4JCoreJavaSample:36 - This is error : Log4JCoreJavaSample by Error
2015-02-06 16:05:57 FATAL Log4JCoreJavaSample:44 - This is fatal : Log4JCoreJavaSample by Fatel
10. Errors: Chang the value of
log4j.appender.file.File=c:\\log4j-application.log
to
log4j.appender.file.File=d:\\log4j-application.log
11. Run it for error. Right Click on the MainApp.java > Run As > Java Application.
Error: No file will created in d: as drive not exist in my system.
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: d:\log4j-application.log (The device is not ready)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
at java.io.FileOutputStream.<init>(FileOutputStream.java:136)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:207)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
at org.apache.log4j.Logger.getLogger(Logger.java:117)
at log4jbycorejava.Log4JCoreJavaSample.<clinit>(Log4JCoreJavaSample.java:7)
at log4jbycorejava.MainApp.main(MainApp.java:5)
2015-02-06 16:11:41 INFO Log4JCoreJavaSample:12 - This is info : Log4JCoreJavaSample by Info
2015-02-06 16:11:41 WARN Log4JCoreJavaSample:20 - This is warn : Log4JCoreJavaSample by Warn
2015-02-06 16:11:41 DEBUG Log4JCoreJavaSample:28 - This is Debug : Log4JCoreJavaSample by Debug
2015-02-06 16:11:41 ERROR Log4JCoreJavaSample:36 - This is error : Log4JCoreJavaSample by Error
2015-02-06 16:11:41 FATAL Log4JCoreJavaSample:44 - This is fatal : Log4JCoreJavaSample by Fatel
How to change the color of console?
We can achieved by ANSIConsoleAppender and adding value of log4j.appender.CONSOLE.warnColor=34;2
Must watch both videos:
Just put your point of view if any.
Don't be over smart in front of your near and dear, you are by born so no need to show them!
Subscribe to:
Posts (Atom)
