Log4j配置实例(log4j.xml)

简介: 一个完整的xml配置文件(propertities文件功能不全,不能使用过滤器,并且个人认为xml格式比较清晰,易读)。   附带测试程序。 Java代码 import java.

一个完整的xml配置文件(propertities文件功能不全,不能使用过滤器,并且个人认为xml格式比较清晰,易读)。

 

附带测试程序。

Java代码
  1. import java.net.URL;  
  2.   
  3. import org.apache.log4j.xml.DOMConfigurator;  
  4.   
  5. /** 
  6.  * 单实例 读取log4j配置文件,初始化log4j 
  7.  *  
  8.  */  
  9. public class Log4jXMLConfig  
  10. {  
  11.     private static Log4jXMLConfig instance;  
  12.   
  13.     public static synchronized Log4jXMLConfig initia()  
  14.     {  
  15.         if (instance == null)  
  16.         {  
  17.             return new Log4jXMLConfig();  
  18.         }  
  19.         return instance;  
  20.     }  
  21.   
  22.     private Log4jXMLConfig()  
  23.     {  
  24.         final URL url = Log4jXMLConfig.class.getResource("log4j.xml");  
  25.         DOMConfigurator.configure(url);  
  26.     }  
  27. }  
import java.net.URL;import org.apache.log4j.xml.DOMConfigurator;/** * 单实例 读取log4j配置文件,初始化log4j * */public class Log4jXMLConfig{ private static Log4jXMLConfig instance; public static synchronized Log4jXMLConfig initia() { if (instance == null) { return new Log4jXMLConfig(); } return instance; } private Log4jXMLConfig() { final URL url = Log4jXMLConfig.class.getResource("log4j.xml"); DOMConfigurator.configure(url); }} 

 

 

 

Xml代码
  1. xml version="1.0" encoding="UTF-8" ?>  
  2. nbsp;log4j:configuration SYSTEM "log4j.dtd">  
  3.   
  4. log4j:configuration>  
  5.   
  6.  appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">  
  7.   layout class="org.apache.log4j.PatternLayout">  
  8.    param name="ConversionPattern"  
  9.     value="%d - %c -%-4r [%t] %-5p %x - %m%n" />  
  10.   layout>  
  11.     
  12.      
  13.   filter class="org.apache.log4j.varia.LevelRangeFilter">  
  14.    param name="LevelMax" value="ERROR"/>  
  15.    param name="LevelMin" value="TRACE"/>  
  16.   filter>  
  17.  appender>  
  18.    
  19.  appender name="FILE" class="org.apache.log4j.FileAppender">  
  20.   param name="File" value="C:/log4j1.log"/>  
  21.   layout class="org.apache.log4j.PatternLayout">  
  22.    param name="ConversionPattern"  
  23.     value="%d - %c -%-4r [%t] %-5p %x - %m%n" />  
  24.   layout>  
  25.  appender>   
  26.    
  27.  appender name="DATABASE" class="org.apache.log4j.jdbc.JDBCAppender">  
  28.   param name="URL" value="jdbc:oracle:thin:@192.168.0.59:1521:oanet"/>  
  29.   param name="driver" value="oracle.jdbc.driver.OracleDriver"/>  
  30.   param name="user" value="hdczoa"/>  
  31.   param name="password" value="system"/>      
  32.   layout class="org.apache.log4j.PatternLayout">  
  33.    param name="ConversionPattern"  
  34.     value="INSERT INTO hdczoa.LOG4J(stamp,thread, info_level,class,message) VALUES ('%d', '%t', '%p', '%c', %m)" />  
  35.   layout>  
  36.  appender>  
  37.    
  38.     
  39.  appender name="MAIL"  
  40.   class="org.apache.log4j.net.SMTPAppender">  
  41.   param name="threshold" value="debug" />  
  42.      
  43.   param name="BufferSize" value="512" />   
  44.   param name="From" value="test@163.com" />  
  45.   param name="SMTPHost" value="smtp.163.com" />  
  46.   param name="Subject" value="juyee-log4jMessage" />  
  47.   param name="To" value="test@163.com" />  
  48.   param name="SMTPUsername" value="test" />  
  49.   param name="SMTPPassword" value="test" />  
  50.   layout class="org.apache.log4j.PatternLayout">  
  51.    param name="ConversionPattern"  
  52.     value="%-d{yyyy-MM-dd HH:mm:ss.SSS} [%p]-[%c] %m%n" />  
  53.   layout>  
  54.  appender>  
  55.   
  56.  appender name="ASYNC" class="org.apache.log4j.AsyncAppender">  
  57.   param name="BufferSize" value="256" />  
  58.   appender-ref ref="DATABASE" />  
  59.  appender>  
  60.    
  61.     
  62.  logger name="com.litt2.log4j" additivity="false">     
  63.         level value="WARN" />     
  64.         appender-ref ref="CONSOLE" />     
  65.     logger>  
  66.   
  67.     
  68.  category name="com.litt3">     
  69.     level value="DEBUG" />   
  70.        appender-ref ref="CONSOLE" />  
  71.        appender-ref ref="MAIL" />  
  72.   category>  
  73.    
  74.  root>  
  75.   priority value="debug" />  
  76.   appender-ref ref="CONSOLE" />  
  77.   appender-ref ref="FILE" />  
  78.  root>  
  79.   
  80.   
  81. log4j:configuration>  
