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

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

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

org.slf4j

slf4j-log4j12

1.7.2

接着,我们在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 日志 异步_log4j 详解异步日志的配置和测试相关推荐

  1. java环境变量设置详解_JAVA环境变量配置详解(Windows)

    JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解 Windows下JAVA用到的环境变量主要有3个,JAVA_HOME.CLASSPATH.PATH. JAVA_HOME指向的 ...

  2. [进阶] --- Python3 异步编程详解(史上最全篇)

    [进阶] - Python3 异步编程详解:https://blog.csdn.net/lu8000/article/details/45025987 参考:http://aosabook.org/e ...

  3. Android之AsyncTask异步任务详解总结

    Android 多线程----AsyncTask异步任务详解 [正文] 本文将讲解一下Android的多线程的知识,以及如何通过AsyncTask机制来实现线程之间的通信. 一.Android当中的多 ...

  4. log4j配置详解及日志等级设置

    官方网址: http://logging.apache.org/log4j/1.2/ 参考:http://blog.csdn.net/maxracer/article/details/7920997 ...

  5. Snort日志输出插件详解

    Snort日志输出插件详解 Snort是一款老×××的开源***检测工具,本文主要讨论他作为日志分析时的各种插件的应用.Snort的日志一般位于:/var/log/snort/目录下.可以通过修改配置 ...

  6. 使用@Async进行异步调用详解

    本文说下使用@Async进行异步调用详解 文章目录 概述 概述

  7. python try catch打印到日志_django 捕获异常和日志系统过程详解

    这一块的内容很少, 异常使用try except即可, 日志只需要几行配置. 使用装饰器捕获方法内的所有异常 我使用装饰器来整个包裹一个方法, 捕获方法中的所有异常信息.并将其转为json返回客户端. ...

  8. snort 日志 mysql_Snort日志输出插件详解

    Snort日志输出插件详解 Snort是一款老×××的开源***检测工具,本文主要讨论他作为日志分析时的各种插件的应用.Snort的日志一般位于:/var/log/snort/目录下.可以通过修改配置 ...

  9. java 8 新功能详解_Java 8和Java 14之间的新功能

    java 8 新功能详解 从版本9开始,Java每6个月就有一次新功能,因此很难跟踪这些新更改. 互联网上的大多数信息都描述了最近2个Java版本之间的变化. 但是,如果您的情况与我相似,则说明您使用 ...

最新文章

  1. socks5   代理
  2. IOC的理解,整合AOP,解耦对Service层和Dal层的依赖
  3. 阿里P8架构师整理的架构图你看过吗
  4. python打开excel进行编辑_使用Python进行Excel文件处理
  5. .NET 6 Preview5+VS2022实战千万并发秒杀项目,帅爆了(附源码)
  6. mysql 学习笔记 多表查询02
  7. mysql 字符设置与修改
  8. Windows远程文件拷贝openEuler--WinSCP
  9. Python风格总结:ASCII码与字符相互转换
  10. centos llvm安装_CentOS7.x安装LLVM6.0
  11. 第一章:计算机基础知识——知识点整理
  12. 电脑外放没声音但插入耳机有声音怎么回事
  13. UniApp文件上传
  14. iOS音效和音乐播放
  15. 量化投资与数据分析一: 如何用PYTHON下载WIND数据并转化成dataframe格式 分享
  16. 德州仪器(TI)希望小学在江西萍乡市湘东区腊市镇正式落成并启用
  17. python 小说人物分析_用python分析小说人物关系(二)——实战篇
  18. BearPi_HM Nano开发板环境搭建踩坑
  19. 互联网早报:腾讯推出“微小号”,用虚拟手机号拨打电话收发短信
  20. 没解锁的一加手机刷Recovery的方法

热门文章

  1. html5 canvas移动位置,HTML5 Canvas 移动
  2. c语言练习书,谁有C语言入门的练习题?
  3. 【Linux】kali2019安装docker
  4. 西电计算机达标测试挂科保研,西电竞赛保研
  5. 企业级应用_浪潮NF8480M5,支撑新时代的企业级应用
  6. linux exfat分区格式化,技术|如何在 Linux 上将 USB 盘格式化为 exFAT
  7. 二叉搜索树的中序遍历为 递增序列_Go 刷 Leetcode 系列:恢复二叉搜索树
  8. el-table 树形表格 自定义展开图标_实践一个树形组件
  9. html前进2格2em,HTML2
  10. KITTI数据集的使用——雷达与相机的数据融合