zoukankan      html  css  js  c++  java
  • Java日志管理之logback

    只要引入logback的依赖,就可以在控制台使用默认格式输出:

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>

     在resourses中创建logback.xml配置文件,就可以配置日志:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <!--定义一个向控制台输出的追加器-->
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <!--
                    %thread:线程名字
                    %d:产生日志时间
                    %level:产生日志的级别
                    %logger{10}:由那个类产生的日志,如果超过10个长度则进行缩写
                -->
                <pattern>[%thread] %d %level %logger{10} - %msg%n</pattern>
            </encoder>
        </appender>
        <!--日志的最低输出级别为debug,输出地址为控制台-->
        <root level="debug">
            <appender-ref ref="console"/>
        </root>
    </configuration>

    如果想配置日滚动文件,可以添加如下追加器:

    <!--RollingFileAppender追加器用于生成按天滚动的日志文件-->
    <appender name="accessHistoryLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--rollingPolicy滚动策略,TimeBasedRollingPolicy按照时间进行滚动-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--配置日志存储路径-->
            <fileNamePattern>C:java_studyproject
    estfullog
    estful.%d.log</fileNamePattern>
        </rollingPolicy>
        <!--定义日志输出的格式-->
        <encoder>
            <pattern>[%thread] %d %level %logger{10} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <!--AccessHistoryInterceptor这个类所产生的日志都会使用下面标签所产生的规则-->
    <!--additivity是否向控制台输出,false在只会向指定规则下输出-->
    <logger name="com.ikidana.restful.interceptor.AccessHistoryInterceptor" level="info" additivity="false">
        <appender-ref ref="accessHistoryLog"/>
    </logger>

    然后就可以填入信息了:

    public class AccessHistoryInterceptor implements HandlerInterceptor {
        //创建一个logger日志对象
        private Logger logger = (Logger) LoggerFactory.getLogger(AccessHistoryInterceptor.class);
    
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            StringBuilder log = new StringBuilder();
            log.append(request.getRemoteAddr());  //地址
            log.append("|");
            log.append(request.getRequestURL());  //URL
            log.append("|");
            log.append(request.getHeader("user-agent"));
            logger.info(log.toString());
            return true;
        }
    }
  • 相关阅读:
    R语言编程艺术(2)R中的数据结构
    R语言编程艺术(1)快速入门
    R语言实战(十)处理缺失数据的高级方法
    R语言实战(九)主成分和因子分析
    R语言实战(八)广义线性模型
    R语言实战(七)图形进阶
    R语言实战(六)重抽样与自助法
    R语言实战(五)方差分析与功效分析
    R语言实战(四)回归
    R语言实战(三)基本图形与基本统计分析
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/12518597.html
Copyright © 2011-2022 走看看