当前位置: 首页 > news >正文

Java 项目日志实例:Log4j2

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~

Apache Log4j 2 是对 Log4j 的升级,与其前身 Log4j 1.x 相比有了显着的改进,并提供了许多 Logback 可用的改进,同时支持 JCL 以及 SLF4J。

1

Log4j2 使用实例

f1bd86dd56afa3d0a2069bd608cebe6a.png

1、选择 jar 包

引入 Log4j2 必要的包:log4j-api、log4j-core。

2、pom.xml 配置

<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.8.2</version>
</dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.8.2</version>
</dependency>

3、log2j 配置文件:log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!-- status用来指定Log4j本身的打印日志的级别 -->
<!--monitorInterval:Log4j能够自动检测修改配置文件和重新配置本身,设置间隔秒数 -->
<configuration status="WARN" monitorInterval="30"><!--先定义所有的appender --><appenders><!--这个输出控制台的配置 --><console name="Console" target="SYSTEM_OUT"><!--输出日志的格式 --><PatternLayoutpattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %logger{36} - %msg%n" /></console><!--定义输出到指定位置的文件 --><File name="log" fileName="/jpm/log4j2/logs/log.log" append="true"><PatternLayoutpattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %logger{36} - %msg%n" /></File><!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 --><RollingFile name="RollingFileInfo" fileName="/jpm/log4j2/logs/info.log"filePattern="/jpm/log4j2/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --><ThresholdFilter level="info" onMatch="ACCEPT"onMismatch="DENY" /><PatternLayoutpattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %logger{36} - %msg%n" /><Policies><TimeBasedTriggeringPolicy /><SizeBasedTriggeringPolicy size="100 MB" /></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了30 --><DefaultRolloverStrategy max="30" /></RollingFile><RollingFile name="RollingFileError" fileName="/jpm/log4j2/logs/error.log"filePattern="/jpm/log4j2/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="error" onMatch="ACCEPT"onMismatch="DENY" /><PatternLayoutpattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %logger{36} - %msg%n" /><Policies><TimeBasedTriggeringPolicy /><SizeBasedTriggeringPolicy size="100 MB" /></Policies></RollingFile></appenders><!--只有定义了logger并引入的appender,appender才会生效 --><loggers><!--过滤掉spring和mybatis的一些无用的DEBUG信息 --><logger name="org.springframework" level="INFO"></logger><logger name="org.mybatis" level="INFO"></logger><root level="INFO"><appender-ref ref="Console" /><appender-ref ref="log" /><appender-ref ref="RollingFileInfo" /><appender-ref ref="RollingFileError" /></root></loggers></configuration>

4、输出日志的代码示例

package jpm.log4j2;    
import org.apache.logging.log4j.LogManager;    
import org.apache.logging.log4j.Logger;    
public class TestLog4j2 {        
public static void main(String[] args) {            final Logger LOGGER = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);LOGGER.debug("TestLog4j2 debug log.");LOGGER.info("TestLog4j2 info log.");LOGGER.error("TestLog4j2 error log.");}
}

5、打印日志结果

e0dd0d2a17090f76f7a0bebc13cee582.png

75ceab254dfc09fea711345fcb66bf62.jpeg

2

关于日志 level

4b0451fac21c1ac353b3918bd450b0a9.png

日志 level 共有 8 个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF。

All:最低等级的,用于打开所有日志记录

Trace:是追踪,就是程序推进以下,你就可以写个 trace 输出,所以 trace 应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出

Debug:指出细粒度信息事件对调试应用程序是非常有帮助的

Info:消息在粗粒度级别上突出强调应用程序的运行过程

Warn:输出警告及 warn 以下级别的日志

Error:输出错误信息日志

Fatal:输出每个严重的错误事件将会导致应用程序的退出的日志

OFF:最高等级的,用于关闭所有日志记录

程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。

后面为大家介绍项目中的 JCL(java common logging) 和 SLF4J 分别与 Log4j 结合使用的示例。

http://www.lryc.cn/news/136454.html

相关文章:

  • Effective C++条款14——在资源管理类中小心coping行为(资源管理)
  • 【网络教程】如何创建/添加钉钉机器人以及如何获取机器人的Token/Secret
  • wx原生微信小程序入门常用总结
  • 制作一个专属于安防监控业的小程序商城
  • 基于java羽毛球馆管理系统设计与实现
  • 安装elasticsearch8.9.0及修改配置
  • 如何构建高效的接口自动化测试框架?看完你就会了...
  • 53 | 金融行业股票销售指标分析
  • qiuzhiji1
  • 使用VisualStudio制作上位机(二)
  • Datawhale AI夏令营 - 用户新增预测挑战赛 | 学习笔记
  • HarmonyOS/OpenHarmony(Stage模型)卡片开发AbilityStage组件容器
  • 利用torchvision库实现目标检测与语义分割
  • 基于决策树(Decision Tree)的乳腺癌诊断
  • 前端面试的计算机网络部分(2)每天10个小知识点
  • 【LeetCode】224. 基本计算器
  • 服务器数据恢复-EVA存储磁盘故障导致存储崩溃的数据恢复案例
  • 【stylus】通过css简化搜索页面样式
  • 【官方中文文档】Mybatis-Spring #使用 SqlSession
  • Redis三种持久化方式详解
  • 17.2 【Linux】通过 systemctl 管理服务
  • 第 7 章 排序算法(3)(选择排序)
  • Less文件可以做哪些复杂操作
  • HTML5岗位技能实训室建设方案
  • 【Linux】GNOME图形化界面安装
  • 大数据课程J3——Scala的类定义
  • Ribbon:使用Ribbon实现负载均衡
  • 最新最全的~教你如何搭建高可用Lustre双机集群
  • 深入浅出Pytorch函数——torch.nn.init.uniform_
  • 会员管理系统实战开发教程02-H5应用创建