日志配置问题

原网址:https://blog.csdn.net/hongweigg/article/details/52064620

springMVC中用logback.xml配置日志,配置文件如下:

<!-- @declare: 控制台输出 -->
	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
		<!-- @declare: 控制台日志的输出格式  layout和encoder有什么区别 -->
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!-- @declare: 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
			<Pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} ---> %msg%n</Pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>
	<!-- @declare: 给不同的包定义不同的日志级别 -->
	<logger name="com.silencer.web" level="info" />
	
	<!-- @declare: 日志输出级别 启用上面配置的哪个日志,如果没有file,则不会在创建的日志文件中写入内容和immediateFlush=true联用-->
	<root level="info">
		<appender-ref ref="CONSOLE" />
	</root>

配置的日志级别是info级别,但在控制台打印的日志却是debug级别,日志部分信息如下

信息: Initializing Spring root WebApplicationContext
17:28:52.708 [localhost-startStop-1] INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started
17:28:52.819 [localhost-startStop-1] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Adding PropertySource 'servletConfigInitParams' with lowest search precedence
17:28:52.819 [localhost-startStop-1] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Adding PropertySource 'servletContextInitParams' with lowest search precedence
17:28:52.834 [localhost-startStop-1] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Adding PropertySource 'jndiProperties' with lowest search precedence
17:28:52.834 [localhost-startStop-1] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Adding PropertySource 'systemProperties' with lowest search precedence
17:28:52.834 [localhost-startStop-1] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Adding PropertySource 'systemEnvironment' with lowest search precedence

分析:查看日志发现控制台打印日志和上述配置日志格式不同,所以,自己配置的日志格式没有起作用。

原因:spring 启动的监听器(org.springframework.web.context.ContextLoaderListener) 在logback日志配置监听器(ch.qos.logback.ext.spring.web.LogbackConfigListener)之前加载,这时日志配置尚未加载,SPRING容器已启动,采用缺省的logback配置,随后即便logback日志加载成功,logback级别已经为DEBUG,且不能再改回来

解决:将spring 启动的监听器(org.springframework.web.context.ContextLoaderListener)和logback日志配置监听器(ch.qos.logback.ext.spring.web.LogbackConfigListener)调换加载顺序

修改web.xml文件,将logback的监听器和spring启动监听器调换顺序,如下所示

<!-- logback日志监听器 -->
	<listener>
		<listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
	</listener>

	<!-- spring容器监听器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

自己分析问题是提高自己的阶梯....

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值