自定义logback.xml时application.yml里的日志开关配置依然生效

logging:
level:
net.jy.redis.controller.testlog: off
root: info

即使logback.xml里配置了日志输出,  net.jy.redis.controller.testlog 这个文件也不会有日志输出。因为application.yml设置日期级别为off

 

 

logback输出有三种方式:ConsoleAppender 控制台输出、RollingFileAppender 根据规则输出到不同文件、FileAppender输出到文件

ConsoleAppender 配置最为简单,只需要设定好encoder

一、基本格式:

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="true" scanPeriod="1 seconds">

<!-- 日志上下文 -->
<contextName>logback</contextName>

<!--日志输出到控制台规则 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">

<encoder>
<pattern>
%d[%level]%c{100}.%M:%L%m%n
</pattern>
</encoder>

</appender>

<root level="trace">
<appender-ref ref="console"/>
</root>

</configuration>

以上就是一个简单模板。
指定一个appender模板,然后绑定到root根路径(除非额外设定,否则都默认按照root指定的appender输出日志)
1、appender name名称可以自定义,建议使用stdout:标准输出到屏幕
2、root标签里可以引入多个appender

二、过滤器
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">

<!-- 增加过滤器,控制日志级别-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>error</level>
</filter>

<!-- 定义日志格式-->
<encoder>
<pattern>
%d[%level]%c{100}.%M:%L%m%n
</pattern>
</encoder>

</appender>
其中<filter>标签控制了只输出error级别及以上日志信息

三、可以配置多个控制台输出appender,root标签也可以增加多个appender属性
<root level="trace">
<appender-ref ref="console"/>
<appender-ref ref="stdout"/>
</root>


这样输出的时候,两个appender的日志格式都会打印到控制台

四、logger标签
(1)<!-- 没有指定使用哪个appender,则默认调用root标签的,同时日志级别为error-->
<logger name="net.jy.redis.controller.logback" level="error"/>


(2)<!-- 指定appender-->
<logger name="mytest" level="warn">
<appender-ref ref="stdout"/>
</logger>


在class文件中通过private final static Logger logger = LoggerFactory.getLogger("mytest");实现后即可使用
不过这时会出现两套日志输出,mytest一套,root设置了一套。
进入日志请求controller
2020-01-16 10:59:47,626[ERROR]testLog:error 日志
2020-01-16 10:59:47,626[ERROR]mytest.testLog:32error 日志
2020-01-16 10:59:47,628[WARN]testLog:warn 日志
2020-01-16 10:59:47,628[WARN]mytest.testLog:40warn 日志

如果不想重复,增加属性即可<logger name="mytest" level="warn" additivity="false">
additivity="false"代表不适用root根目录配置
进入日志请求controller
2020-01-16 10:58:44,833[ERROR]testLog:error 日志
2020-01-16 10:58:44,836[WARN]testLog:warn 日志

<logger name="mytest" level="warn" additivity="false"/>
如果同时设定了additivity="false",又没有指定appender,则不会进行任何日志输出

进入日志请求controller


五、------------------测试pattern属性

(1)%-6relative%thread%level%d%m%n


34651 http-nio-9201-exec-1ERROR2020-01-13 16:56:09,430error 日志
34652 http-nio-9201-exec-1INFO2020-01-13 16:56:09,431info 日志
34652 http-nio-9201-exec-1WARN2020-01-13 16:56:09,431warn 日志

 

%level日志级别 %d日期 %m自定义日志信息 %n换行


(2)%thread%level%d%m%n
http-nio-9201-exec-2ERROR2020-01-13 17:04:39,496error 日志
http-nio-9201-exec-2INFO2020-01-13 17:04:39,496info 日志
http-nio-9201-exec-2WARN2020-01-13 17:04:39,496warn 日志


(3)%d[%level]%m%n
2020-01-13 17:06:21,583[ERROR]error 日志
2020-01-13 17:06:21,583[INFO]info 日志
2020-01-13 17:06:21,583[WARN]warn 日志

