java日志LoggerFactory.getLogger的用法及说明

 更新时间:2023年02月25日 10:11:12   作者:滑稽的鼠标  
这篇文章主要介绍了java日志LoggerFactory.getLogger的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

LoggerFactory.getLogger可以在IDE控制台打印日志,便于开发,一般加在最上面:

使用:

//调试日志
    private final static Logger logger = LoggerFactory.getLogger(xxxController.class);

优点:使用指定类初始化日志对象,在日志输出的时候,可以打印出日志信息所在类

logger日志的几个方法

logger.debug、logger.info、logger.warn、logger.error、logger.fatal 的区别:

  • 相同处:

它们的作用都是把错误信息写到文本日志里

  • 不同的是它们表示的日志级别不同:

日志级别由高到底是:fatal -> error -> warn -> info -> debug,低级别的会输出高级别的信息,高级别的不会输出低级别的

信息,如等级设为Error的话,warn,info,debug的信息不会输出

修改日志输出的级别要在log4j文件中进行配置

项目正式发布后,一般会把日志级别设置为fatal或者error

demo例子

package wwfww.warehouse.aaaaa;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @version Revision 1.0.0
 * @版权:版权所有 (c) 2018
 * @see:
 * @创建日期:2020年3月2日 @功能说明: @begin
 * @修改记录:
 * @修改后版本 修改人 修改内容
 * @2020年3月2日 liuyu 创建
 * @end
 */
public class LoggerFactoryDemo {
    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerFactoryDemo.class);

    public static void main(String[] args) {
        for (int i=0;i<5;i++){
            LOGGER.info("这是一条数据"+i);
        }
    }
}

控制台输出

13:58:52.913 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - 这是一条数据0
13:58:52.925 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - 这是一条数据1
13:58:52.925 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - 这是一条数据2
13:58:52.925 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - 这是一条数据3
13:58:52.925 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - 这是一条数据4

可以看到控制台日志输出的时候,打印出日志信息所在类

也可以用在try catch中:

try{
......
} catch (IOException e) {
            logger.info("错误信息:" + e.getMessage());
            return new Result(e.getMessage());
        }

在日志输出时,字符串变量之间的拼接使用占位符的方式

说明:因为 String 字符串的拼接会使用 StringBuilder 的 append()方式,有一定的性能损耗。使用占位符仅是替换动作,可以有效提升性能。

打印json数据

新建entity

package wwfww.warehouse.aaaaa;

import javax.xml.crypto.Data;
import java.util.Date;

/**
 * @version Revision 1.0.0
 * @版权:版权所有 (c) 2018
 * @see:
 * @创建日期:2020年3月2日 @功能说明: @begin
 * @修改记录:
 * @修改后版本 修改人 修改内容
 * @2020年3月2日 liuyu 创建
 * @end
 */
public class DemoEntity {
    public String name;
    public String address;
    public Date birthday;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

package wwfww.warehouse.aaaaa;

import com.alibaba.fastjson.JSON;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Date;

/**
 * @version Revision 1.0.0
 * @版权:版权所有 (c) 2018
 * @see:
 * @创建日期:2020年3月2日 @功能说明: @begin
 * @修改记录:
 * @修改后版本 修改人 修改内容
 * @2020年3月2日 liuyu 创建
 * @end
 */
public class LoggerFactoryDemo {
    private static final Logger LOGGER = LoggerFactory.getLogger(LoggerFactoryDemo.class);


    public static void main(String[] args) {
        for (int i=0;i<5;i++){
            DemoEntity entity = getDemoEntity(i);
            LOGGER.info("这是一条数据:{}", JSON.toJSONString(entity));
        }
        for (int i=0;i<5;i++){
            DemoEntity entity = getDemoEntity(i);
            LOGGER.info("{}:也可以是前面", JSON.toJSONString(entity));
        }
    }
    private static DemoEntity getDemoEntity(int i){
        DemoEntity demoEntity = new DemoEntity();
        demoEntity.setName("小明"+i+"号");
        demoEntity.setAddress("北京胡同"+2+"街道");
        demoEntity.setBirthday(new Date());
        return demoEntity;
    }
}

控制台输出:

14:27:42.161 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - 这是一条数据:{"address":"北京胡同2街道","birthday":1587882461879,"name":"小明0号"}
14:27:42.173 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - 这是一条数据:{"address":"北京胡同2街道","birthday":1587882462173,"name":"小明1号"}
14:27:42.173 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - 这是一条数据:{"address":"北京胡同2街道","birthday":1587882462173,"name":"小明2号"}
14:27:42.173 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - 这是一条数据:{"address":"北京胡同2街道","birthday":1587882462173,"name":"小明3号"}
14:27:42.173 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - 这是一条数据:{"address":"北京胡同2街道","birthday":1587882462173,"name":"小明4号"}
14:43:49.631 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - {"address":"北京胡同2街道","birthday":1587883429631,"name":"小明0号"}:也可以是前面
14:43:49.631 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - {"address":"北京胡同2街道","birthday":1587883429631,"name":"小明1号"}:也可以是前面
14:43:49.631 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - {"address":"北京胡同2街道","birthday":1587883429631,"name":"小明2号"}:也可以是前面
14:43:49.631 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - {"address":"北京胡同2街道","birthday":1587883429631,"name":"小明3号"}:也可以是前面
14:43:49.631 [main] INFO wwfww.warehouse.aaaaa.LoggerFactoryDemo - {"address":"北京胡同2街道","birthday":1587883429631,"name":"小明4号"}:也可以是前面

注:

使用JSON.toJSONString要添加阿里的依赖

		<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.57</version>
        </dependency>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL主键约束和外键约束的实现

    MySQL主键约束和外键约束的实现

    在MySQL中,主键和外键约束是通过约束来实现的,本文主要介绍了MySQL主键约束和外键约束的实现, 具有一定的参考价值,感兴趣的可以了解下
    2023-11-11
  • Java 中图片压缩处理的解决方案

    Java 中图片压缩处理的解决方案

    图片经过base64编码转换后,文件会变大的原因是因为base64编码会将每个3字节的数据转换成4字节的数据,并且在转换的过程中还会添加一些额外的字符,这篇文章主要介绍了Java 中如何对图片进行压缩处理,需要的朋友可以参考下
    2023-09-09
  • Java中的PreparedStatement对象使用解析

    Java中的PreparedStatement对象使用解析

    这篇文章主要介绍了Java中的PreparedStatement对象使用解析,PreparedStatement对象采用了预编译的方法,会对传入的参数进行强制类型检查和安全检查,进而避免了SQL注入的产生,使得操作更加安全,需要的朋友可以参考下
    2023-12-12
  • idea每次修改代码都需要重新install的问题

    idea每次修改代码都需要重新install的问题

    这篇文章主要介绍了idea每次修改代码都需要重新install的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Java-String类最全汇总(上篇)

    Java-String类最全汇总(上篇)

    这篇文章主要介绍了Java-String类最全汇总(上篇),本文章内容详细,本模块分为了两部分,本次为上篇,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2023-01-01
  • Java如何通过SSE实现消息推送详解

    Java如何通过SSE实现消息推送详解

    这篇文章主要介绍了Java如何通过SSE实现消息推送的相关资料,SSE是一种服务器向客户端推送数据的技术,基于HTTP协议,利用长连接特性,它适用于单向数据流场景,如股票价格更新、新闻实时推送等,需要的朋友可以参考下
    2025-04-04
  • Spring 使用注解方式进行事务管理配置方式

    Spring 使用注解方式进行事务管理配置方式

    本篇文章主要介绍了Spring 使用注解方式进行事务管理配置方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • mybatis-plus之如何实现in嵌套sql

    mybatis-plus之如何实现in嵌套sql

    这篇文章主要介绍了mybatis-plus之如何实现in嵌套sql问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java集合去重导致的线上问题

    Java集合去重导致的线上问题

    这篇文章主要介绍了Java集合去重导致的线上问题,根据主题提出Set是怎样保证数据的唯一性的,为什么两种去重方式性能差距这么大的问题,下文解决思路需要的小伙伴可以参考一下
    2022-04-04
  • 浅谈java二进制、十进制、十六进制、字符串之间的相互转换

    浅谈java二进制、十进制、十六进制、字符串之间的相互转换

    下面小编就为大家带来一篇浅谈二进制、十进制、十六进制、字符串之间的相互转换。小编觉得挺不错的,现在就分享给大家,也给大家做个参考,一起跟随小编过来看看吧
    2016-06-06

最新评论