Java日志系统之Log4j
目录
Log4J
Log4j的简单使用
日志级别
Log4j的组件
Loggers
Appenders
Layout
Layout格式
设置配置文件加载
配置文件解析
Log4J
是Apache下开源的日志框架
Log4j的简单使用
@Testpublic void testLog4J(){Logger logger = Logger.getLogger(Log4jTest.class);logger.info("hello log4j");}
log4j:WARN No appenders could be found for logger (com.zmt.Log4jTest).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See Apache log4j 1.2 - Frequently Asked Technical Questions for more info.
它并没有我们想象的一样,直接输出日志,而是输出警告信息。意思为需要一个初始化配置信息。

添加一个BasicConfigurator.configure()即可。
日志级别
- fatal:严重错误,一般会造成系统崩溃并停止运行
- error:错误信息,不会影响系统运行
- warn:警告信息,可能会发生问题
- info:运行信息,数据库连接,网络连接,IO等信息
- debug:信息调试,一般在开发中使用(默认级别)
- trace:追踪信息,记录程序所有的流程信息
Log4j的组件
Log4j由Loggers(日志记录器)、Appenders (输出端)和 Layout (日志格式化器)组成。其中 Loggers控制日志的输出级别与日志是否输出;Appenders 指定日志的输出方式(输出到控制台、文件等); Layout 控制日志信息的输出格式。
Loggers
与JUL(Java日志系统之JUL-CSDN博客)的Logger一样具有父子关系,有一个默认的根Logger对象,父子关系也通过全路径来判断。由如果没有设置配置,则采用根Logger的默认配置。
Appenders
指定日志输出位置
- ConsoleAppender:将日志输出到控制台
- FileAppender:将日志输出到文件中
- DailyRollingFileAppender:将日志输出到一个日志文件,并且每天输出到一个新的文件
- RollingFileAppenger:将日志信息输出到一个日志文件,并且指定文件的尺寸,当文件大小达到指尺寸时,会自动把文件改名,同时产生一个新的文件
- DBCAppender:把日志信息保存到数据库中
Layout
- HTMLLayout:格式化日志输出为HTML表格形式
- SimpleLayout:简单的日志输出格式化,打印的日志格式为 (info-message)
- PatternLayout:最强大的格式化期,可以根据自定义格式输出日志,如果没有指定转换格式,就是用默认的转换格式
Layout格式
只有在Appender为PatternLayout时有效
- %m 输出代码中指定的日志信息
- %p 输出优先级,及DEBUG、INFO等
- %n 换行符
- %r 输出自应用启动到输出该 log 信息耗费的毫秒数
- %c 输出打印语句所属的类的全名
- %t 输出产生该日志的线程全名
- %d 输出服务器当前时间,默认为 IS08601,也可以指定格式,如:%d{yyyy-MM-dd HH:mm:ss]
- %l 输出日志时间发生的位置,包括类名、线程、及在代码中的行数。如: Test.main{Test.java:10}
- %F 输出日志消息产生时所在的文件名称
- %L 输出代码中的行号
- %% 输出一个"%"字符
测试如下格式的日志输出
log4j.appender.console.layout.conversionPattern = Thread:%t [%5p] %d{yyyy-MM-dd HH:mm:ss}: %m%n

设置配置文件加载
log4j支持一下几种配置文件格式

LomManager加载配置文件的路径是通过类加载器加载。

加载方法为下图



进行文件配置

