test configuration
To support three cases log level and policies, log4j.properties has changed as followed.
#=============================================================================
# authorized by Fluency Team, Yonghyun Yoon (yonyoon@indiana.edu)
# last modified Nov 2, 2007
#=============================================================================
#_____________________________________________________________________________
# global configuration : category(logger)
# stdout : console display
# fileout : file record
# log4j.rootLogger --> specifeis logging level for 'stdout'
#_____________________________________________________________________________
log4j.configuration=log4j.properties
log4j.logger.org.knownspace.fluency.logging.domainA=DEBUG, DOMAIN_A
log4j.logger.org.knownspace.fluency.logging.domainB=INFO, DOMAIN_B
log4j.logger.org.knownspace.fluency.logging.domainC=ERROR, DOMAIN_C
#_____________________________________________________________________________
# detail configuation for 'DomainA'
# display location : console
# logging level : DEBUG
#_____________________________________________________________________________
log4j.appender.DOMAIN_A=org.apache.log4j.ConsoleAppender
log4j.appender.DOMAIN_A.layout=org.apache.log4j.PatternLayout
log4j.appender.DOMAIN_A.layout.ConversionPattern=%5p [%t] (%F:%L)- %m%n
#_____________________________________________________________________________
# detail configuation for 'DomainB'
# display location : console
# logging level : INFO
#_____________________________________________________________________________
log4j.appender.DOMAIN_B=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DOMAIN_B.File=domainB.log
log4j.appender.DOMAIN_B.DatePattern='.'yyyy-MM-dd
log4j.appender.DOMAIN_B.layout=org.apache.log4j.PatternLayout
log4j.appender.DOMAIN_B.layout.DateFormat=ISO8601
log4j.appender.DOMAIN_B.layout.TimeZoneID=GMT-8:00
log4j.appender.DOMAIN_B.layout.ConversionPattern=[%d] %-5p %l - %m%n
#_____________________________________________________________________________
# detail configuation for 'DomainC'
# display location : console
# logging level : ERROR
#_____________________________________________________________________________
log4j.appender.DOMAIN_C=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DOMAIN_C.File=domainC.log
log4j.appender.DOMAIN_C.DatePattern='.'yyyy-MM-dd
log4j.appender.DOMAIN_C.layout=org.apache.log4j.PatternLayout
log4j.appender.DOMAIN_C.layout.DateFormat=ISO8601
log4j.appender.DOMAIN_C.layout.TimeZoneID=GMT-8:00
log4j.appender.DOMAIN_C.layout.ConversionPattern=[%p] %c.%t(%L line) ::: [%d{ISO8601}] %m %x %n
Log4jMultiLoggingTest.java is Main class which runs different domains respectively.(DomainA, DomainB, and DomainC)
Log4jMultiLoggingTest.java
public class Log4jMultiLoggingTest { public static void main(String[] argv) { DomainA domainA = new DomainA(); domainA.occurAllLog(); DomainB domainB = new DomainB(); domainB.occurAllLog(); DomainC domainC = new DomainC(); domainC.occurAllLog(); } }
note DomainA.java is under org.knownspace.fluency.logging.domainA package
DomainA .java
package org.knownspace.fluency.logging.domainA; import org.apache.log4j.Logger; public class DomainA { private Logger log = Logger.getLogger(DomainB.class); public void occurAllLog() { log.trace("trace string"); log.debug("debug string"); log.info("info string"); log.warn("warn string"); log.error("error string"); log.fatal("fatal string"); } }
note DomainB.java is under org.knownspace.fluency.logging.domainB package
DomainB.java
package org.knownspace.fluency.logging.domainB; import org.apache.log4j.Logger; public class DomainB { private Logger log = Logger.getLogger(DomainB.class); public void occurAllLog() { log.trace("trace string"); log.debug("debug string"); log.info("info string"); log.warn("warn string"); log.error("error string"); log.fatal("fatal string"); } }
note DomainC.java is under org.knownspace.fluency.logging.domainC package
DomainC.java
package org.knownspace.fluency.logging.domainC; import org.apache.log4j.Logger; public class DomainC { private Logger log = Logger.getLogger(DomainB.class); public void occurAllLog() { log.trace("trace string"); log.debug("debug string"); log.info("info string"); log.warn("warn string"); log.error("error string"); log.fatal("fatal string"); } }
test results
console result for DomainA
DEBUG [main] (DomainA.java:11)- debug string INFO [main] (DomainA.java:12)- info string WARN [main] (DomainA.java:13)- warn string ERROR [main] (DomainA.java:14)- error string FATAL [main] (DomainA.java:15)- fatal string
file result(domainB.log) for DomainB
[2007-11-04 12:20:32,328] INFO org.knownspace.fluency.logging.domainB.DomainB.occurAllLog(DomainB.java:12) - info string [2007-11-04 12:20:32,328] WARN org.knownspace.fluency.logging.domainB.DomainB.occurAllLog(DomainB.java:13) - warn string [2007-11-04 12:20:32,328] ERROR org.knownspace.fluency.logging.domainB.DomainB.occurAllLog(DomainB.java:14) - error string [2007-11-04 12:20:32,328] FATAL org.knownspace.fluency.logging.domainB.DomainB.occurAllLog(DomainB.java:15) - fatal string
file result(domainC.log) for DomainC
[ERROR] org.knownspace.fluency.logging.domainC.DomainC.main(14 line) ::: [2007-11-04 12:20:32,343] error string [FATAL] org.knownspace.fluency.logging.domainC.DomainC.main(15 line) ::: [2007-11-04 12:20:32,343] fatal string