zoukankan      html  css  js  c++  java
  • logback推荐配置

    配置的正确姿势

    线上和开发环境的配置要分离,对于java项目 
    src/main/resources 目录下的东西都是正式环境使用的
    src/test/resources 目录下的东西才是本机开发环境使用的

    如果你发现自己本机开发启动程序的时候,经常要修改 src/main/resources 目录下的东东,那就说明你用错了。
    这样做的一个后果就是,你提交代码的时候,忘记修改回来,结果发布到线上去了。轻则日志量暴增,重则引起运营事故。
    所以大家千万注意!!!

    推荐的配置内容 

    logback.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <configuration scan="false" scanPeriod="60 seconds" debug="false">
        <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 可让每天产生一个日志文件,最多 7 个,自动回滚 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${catalina.home}/logs/fs-app-%d{yyyyMMdd}.log.zip</fileNamePattern>
                <maxHistory>7</maxHistory>
            </rollingPolicy>
            <encoder>
                <!-- 日志中默认打印traceId和userId,方便定位问题,异常栈中去掉包含如下字符的行避免打印很多无用的信息-->
                <pattern>%d{HH:mm:ss} [%thread] %-5level %logger{12} %X{traceId} %X{userId} %msg%rEx{full,
                    java.lang.Thread,
                    javassist,
                    sun.reflect,
                    org.springframework,
                    org.apache,
                    org.eclipse.jetty,
                    $Proxy,
                    java.net,
                    java.io,
                    javax.servlet,
                    org.junit,
                    com.mysql,
                    com.sun,
                    org.mybatis.spring,
                    cglib,
                    CGLIB,
                    java.util.concurrent,
                    okhttp,
                    org.jboss,
                    }%n
                </pattern>
            </encoder>
        </appender>
     
        <!-- 异步输出日志避免阻塞服务 -->
        <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
            <queueSize>512</queueSize>
            <appender-ref ref="RollingFile"/>
        </appender>
     
        <!-- 配置基础组件为WARN级别,避免打印过多影响服务自己日志 -->
        <logger name="druid.sql" level="INFO"/>
        <logger name="org.hibernate" level="WARN"/>
        <logger name="org.springframework" level="WARN"/>
        <logger name="org.apache" level="WARN"/>
     
        <root level="info">
            <appender-ref ref="ASYNC"/>
        </root>
    </configuration>
    logback-test.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <configuration scan="false" scanPeriod="60 seconds" debug="false">
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{HH:mm:ss} [%thread] %-5level %logger{12} %X{traceId} %X{userId} %msg%n</pattern>
            </encoder>
        </appender>
     
        <logger name="org.hibernate" level="WARN"/>
        <logger name="org.springframework" level="WARN"/>
        <logger name="org.apache" level="WARN"/>
     
        <root level="DEBUG">
            <appender-ref ref="STDOUT"/>
        </root>
    </configuration>

    推荐日志级别

    极为严格的做法是:只要log.error()记录的内容,都需要人及时响应的,有些公司会针对error进行字符串告警。
    那么,针对一些:没有权限、参数错误、非法请求等,由于不合理的请求进来的,就建议打印warn而不是error,否则狼来了喊多了就没有用了。也会淹没真正的错误。
    简单来讲,真正影响到正常用户的正常请求而且需要及时响应的错误,就打印ERROR,否则打印WARN。
    一般信息打印info,针对调试操作,打印debug 

    推荐使用日志占位符

    log.info("this is a={}, b={}", a, b)
    使用占位符,是真正需要打印的时候,才进行字符串拼接;如果不打印就不会拼接字符串。

    log.error("cannot open url={}", url, e)
    针对error,务必把异常栈打印出来,这里最有一个exception对象,不需要使用占位符,如果多一个占位符,则只会打印e.getMessage()的内容,就不方便查问题了。 

    和日志中心的配合

    通过引入日志中心的组件并添加配置,可以实现把特定logger和特定用户的日志进入日志中心,异常信息入日志中心等功能。

    pom.xml引用
    <dependency>
        <groupId>com.fxiaoke</groupId>
        <artifactId>logconfig-core</artifactId>
        <version>${logconfig-core.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fxiaoke.common</groupId>
        <artifactId>metrics-oss</artifactId>
        <version>${metrics-oss.version}</version>
    </dependency>

    修改spring的配置文件,加入如下内容

    spring配置
    <bean class="com.fxiaoke.metrics.MetricsConfiguration"/>

    这样就可以通过 http://oss.firstshare.cn/logconf/ 在线调整日志级别,以及查看日志内容了

    可以在 进程管理系统 http://oss.firstshare.cn/pms/ 查看自己进程的jvm信息,cpu和内容消耗等信息

    还可以在日志中心 http://log.foneshare.cn/ 查到自己服务的所有error,不必登录多个机器查找了。可以针对userId搜索错误情况。

    简易日志中心: http://oss.foneshare.cn/flog/

    kibana:http://log.foneshare.cn/

     
  • 相关阅读:
    64945e3dtw1dii6vfdr19j.jpg(PNG 图像,1497x929 像素)
    软题库
    信管网
    Windows DNA_百度百科
    解释一下关系数据库的第一第二第三范式?
    扩大高校毕业生就业见习补贴范围_网易新闻
    中国计算机技术职业资格网 | 首页
    2016年下半年信息系统项目管理师真题及答案_信息系统项目管理师历年真题及权威答案_信息系统项目管理师试题及模拟题_软考考试题库_希赛网
    杭州市2016-2017年度跨境电商产业紧缺人才需求目录
    计算机技术与软件专业技术资格(水平)考试_百度百科
  • 原文地址:https://www.cnblogs.com/ljsong/p/8692772.html
Copyright © 2011-2022 走看看