Log4j配置实践

按功能模块管理日志的Log4j配置实践 Log4j是一个功能强大的Java日志框架,它允许开发人员通过配置文件来控制日志信息的输出方式和位置。使用Log4j,开发者可以灵活地定义日志记录的级别,格式以及输出目的地。在软件开发和维护的过程中,日志级别是帮助开发者快速定位和诊断问题的重要工具。Log4j定义了以下几种日志级别:DEBUG:细粒度的信息事件,主要用于开发和调试过程中;INFO:记录程序运行过程中的信息性事件;WARN:记录可能表明已经或即将出现的问题的事件; 阅读详情

在使用log4j打印应用日志的时候,有同事问我,同一个logger的日志的不同level可以输出到不同的文件么?这个。。。我告诉他当然可以,在我们使用Log4j的生产环境中一直都是把所有logger的error 以上level日志统一输入到错误日志文件,方便系统监控。

其实这个很容易实现,我们的做法就是在logger里面加入2个appender,appender设置不同的min和max level,具体如下:

<logger name="com...." additivity="false">
   <appender-ref ref="normal"/>
   <appender-ref ref="error"/>
</logger>

<appender name="normal" class="org.apache.log4j.FileAppender">
   <param name="file" value="${log}/normal.log"/>
   <param name="append" value="true"/>
   <layout class="org.apache.log4j.PatternLayout">
      <param name="conversionPattern" value="%m%n"/>
   </layout>
   <filter>
       <param name="levelMax" value="warn" />
   </filter>
</appender>


<appender name="error" class="org.apache.log4j.FileAppender">
   <param name="file" value="${log}/error.log"/>
   <param name="append" value="true"/>
   <layout class="org.apache.log4j.PatternLayout">
      <param name="conversionPattern" value="%m%n"/>
   </layout>
   <filter>
       <param name="levelMin" value="error" />
   </filter>
</appender>


Note:在使用Log4j的Web应用测试环境中,我们经常会结合Spring的Log4jConfigListener来实现log的动态更新。下面的例子说明每6秒读取一次web-fin/log4j.xml的变动

<context-param>   
      <param-name>log4jConfigLocation</param-name>   
      <param-value>WEB-INF/log4j.xml</param-value>   
  </context-param>   
  
  <context-param>   
      <param-name>log4jRefreshInterval</param-name>   
      <param-value>6000</param-value>   
  </context-param>   
  
  <listener>   
      <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>   
  </listener>  


Log4j.xml文件例子

<?xml version="1.0" encoding="UTF-8"?>    
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
	<appender name="normal" class="org.apache.log4j.RollingFileAppender">
		<param name="file" value="normal.log" />
		<param name="MaxBackupIndex" value="10" />
		<param name="maxFileSize" value="10KB" />
		<param name="append" value="true" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="conversionPattern" value="%m%n" />
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMax" value="warn" />
		</filter>
	</appender>


	<appender name="error" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="file" value="error.log" />
		<param name="append" value="true" />
		<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="conversionPattern" value="%m%n" />
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMin" value="error" />
		</filter>
	</appender>

	<logger name="com.elulian.CustomerSecurityManagementSystem" additivity="false">
		<level value="trace" />
		<appender-ref ref="normal" />
		<appender-ref ref="error" />
	</logger>

	<root>
	    <level value="info" />
		<appender-ref ref="normal" />
		<appender-ref ref="error" />
	</root>
</log4j:configuration> 




log4j.properties深入解析与配置实践指南 log4j是一款广泛使用的Java日志记录框架,它为开发者提供了记录日志信息的强大工具,这些信息可以输出到控制台、文件、GUI组件、套接字服务器等多种目的地。自2001年首次发布以来,log4j经历了多个版本的迭代和升级,每一个版本都在尝试解决新的问题,并增强其功能,以适应不断变化的应用需求。log4j框架的设计目的是为了帮助开发者捕捉重要信息,调试应用程序,记录生产环境中的事件以及改善错误追踪。log4j的核心概念包括日志级别、日志记录器、Appender以及Layout。 阅读详情

相关推荐

基于树莓派与ROS的桌面机器人开发:从硬件组装到AI集成实战

