java 日志 异步_log4j 详解异步日志的配置和测试
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 详解异步日志的配置和测试相关推荐
- java环境变量设置详解_JAVA环境变量配置详解(Windows)
JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解 Windows下JAVA用到的环境变量主要有3个,JAVA_HOME.CLASSPATH.PATH. JAVA_HOME指向的 ...
- [进阶] --- Python3 异步编程详解(史上最全篇)
[进阶] - Python3 异步编程详解:https://blog.csdn.net/lu8000/article/details/45025987 参考:http://aosabook.org/e ...
- Android之AsyncTask异步任务详解总结
Android 多线程----AsyncTask异步任务详解 [正文] 本文将讲解一下Android的多线程的知识,以及如何通过AsyncTask机制来实现线程之间的通信. 一.Android当中的多 ...
- log4j配置详解及日志等级设置
官方网址: http://logging.apache.org/log4j/1.2/ 参考:http://blog.csdn.net/maxracer/article/details/7920997 ...
- Snort日志输出插件详解
Snort日志输出插件详解 Snort是一款老×××的开源***检测工具,本文主要讨论他作为日志分析时的各种插件的应用.Snort的日志一般位于:/var/log/snort/目录下.可以通过修改配置 ...
- 使用@Async进行异步调用详解
本文说下使用@Async进行异步调用详解 文章目录 概述 概述
- python try catch打印到日志_django 捕获异常和日志系统过程详解
这一块的内容很少, 异常使用try except即可, 日志只需要几行配置. 使用装饰器捕获方法内的所有异常 我使用装饰器来整个包裹一个方法, 捕获方法中的所有异常信息.并将其转为json返回客户端. ...
- snort 日志 mysql_Snort日志输出插件详解
Snort日志输出插件详解 Snort是一款老×××的开源***检测工具,本文主要讨论他作为日志分析时的各种插件的应用.Snort的日志一般位于:/var/log/snort/目录下.可以通过修改配置 ...
- java 8 新功能详解_Java 8和Java 14之间的新功能
java 8 新功能详解 从版本9开始,Java每6个月就有一次新功能,因此很难跟踪这些新更改. 互联网上的大多数信息都描述了最近2个Java版本之间的变化. 但是,如果您的情况与我相似,则说明您使用 ...
最新文章
- socks5 代理
- IOC的理解,整合AOP,解耦对Service层和Dal层的依赖
- 阿里P8架构师整理的架构图你看过吗
- python打开excel进行编辑_使用Python进行Excel文件处理
- .NET 6 Preview5+VS2022实战千万并发秒杀项目,帅爆了(附源码)
- mysql 学习笔记 多表查询02
- mysql 字符设置与修改
- Windows远程文件拷贝openEuler--WinSCP
- Python风格总结:ASCII码与字符相互转换
- centos llvm安装_CentOS7.x安装LLVM6.0
- 第一章:计算机基础知识——知识点整理
- 电脑外放没声音但插入耳机有声音怎么回事
- UniApp文件上传
- iOS音效和音乐播放
- 量化投资与数据分析一: 如何用PYTHON下载WIND数据并转化成dataframe格式 分享
- 德州仪器(TI)希望小学在江西萍乡市湘东区腊市镇正式落成并启用
- python 小说人物分析_用python分析小说人物关系(二)——实战篇
- BearPi_HM Nano开发板环境搭建踩坑
- 互联网早报:腾讯推出“微小号”,用虚拟手机号拨打电话收发短信
- 没解锁的一加手机刷Recovery的方法
热门文章
- html5 canvas移动位置,HTML5 Canvas 移动
- c语言练习书,谁有C语言入门的练习题?
- 【Linux】kali2019安装docker
- 西电计算机达标测试挂科保研,西电竞赛保研
- 企业级应用_浪潮NF8480M5,支撑新时代的企业级应用
- linux exfat分区格式化,技术|如何在 Linux 上将 USB 盘格式化为 exFAT
- 二叉搜索树的中序遍历为 递增序列_Go 刷 Leetcode 系列:恢复二叉搜索树
- el-table 树形表格 自定义展开图标_实践一个树形组件
- html前进2格2em,HTML2
- KITTI数据集的使用——雷达与相机的数据融合