栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java日志打印使用指南

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java日志打印使用指南

一、简介

日志打印是java代码开发中不可缺少的重要一步。日志可以排查问题,可以搜集数据

二、常用日志框架

比较常用的日志框架就是logback, 一些老项目会使用log4j,他们用的都是slf4j-api统一接口。

(1) 使用log4j

log4j使用:
1. slf4j-api-1.5.11.jar
2. slf4j-log4j12-1.5.11.jar
3. log4j-1.2.15.jar
4. log4j.properties

代码中

import  org.slf4j.Logger;
import  org.slf4j.LoggerFactory;
Logger logger = LoggerFactory.getLogger(xx.class);

(2) 使用logback

logback使用:
1. slf4j-api-1.5.11.jar
2. logback-core.jar
3. logback-classic.jar
4. logback.xml

代码同log4j

import  org.slf4j.Logger;
import  org.slf4j.LoggerFactory;
Logger logger = LoggerFactory.getLogger(xx.class);
三、日志级别
TRACE < DEBUG < INFO < WARN < ERROR

日常使用较多的是error, info , debug

四、logback简单介绍

简单介绍下常用的logback,logback优点:

比log4j更快和log4j使用了同一个接口,slf4j-api,可以非常方便切换定义了功能非常丰富的appender支持日志压缩

logback要正确理解xml配置文件

configuration:总的父节点property:自定义属性appender:输出控制器,可以输出到控制台,自定义文件等logger:日志级别root:控制器级别

一个例子:




    XXXXXXXX
    
    
    

    

    
    
        
        
        
        
        
        
        
        

        
        
        
            DEBUG
        
        
            ${log.pattern}
        
    

    
    
        
        
        
        
        
        
        

        
        
        
            ERROR
        

        
        ${log.path}/error.log

        
        
            
            ${log.path}/error-%d{yyyyMMdd}.%i.log.zip
            
            ${maxHistory}
            
            2GB
            
                
                100MB
            
        
        
            ${log.pattern}
        
    

    
    
        
        
        
        
        
        
        

        
        
        
            INFO
        

        
        ${log.path}/info.log

        
        
            
            ${log.path}/info-%d{yyyyMMdd}.%i.log.zip
            
            ${maxHistory}
            
            2GB
            
                
                100MB
            
        
        
            ${log.pattern}
        
    

    
    
        
        
        
        
        
        
        

        
        
        
            DEBUG
        

        
        ${log.path}/debug.log

        
        
            
            ${log.path}/debug-%d{yyyyMMdd}.%i.log.zip
            
            ${maxHistory}
            
            2GB
            
                
                100MB
            
        
        
            ${log.pattern}
        
    


    


    
        
        
        
        
    



五、常见问题

1、日志打的少,不好排查问题?

我们经常会遇到一个生产问题,去看日志,啥都没有,只能重新加日志,发包,再排查问题;
所以我们要养成打日志的习惯,开发环境可以debug看,生产看不了,只能加日志,在开发的时候就把必要的日志加上;
比较重要的是接口的入参,返回,重要节点开始,结束,mq发送接收等。

2、error, info , debug分别都什么时候使用?

error: 捕获异常的时候使用,这个没有异议
info: 比较重要的信息,使用频次不是非常高的场景,比如入参出参
debug: 一个是不是特别重要的信息,但是又不能少,还有数据量大的数据,比如大量mq信息,访问频繁的接口入参出参

3、开启debug好多无用的debug信息怎么办?

把项目的目录定为debug,其它定成info。这样只有本项目的debug日志会打印了
logging.level.root=info
logging.level.cn.mypackage=debug

4、需要自定义日志文件吗?

logback可以把日志写进自定义文件,debug,info,error分开存储,历史数据还能压缩;
按自己项目的需求来,大型项目建议分开存储。

5、springboot启动命令自带的日志和自定义日志文件的日志重复怎么办?

我们一般启动springboot项目命令为:nohup java -jar XXXXXXXX.jar >> XXXXXXX.log 2>&1 &
这个会生成一个日志文件,logback配置也会生成自己的日志文件,就会重复,造成空间浪费,如何取舍?

如果你们公司统一打包脚本的话,就用命令生成的日志文件吧,把logback配置去掉;
如果你们公司自由度比较高,就用logback生成的日志,把命令改成  >/dev/null 就可以了

6、debug日志正确写法?

有些人可能打debug日志直接logger.debug("****");
如果项目的日志级别比较高,就比较浪费性能,可以加一个
if (log.isDebugEnabled()) {
    log.debug("XXXXXXXXXXXXX");
}

7、动态日志级别?

有些公司支持动态配置文件,比如diamond,nacos等,可以修改配置文件的级别,动态生效
logging.level.root=info
#logging.level.root=debug

日常开在info,出了问题开debug找,资源有限可以这样做,不推荐生产使用

欢迎关注微信公众号:丰极,更多技术学习分享。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/710073.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号