logback console控制台輸出


自定義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類行次

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM