logback.xml配置文件,设置系统日志和错误日志分离记录

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<!--控制台日志, 控制台输出 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符-->
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n</pattern>
		</encoder>
	</appender>

	<!--info文件日志 -->
	<appender name="infoRollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 过滤日志 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<!-- 如果命中就禁止这条日志 -->
			<onMatch>DENY</onMatch>
			<!-- 如果没有命中就使用这条规则 -->
			<onMismatch>ACCEPT</onMismatch>
		</filter>
		<encoder>
			<pattern>
				%msg%n
			</pattern>
		</encoder>
		<!--日志文件输出的文件名-->
		<file>${catalina.base}/logs/scienceManagerInfo.log</file>
		<!-- 滚动策略 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${catalina.base}/logs/scienceManagerInfo.%d{yyyy-MM-dd}.log</fileNamePattern>
		</rollingPolicy>
		<encoder>
			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n</pattern>
		</encoder>
	</appender>

	<!-- error文件日志 -->
	<appender name="errorRollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 过滤日志 -->
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>ERROR</level>
		</filter>
		<encoder>
			<pattern>
				%msg%n
			</pattern>
		</encoder>
		<!--日志文件输出的文件名-->
		<file>${catalina.base}/logs/scienceManagerError.log</file>
		<!-- 滚动策略 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${catalina.base}/logs/scienceManagerError.%d{yyyy-MM-dd}.log</fileNamePattern>
		</rollingPolicy>
		<encoder>
			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n</pattern>
		</encoder>
	</appender>

	<logger name="org.springframework">
		<level value="INFO" />
	</logger>
	
	<logger name="java.sql" additivity="true" level="DEBUG" >
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="STDOUT" />
    </logger>
	
	<!--显示日志-->
    <logger name="org.springframework.jdbc.core" additivity="true" level="DEBUG" >
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="STDOUT" />
    </logger>
	
	<logger name="com.swt">
		<level value="INFO" />
	</logger>

	<!-- 日志输出级别 -->
	<root level="INFO">
		<appender-ref ref="console" />
		<appender-ref ref="infoRollingFile" />
		<appender-ref ref="errorRollingFile" />
	</root>
</configuration>

创建info和error各自的<appender>标签,通过<filter>标签来过滤日志,最后在<root>标签中添加各自的引用,具体的配置参考上述代码(有详细注解)

项目运行时,就会在Tomcat服务器中创建对应的日志文件

中途遇到了一个问题,logger.error()打印的日志会正常生成文件,文件中也能正常打印出日志,但是logger.info()只会生成文件,文件中也只有系统启动的日志,在程序中打印的info日志并没有写入,后来检查发现,在配置文件中设置了日志级别为error,将其改成info即可,如下图所示

 

关于日志级别,以及详细的logback.xml配置文件中的标签含义,参考

https://www.cnblogs.com/warking/p/5710303.html

https://www.cnblogs.com/z-x-p/p/11686963.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值