logback配置多个日志文件

项目业务有的时候会出现重大的问题,特别是线上的代码,随着业务场景的不同,有的时候会出现莫名奇妙的问题,这个时候线下模拟也不是很方便,为了快速定位问题,日志文件的重要性就不言而喻,但是一个文件产生的日志信息随着时间的积累越来越多,不太方面查看,此时就需要配置特定的业务配置文件信息了。


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文件中!


猜你喜欢

转载自blog.csdn.net/fengchao2016/article/details/78953495