项目业务有的时候会出现重大的问题,特别是线上的代码,随着业务场景的不同,有的时候会出现莫名奇妙的问题,这个时候线下模拟也不是很方便,为了快速定位问题,日志文件的重要性就不言而喻,但是一个文件产生的日志信息随着时间的积累越来越多,不太方面查看,此时就需要配置特定的业务配置文件信息了。
logback的配置可以查看我以前写的文章:logback配置文件
多日志文件的配置方式,此篇讲2种:
一、自定义log文件
配置文件的信息如下:
<!-- 测试文件 --> <appender name="testFile" class="ch.qos.logback.core.FileAppender"> <!-- 可以是相对路径,可以是绝对路径 --> <file>D://log/testLog.log</file> <append>true</append> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> </encoder> </appender>
<!-- 测试多文件日志打印 --> <logger name="testLog" level="INFO" additivity="false"> <appender-ref ref="testFile" /> </logger>
测试类:
package restful; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class logTest { private static Logger logger = LoggerFactory.getLogger(logTest.class); private Logger testLog = LoggerFactory.getLogger("testLog"); @Test public void test() { logger.info("root 日志文件 "); testLog.info("自定义日志文件"); testLog.info("自定义日志文件"); logger.info("root 日志文件"); System.out.println("aaaaaaa"); } @Test public void testFile() { testLog.info("testFile文件测试"); System.out.println("over"); } }
结果说明:只有testLog中记录的会在testLog.log中打印。
二、class类log文件
<!-- class日志文件 --> <appender name="classFile" class="ch.qos.logback.core.FileAppender"> <!-- 可以是相对路径,可以是绝对路径 --> <file>D://log/classLog.log</file> <append>true</append> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> </encoder> </appender>
<!-- 指定具体的某个类日志文件打印 --> <logger name="restful.logTest" level="INFO" additivity="false"> <appender-ref ref="classFile"/> </logger>
package restful; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class logTest { private static Logger logger = LoggerFactory.getLogger(logTest.class); private Logger testLog = LoggerFactory.getLogger("testLog"); @Test public void test() { logger.info("root 日志文件 "); testLog.info("自定义日志文件"); testLog.info("自定义日志文件"); logger.info("root 日志文件"); System.out.println("aaaaaaa"); } @Test public void testFile() { testLog.info("testFile文件测试"); System.out.println("over"); } }
结果:logger类记录的内容会打印在classLog.log文件中。
ps说明:
addtivity:是否向上级loger传递打印信息。默认是true。若设置为true,则也会下root中传递信息,将日志信息记录到root下指定的file文件中!