一、loger的使用
1.带有loger的配置,不指定级别,不指定appender
<logger name="com.qianfeng.controller"/>
将控制controller包下的所有类的日志的打印,但是并没用设置打印级别,所以继承他的上级的日志级别“info”;
没有设置addtivity,默认为true,将此loger的打印信息向上级传递;
没有设置appender,此loger本身不打印任何信息。
当执行该包下的某个类中的功能时,将级别为“info”及大于“info”的日志信息传递给root,本身并不打印;
root接到下级传递的信息,交给已经配置好的名为“console”的appender处理,“console”appender将信息打印到控制台。
2.带有多个loger的配置,指定级别,指定appender
<logger name="com.qianfeng.controller.SpringController" level="WARN" additivity="false">
<appender-ref ref="console"/>
</logger>
控制com.qianfeng.controller.SpringController类的日志打印,打印级别为“WARN”;
additivity属性为false,表示此loger的打印信息不再向上级传递;
指定了名字为“console”的appender;
当执行SpringController中的方法时将级别为“WARN”及大于“WARN”的日志信息交给此loger指定的名为“console”的appender处理,在控制台中打出日志,不再向上级root传递打印信息。
二、多环境日志输出
根据不同环境(prod:生产环境,test:测试环境,dev:开发环境)来定义不同的日志输出,在 logback-spring.xml中使用 springProfile 节点来定义,方法如下:
<!-- 测试环境+开发环境. 多个使用逗号隔开-->
<springProfile name="test,dev">
<logger name="com.qianfeng.controller" level="info" />
</springProfile>
<!-- 生产环境-->
<springProfile name="prod">
<logger name="com.qianfeng.controller" level="ERROR" />
</springProfile>
在application.properties文件中指明使用哪一种:spring.profiles.active=prod
三、使用log4j日志管理
1.修改pom.xml文件,过滤掉自带的spring-boot-starter-logging,然后添加spring-boot-starter-log4j依赖包。
<!-- log4j -->
<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>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
2.在resources目录下新建log4j.properties配置文件
配置info,error,console,debug四种输出格式。
log4j.rootLogger=info,error,CONSOLE,DEBUG
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = info
log4j.appender.info.append=true
log4j.appender.info.File=e://springboot/api_services_info.log
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = error
log4j.appender.error.append=true
log4j.appender.error.File=e://springboot/api_services_error.log
log4j.logger.DEBUG=DEBUG
log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
log4j.appender.DEBUG.Threshold = DEBUG
log4j.appender.DEBUG.append=true
log4j.appender.DEBUG.File=e://springboot/api_services_debug.log
3.在使用到的类中声明log以及输出log信息。
@RestController
public class UserController{
private static Logger log = Logger.getLogger(UserController.class);
@Autowired
UserService userService;
@RequestMapping(“/add”)
public String addUser(){
User u=new User(“zhangsan”,“12345”);
int result = userService.addUser(u);
log.info(“增加用户成功”+result);
return “success”+result;
}
}