嵌入式系统与机器人操作系统(ROS)是构建智能硬件的核心技术基础。嵌入式系统为设备提供了专用计算与控制能力,而ROS作为机器人开发的中间件框架,通过节点、话题和服务等机制,实现了感知、决策、执行等模块间的松耦合通信与高效集成。这种架构极大地提升了机器人系统的可扩展性与可维护性,其技术价值在于能够将复杂的AI算法,如计算机视觉和语音识别,与实体硬件执行机构无缝结合,从而快速构建出具备环境交互能力的智能体。在桌面机器人、教育套件及服务机器人原型开发等应用场景中,该技术栈尤为适用。本文以开源的Wall-E桌面机器

weixin_26775679的博客 650

log4j2常用Appender介绍

Log4j2的Appenders充分考虑了日志事件的输出、包装以及过滤转发的可能,包括最基本的输出到本地文件、输出到远程主机,对文件进行封装、注入,并且还能按照日志文件的时间点、文件大小等条件进行自动封存。例如,想要将几个不同源的日志汇集到一起,可以用FlumeAppender;想要在LogEvent中注入信息,可以用RewriteAppender;想要让系统按照设定的时间间隔自动封存日志信息,可以用RollingFileAppender(每隔一定时间自动保存一份新增的日志文件,并按照时间戳等指定格式命名)

海瑞@mt 1万+

去面试游戏测试工程师,面试官看着我的简历呆住了

!我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

MXB1220的博客 7328

自定义log4j Appender