配置文件解析
log4j.rootLogger=debug,console,filelog4j.appender.console =org.apache.log4j.ConsoleAppender
#指定消息格式类型
log4j.appender.console.layout =org.apache.log4j.PatternLayout
#指定转化格式内容
log4j.appender.console.layout.conversionPattern = Thread:%t [%5p] %d{yyyy-MM-dd HH:mm:ss}: %m%nlog4j.appender.file =org.apache.log4j.FileAppender
log4j.appender.file.layout =org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern = Thread:%t [%5p] %d{yyyy-MM-dd HH:mm:ss}: %m%n
#指定文件路径
log4j.appender.file.file=/logs/log4j.log
#指定文件编码格式
log4j.appender.file.encoding=UTF-8log4j.appender.rollingFile =org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.layout =org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.conversionPattern = Thread:%t [%5p] %d{yyyy-MM-dd HH:mm:ss}: %m%n
#指定文件路径
log4j.appender.rollingFile.file=/logs/log4j.log
#指定文件编码格式
log4j.appender.rollingFile.encoding=UTF-8
#文件到达1MB便进行拆分
log4j.appender.rollingFile.maxFileSize=1MB
#指定拆分数量,如果拆分不够的话,会按照时间久远进行覆盖
log4j.appender.rollingFile.maxBackupIndex= 10log4j.appender.dailyFile =org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyFile.layout =org.apache.log4j.PatternLayout
log4j.appender.dailyFile.layout.conversionPattern = Thread:%t [%5p] %d{yyyy-MM-dd HH:mm:ss}: %m%n
#指定文件路径
log4j.appender.dailyFile.file=/logs/log4j.log
#指定文件编码格式
log4j.appender.dailyFile.encoding=UTF-8
#指定时间拆分规则 默认以天为单位
log4j.appender.dailyFile.datePattern='.'yyyy-MM-dd相关文章:
Java日志系统之Log4j
目录 Log4J Log4j的简单使用 日志级别 Log4j的组件 Loggers Appenders Layout Layout格式 设置配置文件加载 配置文件解析 Log4J 是Apache下开源的日志框架 Log4j的简单使用 Testpublic void testLog4J(){Logger logger Logger.getLogger(Log4jTest.class);logger…...
Windows11系统安装WSL教程
WSL,全称Windows Subsystem for Linux,是微软官方提供的可以在Windows上直接运行的Linux环境,包括大多数命令行工具、程序和应用,由系统底层虚拟机平台支持。 开启相关服务 1、控制面板-启用或关闭Windows功能 2、勾选以下两个…...
总结一下vue中v-bind的常见用法
文章目录 🐕前言:🏨简述一下v-bind命令🧸其它写法1.还是当成字符串🦓其它写法2.当成对象来使用 🐕前言: 本篇博客主要总结一下v-bind命令在vue中的常见用法(看完即懂) …...
全面超越AutoGPT,面壁智能联合清华NLP实验室开源大模型「超级英雄」XAgent
近日,国内领先的人工智能大模型公司面壁智能又放大招,联合清华大学 NLP 实验室共同研发并推出大模型「超级英雄」——XAgent。 通过任务测试,XAgent 在真实复杂任务的处理能力已全面超越 AutoGPT。 现已在 GitHub 正式开源,地址 …...
springBoot--web--http缓存机制测试
springBoot--web--http缓存机制测试 前言1、多端内容适配基于请求头内容协商(默认开启)基于请求参数内容协商(需要开启) 2、默认返回json数据3、设置返回xml数据导入jackson-dataformat-xml包在类文件中添加注解 JacksonXmlRootEl…...
免费活动】11月4日敏捷武林上海站 | Scrum.org CEO 亲临现场
活动介绍 过去的几年里,外界的风云变幻为我们的生活增添了一些不一样的色彩。在VUCA世界的浪潮里,每一个人都成为自己生活里的冒险家。面对每一次的变化,勇于探索未知,迎接挑战,努力追逐更好的自己。 七月࿰…...
VSCode搭建ESP32 ESP-IDF开发环境-Windows
陈拓 2023/10/09-2023/10/14 1. 安装Windows系统下的ESP32 ESP-IDF开发环境 见《Windows系统安装ESP32 ESP-IDF开发环境》 Windows系统安装ESP32 ESP-IDF开发环境-CSDN博客Windows系统安装ESP32 ESP-IDF开发环境。https://blog.csdn.net/chentuo2000/article/details/1339225…...
Java可重入锁(GPT编写)
Java可重入锁是Java并发编程中常用的一种锁机制,它可以允许同一个线程多次获取同一个锁,从而避免死锁和其他并发问题。在本篇博客中,我们将对Java可重入锁的源码进行分析,以便更好地理解它的实现原理和使用方法。 Java可重入锁的…...
京东数据平台:2023年9月京东净水器行业品牌销售排行榜!
鲸参谋监测的京东平台9月份净水器市场销售数据已出炉! 根据鲸参谋平台的数据显示,今年9月份,京东平台净水器的销量为64万,环比下滑约9%,同比下滑约16%;销售额为5.2亿,环比下滑约12%,…...
skiaSharp linux 生成验码字体显示不出来
一、拷贝windows下的字体如:C:\Windows\Fonts 设置字体的地方: var fontPath Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Fonts", "TAHOMA.TTF");最终效果:...
WuThreat身份安全云-TVD每日漏洞情报-2023-10-12
漏洞名称:curl SOCKS5 堆溢出漏洞(CVE-2023-38545) 漏洞级别:高危 漏洞编号:CVE-2023-38545,CNVD-2023-75809 相关涉及:cURL libcurl >7.69.0,<8.3.0 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-25382 漏洞名称:Apache H…...
sobel边缘检测算法
Sobel边缘检测算法是一种常用的图像处理技术,用于检测图像中的边缘和轮廓。该算法基于离散卷积操作,通过对图像进行滤波来寻找图像中灰度值的变化。Sobel算子是一种常用的卷积核,用于检测图像中的垂直边缘和水平边缘。以下是Sobel边缘检测算法…...
Kotlin中抽象类与接口
Kotlin 中的抽象类和接口是面向对象编程中的重要概念,它们提供了一种用于定义和组织代码的方式。在下面的代码示例中,我们将介绍 Kotlin 中的抽象类和接口,并给出相应的示例。 抽象类 抽象类是一种不能被实例化的类,它仅用作其他…...
解决osg绘制场景时因Z冲突导致重影或闪烁等不正常情况
目录 1. 问题的提出 2. Z冲突(z-fighting)简介 2.1. Z冲突(z-fighting)产生的原因 2.2. 如何消除Z冲突(z-fighting) 3. 代码实现 1. 问题的提出 今天绘制了一个棋盘格,鼠标在棋盘格上单击…...
adb 获取 Android 设备中已安装的 apk 文件
前言 今天发现手机上一个应用在应用商店已经搜索不到了,想把其推荐给朋友使用,发现不知道从哪里找原始的 apk 安装文件,记录一下。 如何提取 apk 两种方法 MT管理器导出 可以使用 MT管理器(Android 平台逆向神器),它有个 安装…...
学习记录683@类别不平衡问题解决的基本策略之再缩放的数学解释
什么是类别不平衡问题 分类学习方法都有一个共同的基本假设,即不同类别的训练样例数目相当。如果不同类别的训练样例数目稍有差别,通常影响不大,但若差别很大,则会对学习过程造成困扰。例如有998个反例,但正例只有2个…...
2023App测试必掌握的核心测试:UI、功能测试
一、UI测试 UI即User Interface (用户界面)的简称。UI 设计则是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由、充分体现软件的定位和特点。手机APP从启动界面开始, 到运行过程,直至退出,…...
华为荣耀手机,开启开发者选项,hbuilder调试依然找不到
我的手机是华为荣耀50,其他华为手机不知道是不是这个问题哦 解决办法:usb配置,选择音频来源 然后就可以了...
【C++】特殊类实现
一、请设计一个类,不能被拷贝 拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝, 只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 C98 将拷贝构造函数与赋值运算符重载只声明不定义…...
代码随想录打卡第四十四天|● 01 二维背包问题 ●一维背包问题-滚动数组 ● 416. 分割等和子集
什么是01背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 01背包的模板 二维dp数组 dp数组的含义 dp[i][j]含义下标为【0-i】之间…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...
