Java日志系统之Log4j

news2024/11/17 23:49:16

目录

Log4J

Log4j的简单使用

日志级别

Log4j的组件

Loggers

Appenders

Layout

Layout格式

设置配置文件加载

配置文件解析


Log4J

是Apache下开源的日志框架

Log4j的简单使用

    @Test
    public 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,file

log4j.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%n

log4j.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-8


log4j.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= 10


log4j.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1115627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统【OS】虚拟机

定义 使用虚拟化技术,将一台物理机器虚化为多台虚拟机器VM,每个虚拟机器都可用独立运行一个操作系统 分类 传统计算机 第一类VMM 第二类VMM

leetcode:2678. 老人的数目(python3解法)

难度:简单 给你一个下标从 0 开始的字符串 details 。details 中每个元素都是一位乘客的信息,信息用长度为 15 的字符串表示,表示方式如下: 前十个字符是乘客的手机号码。接下来的一个字符是乘客的性别。接下来两个字符是乘客的年…

【leetcode报错】 leetcode格式问题解决:error: stray ‘\302’ in program [solution.c]

leetcode格式问题解决 一、情景再现二、报错原因三、解决方法四、修正结果 一、情景再现 二、报错原因 该错误是指 源程序中有非法字符,需要将非法字符去掉。 一般是由于coder 1.使用中文输入法 或者 2.从别的地方直接复制粘贴代码 造成的。 代码中出现了 中文空格&…

Xshell+screen解决ssh连接 服务器掉线的问题

Linux screen命令解决SSH远程服务器训练代码断开连接后运行中断_linux screen ssh-CSDN博客 使用教程: 这里粗略介绍一下 (1)xshell xftp(xshell点这个,有的话直接打开,没有的话就跳转下载) …

RGBD Salient Object Detection via Disentangled Cross-Modal Fusion

方法 HHA means “horizontal disparity, height above ground, and angle with gravity”.结构化上下文编码器{E R S _R^S RS​,E D S _D^S DS​},模态特定内容编码器{E R C _R^C RC​,E D C _D^C DC​} 体会 作者未提供代码

使用socket对http站点的访问

使用socket对http站点的访问 步骤: 1、实现TCP客户端 2、设置访问的网站地址 3、创建发送的请求报文 4、连接和发送报文到百度 5、显示百度回复的内容 import socket # 建立TCP连接 s socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 与服务器建立连接 host …

API 排行榜,盘点用的最多的 API 协议!

每个人都用过 HTTP 协议。在网页端,在 App 端,大部分的数据交换都基于 HTTP 协议,但你也许会听过其他的一些协议。 从 《2023 全球 API 状况报告》 里的数据,我们能看到全球的开发者使用最多的 API 协议: 这些协议有什…

N-128基于springboot,vue酒店管理系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis 本系统功…

Web前端开发——新年倒计实时刷新

Web前端开发——年倒计实时刷新 H5(HTML5)前端开发是指使用HTML5、CSS3和JavaScript等技术进行网页和移动应用的开发。HTML5是最新的HTML标准,提供了丰富的语义化标签和功能,使得网页可以更加优雅和多样化。CSS3是用于样式表的升级版本,提供了更多的样式效果和布局控制能…

【企业级SpringBoot单体项目模板 】—— 项目代码管理

😜作 者:是江迪呀✒️本文关键词:SpringBoot项目模版、企业级、模版、代码管理☀️每日 一言:生命力顽强的种子,从不对瘠土唱诅咒的歌。 文章目录 一、第一种:先创建仓库1.1 创建仓库1.2 clone…

驱动点灯

#include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include "head.h" unsigned int major; char kbuf[128] {}; // 定义三个指针指向映射后的虚拟内存 u…

【LeetCode】59. 螺旋矩阵 II

1 问题 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]] 示例 2&#xff1a; 输入&#xff1a;n…

若依 ruoyi 新增每页分页条数

ruoyi-ui/src/components/Pagination/index.vue 下&#xff0c;找到pageSizes 数组中新增想要分页的数据量 &#xff1a;

Leetcode 202 快乐数(HashSet,环形链表思想)

Leetcode 202 快乐数&#xff08;HashSet&#xff09; 解法1 &#xff1a; 用HashSet来检测循环:star:为什么说数字n的位数由log n给定呢&#xff1f;解法2 &#xff1a; 链表的思想[出现循环表示链表出现环]&#xff0c;使用快慢指针法 题目链接>>>>>>>&…

Nginx介绍,nginx高级应用,nginx虚拟主机配置

HTTP介绍 在应用层 : HTTP&#xff0c;FTP&#xff0c;ssh&#xff0c;SMTP&#xff0c;POP3 网络层&#xff1a; TCP&#xff0c;UDP TCP:可靠的&#xff0c; UDP&#xff1a;不可靠的&#xff0c;直播&#xff0c;视频 qq 微信 HTTP协议是Hyper Text Transfer Protocol&#…

【多线程、单线程、异步编程】三个版本--在爬虫中的应用

并发编程在爬虫中的应用 之前的课程&#xff0c;我们已经为大家介绍了 Python 中的多线程、多进程和异步编程&#xff0c;通过这三种手段&#xff0c;我们可以实现并发或并行编程&#xff0c;这一方面可以加速代码的执行&#xff0c;另一方面也可以带来更好的用户体验。爬虫程…

2023阿里云双十一到底有没有活动?去年就没有

2023阿里云双十一到底有没有活动&#xff1f;根据以往经验&#xff0c;阿里云双11是一次大型促销活动&#xff0c;但是去年好像就没有&#xff0c;印象里去年阿里云没推出双十一活动&#xff0c;因为阿里云一直都活动&#xff0c;没有单独推出双11优惠&#xff0c;阿里云百科给…

投稿时如何上传匿名源码

1 参考博客&#xff1a; how to disclose data for double-blind review and make it archived open data upon acceptance 2 查看DOI&#xff1a; 3 然后在论文参考文献前面放入DOI链接&#xff1a; 7 DATA AVAILABILITY The artifacts and experimental files are archive…

内核初始化的过程

内核的启动从入口函数 start_kernel() 开始。在 init/main.c 文件中&#xff0c;start_kernel 相当于内核的 main 函数。打开这个函数&#xff0c;你会发现&#xff0c;里面是各种各样初始化函数 XXXX_init。 在操作系统里面&#xff0c;先要有个创始进程&#xff0c;有一行指令…

Quartus调用FIFO-IP核verilog,DE1开发板,代码和视频

名称&#xff1a;Quartus调用FIFO-IP核&#xff0c;完成数据的求和 软件&#xff1a;Quartus 语言&#xff1a;Verilog 代码功能&#xff1a; 题目&#xff1a;FIFO-IP核的调用 主要内容&#xff1a;调用两个FIFO-IP核&#xff0c;完成2行数据的求和 技术参数&#xff1a…