<?xml version="1.0" encoding="UTF-8" ?>

 另外一个配置文件:

Xml代码
  1. xml version="1.0" encoding="UTF-8" ?>  
  2. nbsp;log4j:configuration SYSTEM "log4j.dtd">  
  3. log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">  
  4.   
  5.        
  6.        
  7.        
  8.        
  9.        
  10.        
  11.        
  12.        
  13.        
  14.       
  15.        
  16.        
  17.        
  18.        
  19.        
  20.        
  21.        
  22.   
  23.   
  24.     appender name="filelog_appender"  
  25.         class="org.apache.log4j.RollingFileAppender">  
  26.            
  27.         param name="File" value="log/testlog4jxml_all.log" />  
  28.            
  29.         param name="Append" value="true" />  
  30.            
  31.         param name="MaxFileSize" value="1MB" />  
  32.            
  33.         param name="MaxBackupIndex" value="10000" />  
  34.            
  35.         layout class="org.apache.log4j.PatternLayout">  
  36.             param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p (%c:%L)- %m%n" />  
  37.         layout>  
  38.     appender>  
  39.   
  40.   
  41.     appender name="filelog_daily" class="org.apache.log4j.DailyRollingFileAppender">     
  42.         param name="File" value="log/daily.log" />     
  43.         param name="DatePattern" value="'daily.'yyyy-MM-dd'.log'" />     
  44.         layout class="org.apache.log4j.PatternLayout">     
  45.             param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] (%c:%L) - %m%n" />     
  46.         layout>     
  47.     appender>   
  48.   
  49.   
  50.     appender name="console" class="org.apache.log4j.ConsoleAppender">  
  51.         layout class="org.apache.log4j.PatternLayout">  
  52.             param name="ConversionPattern"  
  53.                 value="%d{yyyy-MM-dd HH:mm:ss} %-5p: %m%n" />  
  54.                
  55.         layout>  
  56.     appender>  
  57.   
  58. appender name="EMAIL_QQ" class="org.apache.log4j.net.SMTPAppender">  
  59.         param name="Threshold" value="INFO"/>  
  60.         param name="BufferSize" value="128" />  
  61.         param name="SMTPHost" value="smtp.qq.com" />  
  62.         param name="SMTPUsername" value="cjjvictory" />  
  63.         param name="SMTPPassword" value="***" />  
  64.         param name="From" value="cjjvictory@qq.com" />  
  65.         param name="To" value="cjjvictory@gmail.com" />  
  66.         param name="Subject" value="测试邮件发送" />  
  67.         param name="LocationInfo" value="true" />  
  68.         param name="SMTPDebug" value="true" />  
  69.         layout class="org.cjj.log4j.extend.PatternLayout_zh">  
  70.             param name="ConversionPattern" value="[%d{ISO8601}] %-5p %c %m%n"/>  
  71.         layout>  
  72.     appender>  
  73.   
  74.   
  75.     appender name="ASYNC_test" class="org.apache.log4j.AsyncAppender">     
  76.      param name="BufferSize" value="10"/>     
  77.      appender-ref ref="EMAIL_QQ"/>  
  78.    appender>  
  79.   
  80.     
  81.     category name="org.cjj" additivity="false">  
  82.                   
  83.         level value="ERROR" />  
  84.         appender-ref ref="filelog_daily" />  
  85.         appender-ref ref="daily_appender" />  
  86.         appender-ref ref="console" />  
  87.         appender-ref ref="ASYNC_test" />  
  88.  category>  
  89.   
  90. log4j:configuration> 

Web配置log4j,需求增加以下内容到WEB-INF/web.xml
  
        webAppRootKey
        smilecargo.root
   
   
        log4jConfigLocation
        classpath:log4j.xml
   
   
        log4jRefreshInterval
        60000
   
  
        org.springframework.web.util.Log4jConfigListener
   
${smilecargo.root}是web工程相对路径
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
11月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
958 0
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
5252 32
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
1639 0
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1947 5
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
1857 3
|
安全 BI 网络安全
EventLog Analyzer 如何满足等保合规要求?密码有效期、产品日志保留、配置备份三大核心问题全面解答
EventLog Analyzer(ELA)助力企业满足网络安全等级保护要求,支持配置自动/手动备份、日志180天留存及密码策略管理,提升合规性与安全运营效率。
414 0
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
1929 4
|
JSON 安全 Go
Go语言项目工程化 —— 日志、配置、错误处理规范
本章详解Go语言项目工程化核心规范,涵盖日志、配置与错误处理三大关键领域。在日志方面,强调其在问题排查、性能优化和安全审计中的作用,推荐使用高性能结构化日志库zap,并介绍日志级别与结构化输出的最佳实践。配置管理部分讨论了配置分离的必要性,对比多种配置格式如JSON、YAML及环境变量,并提供viper库实现多环境配置的示例。错误处理部分阐述Go语言显式返回error的设计哲学,讲解标准处理方式、自定义错误类型、错误封装与堆栈追踪技巧,并提出按调用层级进行错误处理的建议。最后,总结各模块的工程化最佳实践,助力构建可维护、可观测且健壮的Go应用。
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
443 22
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
11112 2