本文根据Log4j的配置属性,编写了用于记录BMBR编码的日志
author: zyumeng
Blog: [url] http://www.cnblogs.com/zyumeng/ [/url]
利用配置文件/conf/CodedDFS.properties(放置在工程conf目录下),分别记录CodedDFS中BMBR的编码速率、解码速率和修复速率。
## CodedDFS.properties for LOGs in CodedDFS project
## # Define the root logger ## # 连接到根日志记录器的日志记录器,设置为INFO级别,在控制台显示,输出在滚动文件 log4j.rootLogger=INFO, stdout, RFA
## # Console config ## # 设置控制台显示ConsoleAppender log4j.appender.stdout=org.apache.log4j.ConsoleAppender # Log4j的输出布局模式(Layout接口) # 这里用的是PatternLayout,可以灵活的制定布局模式 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout # Pattern format: Date LogLevel; LoggerName; LogMessage; # 输出格式:%d-时间;%p-logger级别;%c-类名{两级};%m-调用logger时设定输出内容;%n-换行 log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/ddHH:mm:ss}%p%c{2}:%m%n
## # Rolling File Appender = RFA # Add " RFA " to rootlogger above if you want to use this ## # 设置一个滚动日志文件 RollingFileAppender log4j.appender.RFA=org.apache.log4j.RollingFileAppender # Define the output file is logs/BMBRFileSystem.log # 输出到logs/BMBRFileSystem.log log4j.appender.RFA.File=logs/BMBRFileSystem.log log4j.appender.RFA.MaxFileSize=1000KB # Keep one backup file log4j.appender.RFA.MaxBackupIndex=1 log4j.appender.RFA.layout=org.apache.log4j.PatternLayout log4j.appender.RFA.layout.ConversionPattern=%d{yy/MM/ddHH:mm:ss}%p%c{2}:%m%n
# 对不同的类输出不同的文件
## # BMBREncoder # Output the logs of the BMBREncoder.class alone ## # 让edu.pkusz.codec.BMBR.BMBREncoder中的logger使用log4j.appender.EC所做的配置。 log4j.logger.edu.pkusz.codec.BMBR.BMBREncoder=INFO, EC, stdout
# 自定义的日志默认是同时输出到log4j.rootLogger所配置的日志中的 # 只让它们输出到自己指定的日志中:设置是否同时输出到log4j.rootLogger所配置的日志中 # 设为false就不会输出到其它位置 log4j.additivity.edu.pkusz.codec.BMBR.BMBREncoder=false log4j.appender.EC=org.apache.log4j.RollingFileAppender # Define the output file is logs/BMBREncoder.log log4j.appender.EC.File=logs/BMBREncoder.log log4j.appender.EC.MaxFileSize=1000KB log4j.appender.EC.layout=org.apache.log4j.PatternLayout log4j.appender.EC.layout.ConversionPattern=%d{yy/MM/ddHH:mm:ss}%p%c{2}:%m%n
## # BMBRDecoder # Output the logs of the BMBRDecoder.class alone ## # 让edu.pkusz.codec.BMBR. BMBRDecoder中的logger使用log4j.appender.DC所做的配置。 log4j.logger.edu.pkusz.codec.BMBR.BMBRDecoder=INFO,DC,stdout # 设置不同时输出到log4j.rootLogger所配置的日志中 log4j.additivity.edu.pkusz.codec.BMBR.BMBRDecoder=false log4j.appender.DC=org.apache.log4j.RollingFileAppender # Define the output file is logs/BMBRDecoder.log log4j.appender.DC.File=logs/BMBRDecoder.log log4j.appender.DC.MaxFileSize=1000KB log4j.appender.DC.layout=org.apache.log4j.PatternLayout log4j.appender.DC.layout.ConversionPattern=%d{yy/MM/ddHH:mm:ss}%p%c{2}:%m%n
## # BMBRBlockFixer # Output the logs of the BMBRBlockFixer.class and BMBRRegenerator.class alone ## # 让edu.pkusz.codec.BMBR. BMBRBlockFixer和BMBRRegenerator中的logger # 使用log4j.appender.FB所做的配置。 log4j.logger.edu.pkusz.codec.BMBR.BMBRBlockFixer=INFO,BF,stdout log4j.logger.edu.pkusz.codec.BMBR.BMBRRegenerator=INFO,BF,stdout # 设置不同时输出到log4j.rootLogger所配置的日志中 log4j.additivity.edu.pkusz.codec.BMBR.BMBRBlockFixer=false log4j.additivity.edu.pkusz.codec.BMBR.BMBRRegenerator=false log4j.appender.BF=org.apache.log4j.RollingFileAppender # Define the output file is logs/BMBRBlockFixer.log log4j.appender.BF.File=logs/BMBRBlockFixer.log log4j.appender.BF.MaxFileSize=1000KB log4j.appender.BF.layout=org.apache.log4j.PatternLayout log4j.appender.BF.layout.ConversionPattern=%d{yy/MM/ddHH:mm:ss}%p%c{2}:%m%n |
下面是调用的实例SampleLogger类
package org.apache.hadoop.fs;
import java.io.File;
import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.log4j.PropertyConfigurator; import org.apache.log4j.config.PropertyPrinter;
publicclass LogTester { privatestatic Log log = LogFactory.getLog(LogTester.class); publicstaticvoid main(String[] arg){ // 注意要利用PropertyConfigurator.configure加载日志配置文件,也可使用相对路径 PropertyConfigurator.configure(System.getProperty("user.dir") + File.separator + "conf" + File.separator + "CodedDFS.properties");
log.info("=======================LogTester======================"); log.debug("DEBUG"); log.error("ERROR"); log.info("INFO"); log.warn("WARM"); log.trace("TRACE");
} } |
直接运行SampleLogger.class
运行结果:
因为配置文件中定义的是INFO级别,所以不输出DEBUG和TRACE信息
修改为log4j.rootLogger=DEBUG, stdout, RFA
运行结果:
参考资料: