log4j 详解异步日志的配置和测试

 更新时间:2017年01月20日 14:32:46   投稿:lqh  
这篇文章主要介绍了 log4j 详解异步日志的配置和测试的相关资料,需要的朋友可以参考下

 log4j 详解异步日志的配置和测试

日志可以帮助我们分析故障原因,做些数据挖掘的工作。最简单的日志方法,就是自己写个写文件的方法,在需要打日志的时候调用下,但是这显然不可能在实际工程上用。还有个问题,就是频繁地打日志,会增加磁盘I/O,使得系统性能下降。这里用log4j这个库来部署一个含有日志管理的轻量级的系统,主要支持日志的异步写和等级分类的功能,完成最低限度的日志需求。

首先,我们建立一个Maven工程,并且在pom.xml文件里面引入log4j的依赖:

<dependency> 
  <groupId>org.slf4j</groupId> 
  <artifactId>slf4j-log4j12</artifactId> 
  <version>1.7.2</version> 
</dependency> 


接着,我们在src/main/resources路径下面创建一个配置文件:log4j.xml


其实xml配置文件的内容是至关重要的,里面必须定义日志的等级、是否异步等属性。这里我通过截图来简单说明几个关键点。完整的配置文件会随这篇博客一起上传。


这里关于日志等级需要多解释一下,这里的日志等级默认是debug:

所以如果不像上图中利用日志过滤器来定义日志等级,那么最后ERROR日志的会写到INFO日志的文件里,导致日志管理混乱。所以需要来设置这个日志等级的问题。


这张图需要解释的不多,主要是异步日志的配置。

那么到这里,日志的配置基本就好了。而想要在程序里面引用直接就写成:

然后调用log.info,log.error等方法就可以写日志了。注意我们设了2KB的大小,因此日志会累计到2KB再去写。所以并不是实时的,但这样可以减少频繁的磁盘I/O,在压测的时候可以避免由于I/O所带来的CPU的损耗。

接着我们写一段简单的测试程序来验证我们的配置是否正确。


这段代码的功能很简单:迭代计数到10W,然后将10的倍数写到error日志里,非10的倍数写到info日志里面。运行该程序,就会在相应的文件里打印出响应的结果。具体的日志结果如下图:


需要注意的是,当天的日志不会马上加上日期,隔了一天后会显示日期(如何马上显示当天的日期,楼主还没搞定)。info和error日志中的内容如下:


可见,通过我们之前之前的配置,我们可以按照我们的意思来正确地打印日志。ok,就先写到这里。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • java构建OAuth2授权服务器

    java构建OAuth2授权服务器

    本文主要介绍了java构建OAuth2授权服务器,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • Maven生成及安装jar包到本地仓库的方法

    Maven生成及安装jar包到本地仓库的方法

    这篇文章主要介绍了Maven生成及安装jar包到本地仓库的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Struts2实现文件上传功能实例解析

    Struts2实现文件上传功能实例解析

    这篇文章主要介绍了Struts2实现文件上传功能实例解析,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • Java 细致图解带你分析汉诺塔

    Java 细致图解带你分析汉诺塔

    汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。本文将用Java求解这一问题,感兴趣的可以学习一下
    2022-03-03
  • 详解Spring Boot 自定义PropertySourceLoader

    详解Spring Boot 自定义PropertySourceLoader

    这篇文章主要介绍了详解Spring Boot 自定义PropertySourceLoader,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • JPA @ManyToMany 报错StackOverflowError的解决

    JPA @ManyToMany 报错StackOverflowError的解决

    这篇文章主要介绍了JPA @ManyToMany 报错StackOverflowError的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Mybatis-Plus环境配置与入门案例分析

    Mybatis-Plus环境配置与入门案例分析

    MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,为了简化开发提交效率而存在,本篇文章带你配置环境并认识它
    2022-03-03
  • Java中的泛型和泛型通配符详解

    Java中的泛型和泛型通配符详解

    这篇文章主要介绍了Java中的泛型和泛型通配符详解,泛型的作用就是在编译的时候能够检查类型安全,并且所有的强制转换都是自动和隐式的在没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,需要的朋友可以参考下
    2023-07-07
  • Java中进程与线程的区别

    Java中进程与线程的区别

    这篇文章主要介绍了Java进程与线程的区别,进程(Process)是操作系统分配资源的基本单位,线程(Thread)是操作系统能够进行运算调度的基本单位,下文更多两者区别。需要的小伙伴可以参考一下
    2022-05-05
  • Java 数据库连接(JDBC)的相关总结

    Java 数据库连接(JDBC)的相关总结

    这篇文章主要介绍了Java 数据库连接(JDBC)的相关总结,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-03-03

最新评论