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

java 使用 Log4j2 写日志 实现每小时滚动日志并按天分目录存储

java 使用 Log4j2 写日志文件

最终要实现的目标:

每小时滚动日志文件
单个文件超过100MB立即滚动
按天分目录存储
保留最近30天日志

第一步 在 main目录下 创建 resources 目录

image

 设置目录 为  Resources 

image

第二步 在 resources 目录 下 创建  log4j2.xml 文件

log4j2.xml 

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<Configuration status="info" monitorInterval="60"><!--定义了两个常量方便后面复用 --><properties><!--生成的日志文件目录地址  --><property name="LOG_HOME">logs/</property><!--日志文件名称 --><property name="FILE_NAME">LogFile</property></properties><!--先定义所有的appender--><Appenders><!-- 定义控制台输出 --><Console name="Console" target="SYSTEM_OUT"><!--输出日志的格式--><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %l - %msg%n" /></Console><!--满足一定条件后,就重命名原日志文件用于备份,并从新生成一个新的日志文件 --><!--fileName:指定当前日志文件的位置和文件名称   filePattern:指定当发生Rolling时,文件的转移和重命名规则--><RollingFile name="uleWalletEjbLogFile"fileName="${LOG_HOME}/${FILE_NAME}.log"filePattern="${LOG_HOME}/$${date:yyyy-MM-dd}/${FILE_NAME}-%d{yyyy-MM-dd HH}-%i.log"><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %l - %msg%n" /><Policies><!--TimeBasedTriggeringPolicy这个配置需要和filePattern结合使用,注意filePattern中配置的文件重命名规则是${FILE_NAME}-%d{yyyy-MM-dd HH-mm}-%i,最小的时间粒度是mm,即分钟,TimeBasedTriggeringPolicy指定的size是1,结合起来就是每1分钟生成一个新文件。如果改成%d{yyyy-MM-dd HH},最小粒度为小时,则每一个小时生成一个文件。  --><TimeBasedTriggeringPolicy interval="1" /><!--SizeBasedTriggeringPolicy  指定当文件体积大于size指定的值时,触发Rolling 2048 MB --><SizeBasedTriggeringPolicy size="20 MB" /></Policies><DefaultRolloverStrategy max="30" /></RollingFile></Appenders><Loggers><Root level="DEBUG"><AppenderRef ref="Console" /><AppenderRef ref="uleWalletEjbLogFile" /></Root><!-- 过滤掉 指定类的debug --><Logger name="org.apache.activemq" level="debug" additivity="false"></Logger><!-- 收到坐席消息<Logger name="com.joincall.j3c.agentservice.AbstractAgentConnector" level="info" additivity="false"><AppenderRef ref="Console" /></Logger>--></Loggers>
</Configuration>

pom.xml

   <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.17.2</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.17.2</version></dependency>

App.java

package com.JoinCallCCActiveMQToDM;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/**  App.java  */
public class App {protected static final Logger logger = LoggerFactory.getLogger(App.class);public static void main(String[] args) {//System.out.println("Hello World!");logger.info("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"  );logger.info("@@@@@@@@@@@@@ 启动程序V1.1.8 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"  );logger.info("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"  );}
}

 

http://www.sczhlp.com/news/5966/

相关文章:

  • canvas之修改Base64图片中不透明部分的颜色
  • 如何通过Python SDK新建一个DashVector Client
  • 5.输出正整数二进制1的个数 - hml
  • threejs之将张纹理图片组成材质组
  • PointCLIP
  • 样式3
  • lag功能测试
  • 甘特图关键路径怎么找?一文搞懂它对项目管理的决定性作用!
  • 使用Jumpserver 作业中心批量安装 Zabbix-agent
  • 用大白话讲透 PS 钢笔工具和贝塞尔曲线
  • 样式2
  • 将csv数据导入SQLite
  • C++11 原始字符串字面量(Raw String Literal)
  • 8.5
  • 学习笔记:五种基础排序C语言实现
  • 4.打印空心菱形 - hml
  • 记一次edu渗透之从任意文件访问漏洞到后门植入
  • python 堆
  • DP
  • 硬件设计学习DAY36——反激电源设计全攻略 - 教程
  • edu 102 E(dijkstra多状态设计)
  • 程序员最强外设,这才是Coding该有的样子!
  • 闭源精密战与开源敏捷性:能源管理系统的双线引领
  • 工厂工地如何利用MyEMS实现安全绿色生成,助力企业节能减排,降本增效
  • 为ChatGPT和API集成构建MCP服务器
  • 洛谷P3799 小 Y 拼木棒(暴力、组合数学)
  • 样式1
  • MyEMS开源能源管理系统实际案例分析
  • 单细胞抗体筛选服务|单B细胞克隆技术|高效重组抗体表达
  • C# Avalonia 08 - BindToFont