log4j有两种配置方式,.properties和.xml文件。以Log4j.properties文件为例,以#开头的注释。
log4j.rootLogger指定根logger,是最最重要的一个属性了,它定义日志信息的“输出级别”和“输出目的地”。关键看“=”后面的值,“DEBUG,CONSOLE,A1”这里我们要把它分成两部分:第一个逗号之前的是第一部分,设为OFF可以关闭日志;后面的是第二部分,指定“输出目的地”。可以同时指定多个“输出目的地”,以逗号隔开。具体到上面这一行:它指定的“输出级别”是“DEBUG”;它指定的“输出目的地”是“CONSOLE”和“A1”。
“输出级别”有可选的五个值,分别是DEBUG、INFO、WARN、ERROR、FATAL,它们是由Log4j系统定义的。“输出目的地”就是我们自己定义的了,就在log4j.properties的后面部分,此文件定义的“输出目的地”有CONSOLE、FILE、ROLLING_FILE、SOCKET、LF5_APPENDER、MAIL、DATABASE、A1、im。该文件之所以可作主模板,就是因为它比较全面地定义了各种常见的输出目的地(控制台、文件、电子邮件、数据库等)。
# study website http://blog.163.com/zhangjinping_2000/blog/static/219551282009112613724619/
#error logger config
log4j.appender.errorfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorfile.MaxBackupIndex=365
log4j.appender.errorfile.File = ../logs/seafish-error.log
log4j.appender.errorfile.Threshold = error
log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorfile.layout.ConversionPattern=-[%p] %d{yyyy-MM-dd HH:mm:ss,SSS} [%c] %m%n
#visit logger config
log4j.appender.visitfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.visitfile.MaxBackupIndex=365
log4j.appender.visitfile.File = ../logs/seafish-visit.log
log4j.appender.visitfile.layout=org.apache.log4j.PatternLayout
log4j.appender.visitfile.layout.ConversionPattern=%d{yyyy-MM-dd} %m%n
#stdout logger config
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=-[%p] %d{yyyy-MM-dd HH:mm:ss,SSS} [%c] %m%n
#param is only one. set this package level is error
log4j.logger.com.sf=error
#param is two. set this class level is info and source file is visitfile
log4j.logger.com.custom.logger.Visitlogger=INFO,visitfile
#write the error level info into errorfile;
log4j.rootLogger=error,errorfile
java代码
public class Visitlogger {
// 获取logger的方式,是通过与log4j.properties配置文件模糊匹配的(看这句log4j.logger.com.custom.logger.Visitlogger=INFO,visitfile)
private static Logger visitLog = Logger.getLogger(Visitlogger.class);
/**
* 写日志
* @param loggerName
* @param info
*/
public static void writeVisitFile(String info){
// 统计ip 写入文件中 格式 天 , ip地址, 访问时间。
visitLog.info(info);
}
}