可加入[]符号,这样输出日志结构更为清晰


(4)%d[%level]%M%m%n
2020-01-13 17:07:42,374[ERROR]testLogerror 日志
2020-01-13 17:07:42,374[INFO]testLoginfo 日志
2020-01-13 17:07:42,374[WARN]testLogwarn 日志

%M 日志输出所属方法


(5)%d[%level]%c{30}.%M:%m%n
2020-01-13 17:10:55,319[ERROR]n.j.r.c.l.LogbackController.testLog:error 日志
2020-01-13 17:10:55,320[INFO]n.j.r.c.l.LogbackController.testLog:info 日志
2020-01-13 17:10:55,320[WARN]n.j.r.c.l.LogbackController.testLog:warn 日志

%c{30}输出class路径


(6)%d[%level]%c{100}.%M:%m%n
2020-01-13 17:11:44,954[ERROR]net.jy.redis.controller.logback.LogbackController.testLog:error 日志
2020-01-13 17:11:44,955[INFO]net.jy.redis.controller.logback.LogbackController.testLog:info 日志
2020-01-13 17:11:44,955[WARN]net.jy.redis.controller.logback.LogbackController.testLog:warn 日志


(7)%d[%level]%c{100}.%M:%C{30}%m%n
2020-01-13 17:12:39,904[ERROR]net.jy.redis.controller.logback.LogbackController.testLog:n.j.r.c.l.LogbackControllererror 日志
2020-01-13 17:12:39,905[INFO]net.jy.redis.controller.logback.LogbackController.testLog:n.j.r.c.l.LogbackControllerinfo 日志
2020-01-13 17:12:39,905[WARN]net.jy.redis.controller.logback.LogbackController.testLog:n.j.r.c.l.LogbackControllerwarn 日志

%c{100} 和%C{30}%功能相似



(8)%d[%level]%c{100}.%M:%caller{30}%m%n
2020-01-13 17:13:44,983[ERROR]net.jy.redis.controller.logback.LogbackController.testLog:Caller+0  at net.jy.redis.controller.logback.LogbackController.testLog(LogbackController.java:31)
Caller+1  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Caller+2  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Caller+3  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Caller+4  at java.lang.reflect.Method.invoke(Method.java:497)
Caller+5  at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
Caller+6  at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
Caller+7  at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
error 日志
2020-01-13 17:13:44,983[INFO]net.jy.redis.controller.logback.LogbackController.testLog:Caller+0  at net.jy.redis.controller.logback.LogbackController.testLog(LogbackController.java:33)
Caller+1  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Caller+2  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Caller+3  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Caller+4  at java.lang.reflect.Method.invoke(Method.java:497)
Caller+5  at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
Caller+6  at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
Caller+7  at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
info 日志
2020-01-13 17:13:44,983[WARN]net.jy.redis.controller.logback.LogbackController.testLog:Caller+0  at net.jy.redis.controller.logback.LogbackController.testLog(LogbackController.java:39)
Caller+1  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Caller+2  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Caller+3  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Caller+4  at java.lang.reflect.Method.invoke(Method.java:497)
Caller+5  at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
Caller+6  at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
Caller+7  at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
warn 日志


:%caller{30}显示调用层级 


(10)%d[%level]%c{100}.%M:%L%m%n
进入日志请求controller
2020-01-13 17:15:10,015[ERROR]net.jy.redis.controller.logback.LogbackController.testLog:31error 日志
2020-01-13 17:15:10,016[INFO]net.jy.redis.controller.logback.LogbackController.testLog:33info 日志
2020-01-13 17:15:10,016[WARN]net.jy.redis.controller.logback.LogbackController.testLog:39warn 日志

:L打印日志信息所在Class类行次

 
posted on 2020-01-16 11:04  总结造就再进步  阅读(18210)  评论(0编辑  收藏  举报