0

I am using log4j in my project. I want to have stdout, a debug logger, and a final report logger. Debug Logger pretty much write debug/info level message. Report would be a different logger only write Info messages. I tried different way, read a lot of samples, I still couldn't figure this out. Either I lose my stdout, or I write all debug to both loggers.

## Root logger option
log4j.rootLogger=DEBUG,stdout,debug_Log,reports_Log

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 [%F:%t:%L] - %m%n


log4j.appender.debug_Log=org.apache.log4j.RollingFileAppender
log4j.appender.debug_Log.File=c:\\debug.log
log4j.appender.debug_Log.MaxFileSize=10MB
log4j.appender.debug_Log.MaxBackupIndex=10
log4j.appender.debug_Log.maxFileSize=10MB 
log4j.appender.debug_Log.layout=org.apache.log4j.PatternLayout
log4j.appender.debug_Log.layout.ConversionPattern=%d-[%t-%F] %-5p %m%n

log4j.appender.reports_Log=org.apache.log4j.FileAppender
log4j.appender.reports_Log.File=c:\\Walmart.log
log4j.appender.reports_Log.layout=org.apache.log4j.PatternLayout
log4j.appender.reports_Log.layout.ConversionPattern=%d %-5p %m%n

log4j.logger.org.springframework=WARN  
log4j.logger.org.apache.component=WARN 
log4j.logger.org.apache.http=WARN
log4j.logger.org.apache.http.impl.conn=WARN
log4j.logger.org.apache.http.impl.client=WARN
log4j.logger.org.apache.http.client=WARN

log4j.logger.debug_Log=DEBUG, debug_Log
log4j.logger.reports_Log=INFO, reports_Log
log4j.logger.stdout=DEBUG, stdout
log4j.additivity.debug_Log=false
log4j.additivity.reports_Log=false
log4j.additivity.stdout=false

My code is here

import org.apache.log4j.Logger;


static final Logger debugLog = Logger.getLogger("debug_Log");
static final Logger resultLog = Logger.getLogger("reports_Log");

public static void main(String[] args) {
    debugLog.info("Welcome to AmzCompareSale application");
    debugLog.debug("DEbugLog debug");

}

Any tips would be appreciated =)

user3037484
  • 25
  • 1
  • 7
  • `log4j.appender.reports_Log.Threshold=INFO`. Now it will ignore DEBUG-level log messages. – Andreas Aug 27 '16 at 04:46
  • Maybe [have a look at this](http://stackoverflow.com/questions/8653548/log4j-priority-value-and-param-name-concept-explanation) to get a better understanding of how loggers and appenders work – Bogdan Aug 27 '16 at 16:49

1 Answers1

0

Let me answer my own question. This post helps a lot to describe what's the difference between logger and appender. I have been linking my code to appender instead of creating logger and make appender attached to it. Without seperate appender and logger, I was printing message to both .log files.

This is what I end up doing.

## Root logger option
log4j.rootLogger=DEBUG
#I want both debugAppender and reportsAppender to print to screen
log4j.logger.debug_Log=INFO, debugAppender, stdout
log4j.logger.reports_Log=INFO, reportsAppender, stdout


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 [%F:%t:%L] - %m%n

log4j.appender.debugAppender=org.apache.log4j.RollingFileAppender
log4j.appender.debugAppender.File=c:\\debug.log
log4j.appender.debugAppender.MaxFileSize=10MB
log4j.appender.debugAppender.MaxBackupIndex=10
log4j.appender.debugAppender.maxFileSize=10MB 
log4j.appender.debugAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.debugAppender.layout.ConversionPattern=%d-[%t-%F] %-5p %m%n

log4j.appender.reportsAppender=org.apache.log4j.FileAppender
log4j.appender.reportsAppender.File=c:\\Walmart.log
log4j.appender.reportsAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.reportsAppender.layout.ConversionPattern=%d %-5p %m%n

#I just want to turn off spring rest template debug logging
log4j.logger.org.springframework=WARN  
log4j.logger.org.apache.component=WARN 
log4j.logger.org.apache.http=WARN
log4j.logger.org.apache.http.impl.conn=WARN
log4j.logger.org.apache.http.impl.client=WARN
log4j.logger.org.apache.http.client=WARN
Community
  • 1
  • 1
user3037484
  • 25
  • 1
  • 7