MySQL中可以自定义Appender,这里给出一个自定义的将日志输出到指定的文件的appender: 1、继承AbstractAppender类 FileAppender.class @Plugin(name = FileAppender.FILE_APPENDER, category = "Core", elementType = Appender.ELEMENT_TYPE, pr...

timchen525的专栏 1549

【小白教程】本地部署VLM-R1模型(使用Docker)

通过Docker本地部署VLM-R1大模型,详细教程。

m0_69855053的博客 2938

CUDA系列-Stream-1

This section describes static aspects of the CUSW_UNIT_STREAM unit’s architecture.和stream相关的其它Unit主要有Channel,Sync,Memmgr A CUDA stream is a software FIFO queue that allows commands like kernel launch and memcpy to be enqueued in it. The enqueued commands

weixin_43360707的博客 734

log4j2.x配置文件中各标签详解

log4j2.0以后我们通常在log4j2.xml中配置相关参数,在配置的时候我们需要理解这些参数的具体含义,下面列出了这些参数的解释。1、Logger 完成日志信息的处理<logger name="com.srd.ljzd" level="INFO" additivity="true"> <appender-ref ref="INFO" /> <appender-ref ref="

施勇 1万+

baostock实战:如何用Python批量下载多只股票的历史数据(含常见错误排查)

本文详细介绍了如何使用Python和baostock库批量下载多只股票的历史数据。内容涵盖从环境搭建、代码标准化到构建稳健的批量下载框架的全过程,并重点提供了高级错误处理、网络重试、数据验证及内存管理等实战解决方案,帮助用户高效构建股票数据处理流水线。

nice1的博客 1081

logback/log4j基本配置和标签详解

logback.xml基本配置,root标签appender-ref标签的用法,如何将日志输出到指定目录中

于琦海 1697

Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

Polyworks脚本开发学习笔记(十五)-利用Python连接Polyworks的COM组件

qq_43662503的博客 2501

第10章 shellcode实战:18 神级开源shellcode工具:donut

Donut是一款shellcode生成器,可将C/C++、C#生成的PE文件转换为shellcode文件,同时支持JS、XSL、VBS脚本转换为shellcode。以下“原生”EXE/DLL指非托管PE文件(包括并不限于C/C++、delphie等编写生成的可执行文件),可以直接由系统加载运行,区别于.Net生成的托管文件。被处理exe/dll为32位程序,则需要用32为的shellcode加载器启用,exe/dll为64位的就用64位shellcode加载器启用。

李小咖·网安技术库 2796

Log4j2之Appenders

前言   Appender按网络释义,有“输出目的地”之意。官网给出的定义是:“Appenders are responsible for delivering LogEvents to their destination.”。Log4j2为使用者提供了13种非常实用的Appenders,使用者可用方便的调用这13种Appender来控制日志的输出。 摘要   Log4j2的App...

a512977208的博客 821

计算机组成原理(第三版)唐朔飞-第六章计算机的运算方法-课后习题(1-16)

计算机组成原理(第三版)唐朔飞-第六章计算机的运算方法-课后习题(1-16)

weixin_45735391的博客 8万+

[log4j]从零开始深入解析日志配置的最佳实践

Log4j是一个功能强大且灵活的日志框架,通过深入理解其配置选项和最佳实践,可以显著提升应用程序的可维护性和可靠性。- `PatternLayout`定义了日志的输出格式,其中`%d`表示时间,`%p`表示日志级别,`%c`表示类名,`%L`表示行号,`%m`表示日志消息。- `MaxFileSize`和`MaxBackupIndex`分别定义了单个文件的最大大小和备份文件的数量。- `console`和`file`是Appender的名称,表示日志将输出到控制台和文件。

jKYIcIon的博客 340

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

log4j2配置实践

<?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --> <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出--> <!--monit.

pocher的博客 529

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

log4j2_实践_log4j2的配置

log4j2的配置log4j2.xml配置代码解释及问题一.结果说明二.配置说明Filter1、ThresholdFilter2、RegexFilter3、TimeFilter三.踩过的坑1、ThresholdFilter ERROR 错误2、依赖问题3、Spring5.x的集成 log4j2.xml配置代码 <?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN

迷尔柯 的博客 3966

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

企业级项目中的Log4j2配置最佳实践

实际体验发现,平台的一键部署功能特别适合演示这种需要多环境验证的场景,无需手动搭建全套Kubernetes环境就能测试日志系统的各种配置效果,大大缩短了调试周期。上可以快速验证,平台内置的DeepSeek模型能智能生成基础配置代码,尤其方便测试不同环境下的日志行为差异。在企业级Java应用开发中,日志系统是监控和排查问题的关键基础设施。最近在项目中遇到了经典的。这个报错通常发生在Log4j2初始化阶段,根本原因是缺少核心日志实现依赖。报错,通过这次实战解决了问题并优化了整个日志体系,分享下经验总结。

CrystalwaveEagle34的博客 736

FLume收集log4j日志配置实践

增加pom依赖:         org.apache.flume.flume-ng-clients         flume-ng-log4jappender         1.5.1      项目中的log4j配置文件中加入以下配置: log4j.rootLogger=flume log4j.appender.flume=org.apac

dianshuiwuhen的专栏 1672

Log4J 最佳实践之全能配置文件

下面给出得Log4J配置文件实现了输出到控制台,文件,回滚文件,发送日志邮件,输出到数据库日志表,自定义标签等全套功能。log4j.rootLogger=DEBUG,CONSOLE,A1,im#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASElog4j.addivity.org.apache=true#################### Console

KevinAAA的专栏 1690

Log4j日志框架:从基础配置到企业级应用实践

日志系统是软件开发中不可或缺的基础组件,用于记录程序运行状态和异常信息。Log4j作为Java生态中最经典的日志框架,通过Logger、Appender和Layout三大核心组件实现灵活的日志管理。其分级日志控制机制(DEBUG/INFO/WARN/ERROR等)允许开发者根据不同环境调整日志详细程度,而多样化的输出方式(控制台、文件、数据库等)满足不同场景需求。在分布式系统和微服务架构中,结合ELK等工具可以实现日志的集中收集与分析。本文以Log4j 1.x为例,详细讲解配置技巧、性能优化方案以及常见问题

weixin_33851177的博客 404

LOG4J配置及实践

日志级别: ERROR > VARN > INFO > DEBUG > TRACE 日志的级别越低,输出的信息越详细,即只输出不小于设置级别的信息 使用: 配置文件 #设置全局日志配置,输入ERROR级别,stdout输出到控制台 log4j.rootLogger=ERROR,stdout #设置自定义的日志级别 log4j.logger.cn.wolfcode.mybat...

qq_45168703的博客 141

[log4j]深入解析日志级别配置从DEBUG到FATAL的最佳实践

logger.debug(用户ID:{} 执行操作:{}, 参数:{}, userId, operation, params);logger.info(订单创建成功,订单号:{},金额:{}, orderNo, amount);logger.error(支付服务调用失败,订单号:{}, orderNo, exception);logger.warn(数据库连接超时,尝试重连,当前重试次数:{}, retryCount);logger.fatal(数据库连接池耗尽,系统即将停止, exception);

IpIKxory的博客 432

springBoot配置log4j2实践

参考文章: springBoot完美配置log4j2 https://blog.youkuaiyun.com/sdlyjzh/article/details/79416607 springcloud--日志链路追踪之log4j2 Java日志体系(log4j2) ---------------------------------------------------------------------...

justlpf的专栏 1373
上一篇: Java Simon--性能瓶颈分析工具
下一篇: Guava RateLimiter在Web应用中的使用
开心的D哥
博客等级 码龄22年 63粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值