配置(log4j.properties)
log4j.rootLogger = debug,stdout,D,E,DB
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
#### change to info in deployed env.###
log4j.appender.stdout.Threshold = DEBUG
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=E://logs/log.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E:/testlog/logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = INFO
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出warn 级别以上的日志到=E://logs/warn.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E:/testlog/logs/warn.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = WARN
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.DB = org.apache.log4j.DailyRollingFileAppender
log4j.appender.DB.File =E:/testlog/logs/error.log
log4j.appender.DB.Append = true
log4j.appender.DB.Threshold = ERROR
log4j.appender.DB.layout = org.apache.log4j.PatternLayout
log4j.appender.DB.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
###指定类的log输出
#使用方法
##Logger logger = LoggerFactory.getLogger("Single");
log4j.logger.Single= debug,single
log4j.additivity.Single= false
log4j.appender.single=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.Single.MaxFileSize=1MB
log4j.appender.single.File=E:/testlog/logs/single.log
log4j.appender.single.Append = true
log4j.appender.single.Threshold = INFO
log4j.appender.single.layout=org.apache.log4j.PatternLayout
log4j.appender.single.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
#第三方jar包log输出级别
log4j.logger.org.springframework =ERROR
log4j.logger.org.quartz=ERROR
log4j.logger.org.apache.zookeeper=ERROR
log4j.logger.com.alibaba.dubbo=ERROR
#值得注意的是rocketmq自定义的log,并不是使用的包名
log4j.logger.RocketmqRemoting=warn
log4j.logger.RocketmqClient=warn
log4j.logger.RocketmqConsole=warn
Demo
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class KafproducerApplication {
static Logger logger = LoggerFactory.getLogger(KafproducerApplication.class);
static Logger log= LoggerFactory.getLogger("Single");
public static void main(String[] args) {
ConfigurableApplicationContext run =SpringApplication.run(KafproducerApplication.class, args);
logger.info("info");
logger.error("error");
logger.debug("debug");
logger.warn("warn");
log.info("this is single");
log.error("error");
}
}
配置解析
日志记录的优先级分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG。
Appender:日志信息输出目的地r, 负责控制日志记录操作的输出。 org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
Layout :负责格式化Appender的输出。 org.apache.log4j.HTMLLayout(以HTML表格形式),
org.apache.log4j.PatternLayout(灵活布局),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
Threshold:指定日志消息的输出最低层次
File:指定输出文件路径及名称
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动
MaxBackupIndex=2:指定可以产生的滚动文件的最大数
由于spring-boot自带的log,所以会有log无法输出的文件的问题,使用:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<!--<exclusion>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-logging</artifactId>-->
<!--</exclusion>-->
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>