zoukankan      html  css  js  c++  java
  • 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类行次

     
  • 相关阅读:
    Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲
    Java生鲜电商平台-电商会员体系系统的架构设计与源码解析
    Java生鲜电商平台-优惠券系统的架构设计与源码解析
    Java生鲜电商平台-促销系统的架构设计与源码解析
    Java生鲜电商平台-电商支付流程架构实战
    Java生鲜电商平台-商城后台架构与原型图实战
    还搞不定Java多线程和并发编程面试题?你可能需要这一份书单!
    后端程序员就靠它吃饭了,推荐一份夯实基础的操作系统书单!
    学习计算机基础必读的4本经典入门书籍,自学编程必备书单!
    这份Java Web必读书单,值得所有Java工程师一看!
  • 原文地址:https://www.cnblogs.com/jybky/p/12188462.html
Copyright © 2011-2022 走看看