一份比较完整的log4j的xml配置
log4j配置文件模板大全
log4j配置⽂件模板⼤全log4j.xml ⽂件配置模板:1. <?xml version="1.0" encoding="UTF-8"?>2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">3.4. <log4j:configuration debug="true" xmlns:log4j='/log4j/' >5.6. <!-- ========================== ⾃定义输出格式说明================================ -->7. <!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL -->8. <!-- %r 输出⾃应⽤启动到输出该log信息耗费的毫秒数 -->9. <!-- %c 输出所属的类⽬,通常就是所在类的全名 -->10. <!-- %t 输出产⽣该⽇志事件的线程名 -->11. <!-- %n 输出⼀个回车换⾏符,Windows平台为“/r/n”,Unix平台为“/n” -->12. <!-- %d 输出⽇志时间点的⽇期或时间,默认格式为ISO8601,也可以在其后指定格式,⽐如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10⽉18⽇ 22:10:28,921 -->13. <!-- %l 输出⽇志事件的发⽣位置,包括类⽬名、发⽣的线程,以及在代码中的⾏数。
举例:Testlo4.main(TestLog4.java:10) -->14. <!-- ========================================================================== -->15.1. <!-- ========================== 输出⽅式说明================================ -->2. <!-- Log4j提供的appender有以下⼏种: -->3. <!-- org.apache.log4j.ConsoleAppender(控制台), -->4. <!-- org.apache.log4j.FileAppender(⽂件), -->5. <!-- org.apache.log4j.DailyRollingFileAppender(每天产⽣⼀个⽇志⽂件), -->6. <!-- org.apache.log4j.RollingFileAppender(⽂件⼤⼩到达指定尺⼨的时候产⽣⼀个新的⽂件), -->7. <!-- org.apache.log4j.WriterAppender(将⽇志信息以流格式发送到任意指定的地⽅) -->8. <!-- ========================================================================== -->9.10. <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">11. <!-- <param name="Target" value="System.out"/> -->12. <layout class="org.apache.log4j.PatternLayout">13. <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c Method: %l ]%n%p:%m%n"/>14. </layout>15. <!-- <filter class="org.apache.log4j.varia.LevelRangeFilter">16. <param name="LevelMin" value="DEBUG"/>17. <param name="LevelMax" value="DEBUG"/>18. </filter> -->19. </appender>20. <!-- output the debug -->21. <!-- <appender name="log4jDebug" class="org.apache.log4j.DailyRollingFileAppender">22. <param name="File" value="log_"/>23. <param name="MaxFileSize" value="KB"/>24. <param name="MaxBackupIndex" value="2"/> -->25. <appender name="log4jDebug" class="org.apache.log4j.rolling.RollingFileAppender">26. <param name="Append" value="true"/>27. <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">28. <param name="FileNamePattern" value="./log/log_%d{yyyy-MM-dd}.log" />29. </rollingPolicy>30. <layout class="org.apache.log4j.PatternLayout">31. <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c Method: %l ]%n%p:%m%n"/>32. </layout>33. <filter class="org.apache.log4j.varia.LevelRangeFilter">34. <param name="LevelMin" value="DEBUG"/>35. <param name="LevelMax" value="DEBUG"/>36. </filter>37. </appender>38. <!-- <appender name="log4jInfo" class="org.apache.log4j.DailyRollingFileAppender">39. <param name="File" value="log_"/>40. <param name="DatePattern" value="'.log'yyyy-MM-dd"/>41. <param name="Append" value="true"/>42. <param name="MaxFileSize" value="5KB"/>43. <param name="MaxBackupIndex" value="2"/> -->44. <appender name="log4jInfo" class="org.apache.log4j.rolling.RollingFileAppender">45. <param name="Append" value="true"/>46. <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">47. <param name="FileNamePattern" value="./log/log_%d{yyyy-MM-dd}.log" />48. </rollingPolicy>49. <layout class="org.apache.log4j.PatternLayout">50. <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c Method: %l ]%n%p:%m%n"/>51. </layout>52. <filter class="org.apache.log4j.varia.LevelRangeFilter">53. <param name="LevelMin" value="INFO"/>54. <param name="LevelMax" value="INFO"/>55. </filter>56. </appender>57. <!-- <appender name="log4jWarn" class="org.apache.log4j.DailyRollingFileAppender">58. <param name="File" value="/log_"/>59. <param name="DatePattern" value="'.log'yyyy-MM-dd"/>60. <param name="Append" value="true"/>61. <param name="MaxFileSize" value="5KB"/>62. <param name="MaxBackupIndex" value="2"/> -->63. <appender name="log4jWarn" class="org.apache.log4j.rolling.RollingFileAppender">64. <param name="Append" value="true"/>65. <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">66. <param name="FileNamePattern" value="./log/log_%d{yyyy-MM-dd}.log" />67. </rollingPolicy>68. <layout class="org.apache.log4j.PatternLayout">69. <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c Method: %l ]%n%p:%m%n"/>70. </layout>71. <filter class="org.apache.log4j.varia.LevelRangeFilter">72. <param name="LevelMin" value="WARN"/>73. <param name="LevelMax" value="WARN"/>74. </filter>75. </appender>76. <!-- <appender name="log4jError" class="org.apache.log4j.DailyRollingFileAppender"> -->77. <appender name="log4jError" class="org.apache.log4j.rolling.RollingFileAppender">78. <!-- <param name="File" value="/error_"/>79. <param name="DatePattern" value="'.log'yyyy-MM-dd"/> -->80. <param name="Append" value="true"/>81. <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">82. <param name="FileNamePattern" value="./log/error_%d{yyyy-MM-dd}.log" />83. </rollingPolicy>84.85. <!-- <param name="MaxFileSize" value="5KB"/> -->86. <!-- <param name="MaxBackupIndex" value="2"/> -->87. <layout class="org.apache.log4j.PatternLayout">88. <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c Method: %l]%n%p:%m%n"/>89. </layout>90. <filter class="org.apache.log4j.varia.LevelRangeFilter">91. <param name="LevelMin" value="ERROR"/>92. <param name="LevelMax" value="ERROR"/>93. </filter>94. </appender>95. <!--通过<category></category>的定义可以将各个包中的类⽇志输出到不同的⽇志⽂件中-->96. <!-- <category name="com.gzy">97. <priority value="debug" />98. <appender-ref ref="log4jTestLogInfo" />99. <appender-ref ref="log4jTestDebug" />100. </category> -->101. <appender name="MAIL"102. class=".SMTPAppender">103. <param name="threshold" value="debug" />104. <!-- ⽇志的错误级别105. <param name="threshold" value="error"/>106. -->107. <!-- 缓存⽂件⼤⼩,⽇志达到512K时发送Email -->108. <param name="BufferSize" value="512" /><!-- 单位K -->109. <param name="From" value="test@" />110. <param name="SMTPHost" value="" />111. <param name="Subject" value="juyee-log4jMessage" />112. <param name="To" value="test@" />113. <param name="SMTPUsername" value="test" />114. <param name="SMTPPassword" value="test" />115. <layout class="org.apache.log4j.PatternLayout">116. <param name="ConversionPattern"117. value="%-d{yyyy-MM-dd HH:mm:ss.SSS a} [%p]-[%c] %m%n" />118. </layout>119. </appender>120.121.122. <root>123. <priority value="debug"/>124. <appender-ref ref="CONSOLE" />125. <appender-ref ref="log4jDebug" />126. <appender-ref ref="log4jInfo" />127. <appender-ref ref="log4jWarn" />128. <appender-ref ref="log4jError" />129. <!-- <appender-ref ref="MAIL" /> -->130. </root>131. </log4j:configuration>log4j.properties⽂件配置模板:1. # priority :debug<info<warn<error2.#you cannot specify every priority with different file for log4j3.log4j.rootLogger=debug,stdout,info,debug,warn,error4.5.#console6.log4j.appender.stdout=org.apache.log4j.ConsoleAppender7.yout=org.apache.log4j.PatternLayout8.yout.ConversionPattern= [%d{yyyy-MM-dd HH:mm:ss a}]:%p %l%m%n9.#info log10.=info11.=org.apache.log4j.DailyRollingFileAppender12..DatePattern='_'yyyy-MM-dd'.log'13..File=./src/com/hp/log/info.log14..Append=true15..Threshold=INFO16.yout=org.apache.log4j.PatternLayout17.yout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n 18.#debug log19.log4j.logger.debug=debug20.log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender21.log4j.appender.debug.DatePattern='_'yyyy-MM-dd'.log'22.log4j.appender.debug.File=./src/com/hp/log/debug.log23.log4j.appender.debug.Append=true24.log4j.appender.debug.Threshold=DEBUG25.yout=org.apache.log4j.PatternLayout26.yout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n 27.#warn log28.log4j.logger.warn=warn29.log4j.appender.warn=org.apache.log4j.DailyRollingFileAppender30.log4j.appender.warn.DatePattern='_'yyyy-MM-dd'.log'31.log4j.appender.warn.File=./src/com/hp/log/warn.log32.log4j.appender.warn.Append=true33.log4j.appender.warn.Threshold=WARN34.yout=org.apache.log4j.PatternLayout35.yout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n 36.#error37.log4j.logger.error=error38.log4j.appender.error = org.apache.log4j.DailyRollingFileAppender39.log4j.appender.error.DatePattern='_'yyyy-MM-dd'.log'40.log4j.appender.error.File = ./src/com/hp/log/error.log41.log4j.appender.error.Append = true42.log4j.appender.error.Threshold = ERROR43.yout = org.apache.log4j.PatternLayout44.yout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n。
log4j配置详解(非常详细)
log4j配置详解(⾮常详细)Log4J的配置⽂件(Configuration File)就是⽤来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。
通过配置,可以创建出Log4J的运⾏环境。
1. 配置⽂件Log4J配置⽂件的基本格式如下:2. 在代码中初始化Logger:1)在程序中调⽤BasicConfigurator.configure()⽅法:给根记录器增加⼀个ConsoleAppender,输出格式通过PatternLayout设为"%-4r [%t] %-5p %c %x - %m%n",还有根记录器的默认级别是Level.DEBUG.2)配置放在⽂件⾥,通过命令⾏参数传递⽂件名字,通过PropertyConfigurator.configure(args[x])解析并配置;3)配置放在⽂件⾥,通过环境变量传递⽂件名等信息,利⽤log4j默认的初始化过程解析并配置;4)配置放在⽂件⾥,通过应⽤服务器配置传递⽂件名等信息,利⽤⼀个特殊的servlet来完成配置。
3. 为不同的 Appender 设置⽇志输出级别:当调试系统时,我们往往注意的只是异常级别的⽇志输出,但是通常所有级别的输出都是放在⼀个⽂件⾥的,如果⽇志输出的级别是BUG!?那就慢慢去找吧。
这时我们也许会想要是能把异常信息单独输出到⼀个⽂件⾥该多好啊。
当然可以,Log4j已经提供了这样的功能,我们只需要在配置中修改Appender的Threshold就能实现,⽐如下⾯的例⼦:运⾏⼀下,看看异常信息是不是保存在了⼀个单独的⽂件error.log中。
----------------------------------------------------------------------------------------------------------------------------------------------------资料:============================================================================================= =============================================================================================== log4j.properties⽂件例⼦1.================================================================这个⽂件就是本⽂的重点,也就是log4j的配置⽂件。
Maven项目配置log4j2.xml
Maven项⽬配置log4j2.xmllog4j2相对于log4j 1.x有了脱胎换⾻的变化,其官⽹宣称的优势有多线程下10⼏倍于log4j 1.x和logback的⾼吞吐量、可配置的审计型⽇志、基于插件架构的各种灵活配置等。
以下是log4j2在maven 项⽬中的配置步骤:1、在pom.xml⽂件中引⼊log4j依赖<!-- https:///artifact/org.apache.logging.log4j/log4j-core --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.10.0</version></dependency><!-- https:///artifact/org.apache.logging.log4j/log4j-api --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.10.0</version></dependency><!-- https:///artifact/org.apache.logging.log4j/log4j-web --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-web</artifactId><version>2.10.0</version></dependency><!-- https:///artifact/com.lmax/disruptor --><dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId><version>3.4.1</version></dependency>2、配置log4j2.xml⽂件放置到src/main/resources⽬录下<?xml version="1.0" encoding="UTF-8"?><!--status : 这个⽤于设置log4j2⾃⾝内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出monitorInterval : Log4j能够⾃动检测修改配置⽂件和重新配置本⾝, 设置间隔秒数。
log4j2.xml 标准配置写法
一、概述log4j2是Apache Software Foundation的一个开源日志框架,广泛应用于Java应用程序的日志记录和管理。
在使用log4j2时,通常需要编写log4j2.xml文件进行配置。
本文将介绍log4j2.xml标准配置的写法,帮助读者更加有效地使用log4j2进行日志记录和管理。
二、log4j2.xml文件概述1. log4j2.xml是log4j2的配置文件,用于定义日志记录器、日志级别、输出目的地等配置信息。
2. log4j2.xml采用XML格式进行配置,通过定义各种元素和属性来实现对log4j2框架的配置和定制。
三、log4j2.xml标准配置写法在编写log4j2.xml文件时,可以按照以下标准配置进行操作:1. 配置根节点```xml<?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN" monitorInterval="30"><!-- 配置日志级别、Appenders等信息 --></Configuration>```其中,根节点<Configuration>包含了两个属性:status和monitorInterval。
status属性用于设置全局日志级别,monitorInterval属性用于指定log4j2监视配置文件变化的时间间隔。
2. 配置日志级别```xml<Loggers><Root level="debug"><AppenderRef ref="Console"/><AppenderRef ref="File"/></Root></Loggers>```在<Loggers>节点下,可以通过<Root>节点配置全局日志级别,并通过<AppenderRef>节点引用Appenders进行输出。
log4j2.xml配置
log4j2.xml配置log4j1.*版本在打印日志的时候不支持占位符,在打印日志的时候需要拼接起来。
所以我就讲log4j版本改为 2.*,log4j2.*版本支持占位符,在代码看上去就美观了很多。
首先下载log4j包地址:/log4j/2.x/download.html将log4j-api-2.*.jar、log4j-core-2.*.jar包放入lib文件夹下创建配置文件log4j 2.*有xml、json配置两种文件方式,并没有1.*版本的properties配置方式下面就以xml配置方式为例在src下创建一个log4j2.xml文件,注意是log4j2.xml内容如下:Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.<configuration status="off">3.<Properties>4.<Property name="LOG_HOME">${sys:catalina.home}/log s/AppNetAgeService</Property>5.<Property name="LOG_NAME">log.txt</Property>6.</Properties>7.<appenders>8.<Console name="Console" target="SYSTEM_OUT">9.<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread][%file:%line] - %msg%n"/>10.</Console>11.<RollingFile name="log" fileName="${LOG_HOME}/${ LOG_NAME}" filePattern="${LOG_HOME}/${LOG_NAME}.%d{yyy y-MM-dd}" append="true">12.<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread][%file:%line] - %msg%n" />13.<Policies>14.<TimeBasedTriggeringPolicy modulate="true" interval ="1" />15.</Policies>16.<DefaultRolloverStrategy max="180" />17.</RollingFile>18.</appenders>19.<loggers>20.<root level="DEBUG">21.<appender-ref ref="Console"/>22.<appender-ref ref="log"/>23.</root>24.</loggers>25.</configuration>注意事项:1、<root level="DEBUG"></root>这个标签中level等级,、log4j优先级分别为FATAL、ERROR、WARN、INFO、DEBUG, 如果level的值设置为ERROR,那么只有FATAL、ERROR等级的日志才会打印2、 <Property name="LOG_HOME">${sys:catalina.home}/logs/AppNetAgeSer vice</Property>,1.*版本中获取tomcat路径是${catalina.home},log4j2.*版本中获取tomcat路径是${sys:catalina.home}3、要在<root>标签中添加<appender-ref ref="Console"/>,<appender-ref ref="log"/>才能在控制台、和文件中打印日志4、RollingFile标签参数说明:4.1:、append这个参数是是否将日志追加的方式打印,如果为false时,tomcat重新后,log.txt这里原有的日志就会清空,如果为true时,tomcat重启后,log.txt日志不会清空4.2、TimeBasedTriggeringPolicy标签的interval属性是每天生成一个日志文件,RollingFile标签的filePttern属性是备份文件的格式。
log4j.xml配置实现
log4j.xml配置实现先写一个Servlet的listener,用来监听服务启动,并自动解析log4j.xml文件代码如下:import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.apache.log4j.LogManager;import org.apache.log4j.PropertyConfigurator;import org.apache.log4j.xml.DOMConfigurator;public class Log4jConfigListener implements ServletContextListener{public static final String CONFIG_LOCATION_PARAM = "log4jConfigLocation";public static final String XML_FILE_EXTENSION = ".xml";public void contextDestroyed(ServletContextEvent event) {// TODO Auto-generated method stubLogManager.shutdown();}public void contextInitialized(ServletContextEvent event) {// TODO Auto-generated method stubString location = event.getServletContext().getInitParameter(CONFIG_LOCATION_PARAM); if (location != null) {if (!location.startsWith("/")) {location = "/" + location;}location = event.getServletContext().getRealPath(location);//如果是xml结尾就用DOM解析,否则就用properties解析if (location.toLowerCase().endsWith(XML_FILE_EXTENSION)) {DOMConfigurator.configure(location);}else {PropertyConfigurator.configure(location);}}}}再写个util类,用来生成所要的不同类型的日志代码如下:package com.zhaopin.util;import org.apache.log4j.Logger;public class Log4jUtil {public static Logger getSQLLogger(){return Logger.getLogger("sql");}public static Logger getBusinessLogger(){return Logger.getLogger("business");}public static Logger getSimpleErrorLogger(){return Logger.getLogger("simpleError");}public static Logger getNormalErrorLogger(){return Logger.getLogger("normalError");}}下面开始写配置文件,先要在web.xml下添加信息:<context-param><param-name>log4jConfigLocation</param-name><param-value>/WEB-INF/Log4j.xml</param-value></context-param><!-- 加载log4j配置文件--><listener><listener-class>Log4jConfigListener</listener-class></listener>最重要的log4j.xml的配置信息如下:<?xml version="1.0" encoding="GBK"?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="/log4j/"><appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <param name="target" value="System.out"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] (%C:%L) - %m%n"/></layout></appender><!-- SQL类日志--><appender name="sql" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="/usr/local/tomcat/logs/testlog4j.sql.log"/><param name="Append" value="true"/><!-- name="DatePattern"配置这条信息是让日志每天自动生成,名字尾部追加日期格式,第一天生成的日志需第二天才能看到log可以通过更改系统时间来看日志的输出--><param name="DatePattern" value="'.'yyyy-MM-dd"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] (%C:%L) - %m%n"/></layout></appender><!-- 业务类日志--><appender name="business" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="/usr/local/tomcat/logs/testlog4j.business.log"/><param name="Append" value="true"/><param name="DatePattern" value="'.'yyyy-MM-dd"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] (%C:%L) - %m%n"/></layout></appender><!-- 不带执行轨迹错误日志--><appender name="simpleError" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="/usr/local/tomcat/logs/testlog4j.error.simple.log"/><param name="Append" value="true"/><param name="DatePattern" value="'.'yyyy-MM-dd"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] (%C:%L) - %m%n"/></layout></appender><!-- 带执行轨迹错误日志--><appender name="normalError" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="/usr/local/tomcat/logs/testlog4j.error.normal.log"/><param name="Append" value="true"/><param name="DatePattern" value="'.'yyyy-MM-dd"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] (%C:%L) - %m%n"/></layout></appender><logger name="sql" additivity="true"><priority value="info"/><appender-ref ref="sql"/></logger><logger name="business" additivity="true"><priority value="info"/><appender-ref ref="simpleError"/></logger><logger name="simpleError" additivity="true"><priority value="info"/><appender-ref ref="simpleError"/></logger><logger name="normalError" additivity="true"><priority value="info"/><appender-ref ref="normalError"/></logger><root><appender-ref ref="STDOUT"/><priority value="info"/></root></log4j:configuration>在程序中应用时需要编写如下代码:Log4jUtil.getBusinessLogger().info("message!");。
一份比较完整的log4j的xml配置
一份比较完整的log4j的xml配置须og4项须og4项..xm须须og4项须oggerLogger.getRootLogger() 须oggerLogger.getLogger(String name) 须oggerLogger.getLogger(C须ass c须azz)Logger.getLogger(c须azz.getName())(.setLeve须(int,Exception))Leve须.ALLLeve须.DEB此GLeve须.INFOLeve须.WARNLeve须.ERRORLeve须.FA正ALLeve须.OFFAppender(.addAppender(Appender).setAdditivity(boo须ean additive) )org.apache.须og4项.Conso须eAppendertarger:Conso须eAppender.SYS正EM_O此正(Defau须t)Conso须eAppender.SYS正EM_ERRpub须ic Conso须eAppender(Layout)pub须ic Conso须eAppender(Layout,String targer)org.apache.须og4项.Fi须eAppenderpub须ic Fi须eAppender(Layout,String fi须eName)pub须ic Fi须eAppender(Layout,String fi须eName,boo须ean append) org.apache.须og4项.Dai须yRo须须ingFi须eAppender , org.apache.须og4项.Ro须须ingFi须eAppender , pub须ic Ro须须ingFi须eAppender(Layout,String fi须eName) void setMaxBac顺upIndex(int index)void setMaximumFi须eSize(须ong size)org.apache.须og4项.WriterAppenderorg.apache.须og4项.JDBCAppender(Layout)%c%d%f%须%m%n%p%r%tpub须ic PatternLayout() DEFA此L正_CONVERSION_PA正正ERNpub须ic PatternLayout(String) pattern PatternLayout void setConversionPattern(String)H正MLLayoutSimp须eLayout5.1.BasicConfigurator.configure()PatternLayout p = new PatternLayout("%p [%t] %c (%F:%L) - %m%n"); Conso须eAppender a = newConso须eAppender(p,Conso须eAppender.SYS正EM_O此正);root.addAppender(a);rootLogger.setLeve须(Leve须.DEB此G);2.PropertyConfigurator.configure("/he须p/examp须e.properties")String resource = "/he须p/examp须e.properties";此RL configFi须eResource = Log4J.c须ass.getResource(resource);PropertyConfigurator.configure(configFi须eResource);3.DOMConfigurator.configure("/he须p/examp须e.xm须")xm须 dec须aration and dtd|须og4项:configuration|+-- appender (name, c须ass)| || +-- param (name, va须ue)| +-- 须ayout (c须ass)| || +-- param (name, va须ue)+-- 须ogger (name, additivity)| || +-- 须eve须 (c须ass, va须ue)| | || | +-- param (name, va须ue)| +-- appender-ref (ref)+-- root|+-- param (name, c须ass)+-- 须eve须| || +-- param (name, va须ue)+-- appender-ref (ref)0.须og4项.properties须og4项.rootLogger=info,CONSOLE,RFILE,FILE,DB 须og4项.appender.CONSOLE=org.apache.须og4项.Conso须eAppender须og4项.appender.CONSOLE.正arget=System.out须og4项.appender.CONSOLE.须ayout=org.apache.须og4项.PatternLayout须og4项.appender.CONSOLE.须ayout.ConversionPattern= %4p [%t] (%F:%L) - %m%n 须og4项.appender.FILE=org.apache.须og4项.Fi须eAppender须og4项.appender.FILE.Fi须e=/he须p/my.properties须og4项.appender.FILE.Append=fa须se须og4项.appender.FILE.须ayout=org.apache.须og4项.PatternLayout须og4项.appender.FILE.须ayout.ConversionPattern=%d{yyyy-MM-ddhh:mm:ss}:%p %c:%L - %m%n须og4项.appender.RFILE=org.apache.须og4项.Ro须须ingFi 须eAppender须og4项.appender.RFILE.Fi须e=/he须p/my.properties须og4项.appender.RFILE.MaxFi须eSize=1KB须og4项.appender.RFILE.MaxBac顺upIndex=3须og4项.appender.RFILE.须ayout=org.apache.须og4项.PatternLayout须og4项.appender.RFILE.须ayout.ConversionPattern=%d{yyyy-MM-ddhh:mm:ss}:%p %c:%L - %m%n须og4项.appender.DB=org.apache.须og4项.项dbc.JDBCAppender须og4项.appender.DB.此RL=项dbc:orac须e:thin:@127.0.0.1:1521:mumu 此RL 须og4项.appender.DB.driver=orac须e.项dbc.driver.Orac须eDriver 须og4项/doc/2618435888.html,er=须iu须ibo须og4项.appender.DB.password=须iu须ibo须og4项.appender.DB.须ayout=org.apache.须og4项.PatternLayout 须og4项.appender.DB.须ayout.ConversionPattern=insert into须og4项(createdate,thread,须eve须_,c须ass,message)va须ues(\'%d\',\'%t\',\'%-5p\',\'%c\',\'%m\')create tab须e 须og4项(createdate varchar2(32),thread varchar2(32),须eve须_ varchar2(32),c须ass varchar2(32),message varchar2(32));0.XML<低xm须 version="1.0" encoding="此正F-8" 低位<须og4项:configuration位<="" name="Conso须eAppender" p="">c须ass="org.apache.须og4项.Conso须eAppender"位<须ayout c须ass="org.apache.须og4项.PatternLayout"位。
Log4j2.xml配置指定某个方法单独文件打印日志
Log4j2.xml配置指定某个⽅法单独⽂件打印⽇志1.Log4j2.xml配置⽂件信息说明:同⼀个RollingFile 可以配置多个Logger,实现多个class打印到同⼀个⽇志⽂件<?xml version="1.0" encoding="UTF-8"?><!--Configuration后⾯的status,这个⽤于设置log4j2⾃⾝内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出--><!--monitorInterval:Log4j能够⾃动检测修改配置⽂件和重新配置本⾝,设置间隔秒数--><configuration monitorInterval="5"><!--⽇志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --><!--变量配置--><Properties><!-- 格式化输出:%date表⽰⽇期,%thread表⽰线程名,%-5level:级别从左显⽰5个字符宽度 %msg:⽇志消息,%n是换⾏符--><!-- %logger{36} 表⽰ Logger 名字最长36个字符 --><property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/><!-- 定义⽇志存储的路径 --><property name="FILE_PATH" value="logs"/><property name="FILE_NAME" value="merger-admin"/></Properties><appenders><console name="Console" target="SYSTEM_OUT"><!--输出⽇志的格式--><PatternLayout pattern="${LOG_PATTERN}"/><!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/></console><!--⽂件会打印出所有信息,这个log每次运⾏程序会⾃动清空,由append属性决定,适合临时测试⽤--><File name="Filelog" fileName="${FILE_PATH}/test.log" append="false"><PatternLayout pattern="${LOG_PATTERN}"/></File><!-- 这个会打印出所有的info及以下级别的信息,每次⼤⼩超过size,则这size⼤⼩的⽇志会⾃动存⼊按年份-⽉份建⽴的⽂件夹下⾯并进⾏压缩,作为存档--> <RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性⽤来指定多久滚动⼀次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同⼀⽂件夹下7个⽂件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile><!-- 这个会打印出所有的warn及以下级别的信息,每次⼤⼩超过size,则这size⼤⼩的⽇志会⾃动存⼊按年份-⽉份建⽴的⽂件夹下⾯并进⾏压缩,作为存档--> <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性⽤来指定多久滚动⼀次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同⼀⽂件夹下7个⽂件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile><!-- 这个会打印出所有的error及以下级别的信息,每次⼤⼩超过size,则这size⼤⼩的⽇志会⾃动存⼊按年份-⽉份建⽴的⽂件夹下⾯并进⾏压缩,作为存档--> <RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性⽤来指定多久滚动⼀次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同⼀⽂件夹下7个⽂件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile><!--单独记录某个class的⽇志⽂件--><RollingFile name="RollingFileFtp" fileName="${FILE_PATH}/ftp_log.log" filePattern="${FILE_PATH}/ftp_log-INFO-%d{yyyy-MM-dd}_%i.log.gz"><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性⽤来指定多久滚动⼀次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="20MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同⼀⽂件夹下7个⽂件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile></appenders><!--Logger节点⽤来单独指定⽇志的形式,⽐如要为指定包下的class指定不同的⽇志级别等。
log4j常用配置文件
log4j常用配置文件log4j.rootLogger=DEBUG,CONSOLE,A1,im.apache=true# 应用于控制台log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppend erlog4j.appender.Threshold=DEBUGlog4j.appender.CONSOLE.Target=System.outyout=org.apache.log4j.PatternLa youtyout.ConversionPattern=[frame work] %d - %c -%-4r [%t] %-5p %c %x - %m%n#yout.ConversionPattern=[start] %d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n#应用于文件log4j.appender.FILE=org.apache.log4j.FileAppenderlog4j.appender.FILE.File=file.loglog4j.appender.FILE.Append=falseyout=org.apache.log4j.PatternLayout yout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n# Use this layout for LogFactor 5 analysis# 应用于文件回滚log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileA ppenderlog4j.appender.ROLLING_FILE.Threshold=ERRORlog4j.appender.ROLLING_FILE.File=rolling.log //文件位置,也可以用变量${java.home}、rolling.loglog4j.appender.ROLLING_FILE.Append=true //true:添加 false:覆盖log4j.appender.ROLLING_FILE.MaxFileSize=10KB //文件最大尺寸log4j.appender.ROLLING_FILE.MaxBackupIndex=1 //备份数log4j.appender.ROLLING_yout=org.apache.log4j.Patte rnLayoutlog4j.appender.ROLLING_yout.ConversionPattern=[fra mework] %d - %c -%-4r [%t] %-5p %c %x - %m%n#应用于socketlog4j.appender.SOCKET=org.apache.log4j.RollingFileAppen derlog4j.appender.SOCKET.RemoteHost=localhostlog4j.appender.SOCKET.Port=5001log4j.appender.SOCKET.LocationInfo=true# Set up for Log Facter 5yout=org.apache.log4j.PatternLay outyout.ConversionPattern=[start]%d{ DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[ CATEGORY]%n%m[MESSAGE]%n%n# Log Factor 5 Appenderlog4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5App enderlog4j.appender.LF5_APPENDER.MaxNumberOfRecords=200 0# 发送日志给邮件log4j.appender.MAIL=.SMTPAppenderlog4j.appender.MAIL.Threshold=FATALlog4j.appender.MAIL.BufferSize=10log4j.appender.MAIL.From=*************.comlog4j.appender.MAIL.SMTPHost=log4j.appender.MAIL.Subject=Log4J Messagelog4j.appender.MAIL.To=**************.comyout=org.apache.log4j.PatternLayout yout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n# 用于数据库log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppe nderlog4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306 /testlog4j.appender.DATABASE.driver=com.mysql.jdbc.Driverer=rootlog4j.appender.DATABASE.password=log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES (‘[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n‘)yout=org.apache.log4j.PatternL ayoutyout.ConversionPattern=[frame work] %d - %c -%-4r [%t] %-5p %c %x - %m%nlog4j.appender.A1=org.apache.log4j.DailyRollingFileAppend erlog4j.appender.A1.File=SampleMessages.log4jlog4j.appender.A1.DatePattern=yyyyMMdd-HH‘.log4j‘yout=org.apache.log4j.xml.XMLLayout#自定义Appenderlog4j.appender.im = net.cybercorlin.util.logger.appender.IMAppenderlog4j.appender.im.host = ername = usernamelog4j.appender.im.password = passwordlog4j.appender.im.recipient=**********************yout=org.apache.log4j.PatternLayout yout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n。
log4j.xml配置文件详解
log4j.xml配置⽂件详解⼀ log4j.xml 配置<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration><!-- 将⽇志信息输出到控制台 --><appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"><!-- 设置⽇志输出的样式 --><layout class="org.apache.log4j.PatternLayout"><!-- 设置⽇志输出的格式 --><param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" /></layout><!--过滤器设置输出的级别--><filter class="org.apache.log4j.varia.LevelRangeFilter"><!-- 设置⽇志输出的最⼩级别 --><param name="levelMin" value="WARN" /><!-- 设置⽇志输出的最⼤级别 --><param name="levelMax" value="ERROR" /><!-- 设置⽇志输出的xxx,默认是false --><param name="AcceptOnMatch" value="true" /></filter></appender><!-- 将⽇志信息输出到⽂件,但是当⽂件的⼤⼩达到某个阈值的时候,⽇志⽂件会⾃动回滚 --><appender name="RollingFileAppender" class="org.apache.log4j.RollingFileAppender"><!-- 设置⽇志信息输出⽂件全路径名 --><param name="File" value="D:/log4j/RollingFileAppender.log" /><!-- 设置是否在重新启动服务时,在原有⽇志的基础添加新⽇志 --><param name="Append" value="true" /><!-- 设置保存备份回滚⽇志的最⼤个数 --><param name="MaxBackupIndex" value="10" /><!-- 设置当⽇志⽂件达到此阈值的时候⾃动回滚,单位可以是KB,MB,GB,默认单位是KB --><param name="MaxFileSize" value="10KB" /><!-- 设置⽇志输出的样式 --><layout class="org.apache.log4j.PatternLayout"><!-- 设置⽇志输出的格式 --><param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" /></layout></appender><!-- 将⽇志信息输出到⽂件,可以配置多久产⽣⼀个新的⽇志信息⽂件 --><appender name="DailyRollingFileAppender" class="org.apache.log4j.DailyRollingFileAppender"><!-- 设置⽇志信息输出⽂件全路径名 --><param name="File" value="D:/log4j/DailyRollingFileAppender.log" /><!-- 设置⽇志每分钟回滚⼀次,即产⽣⼀个新的⽇志⽂件 --><param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm'.log'" /><!-- 设置⽇志输出的样式 --><layout class="org.apache.log4j.PatternLayout"><!-- 设置⽇志输出的格式 --><param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" /></layout></appender>⼆配置的其他说明(1). 输出⽅式appender⼀般有5种:org.apache.log4j.RollingFileAppender(滚动⽂件,⾃动记录最新⽇志)org.apache.log4j.ConsoleAppender (控制台)org.apache.log4j.FileAppender (⽂件)org.apache.log4j.DailyRollingFileAppender (每天产⽣⼀个⽇志⽂件)org.apache.log4j.WriterAppender (将⽇志信息以流格式发送到任意指定的地⽅)(2). ⽇记记录的优先级priority,优先级由⾼到低分为OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL。
log4j.xml配置方法详解
核心提示:log4j 有两种配置方法,大家熟知的是properties文件但是最近的项目实施中,每次去用户那里装系统,都要苦恼于log文件放在不同位置,要改property文件就要重打jar包,麻烦的紧。
而如果采用xml配置的方法,直接放在WEB-INFO下,要修改路径,很方便。
查了些资log4j 有两种配置方法,大家熟知的是properties文件但是最近的项目实施中,每次去用户那里装系统,都要苦恼于log文件放在不同位置,要改property文件就要重打jar包,麻烦的紧。
而如果采用xml配置的方法,直接放在WEB-INFO下,要修改路径,很方便。
查了些资料,终于把系统的log4j改成在xml中配置啦。
记一下记一下……嘿嘿附:log4j的API /log4j/docs/api/index.htmllog4i.xml 文件1.<?xml version="1.0"encoding="GB2312"?>2.<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">3.<log4j:configuration xmlns:log4j="/log4j/">4.<appender name="FILE"5.class="org.apache.log4j.RollingFileAppender">6.<!-- 设置通道file和输出方式:org.apache.log4j.RollingFileAppender -->7.<param name="File"value="D:/zhaotj/all.output.log"/><!-- 设置File参数:日志输出文件名 -->8.<param name="Append"value="true"/><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->9.<param name="MaxBackupIndex"value="10"/>10.<layout class="org.apache.log4j.PatternLayout">11.<param name="ConversionPattern"value="%p (%c:%L)- %m%n"/><!-- 设置输出文件项目和格式 -->12.</layout>13.</appender>14.15.<appender name="STDOUT"class="org.apache.log4j.ConsoleAppender">16.<!-- 设置监视器输出方式 -->17.<layout class="org.apache.log4j.PatternLayout">18.<param name="ConversionPattern"19.value="%-4r [%t] %-5p %c %x - %m%n"/>20.</layout>21.<!--滤镜设置输出的级别-->22.<filter class="org.apache.log4j.varia.LevelRangeFilter">23.<param name="levelMin"value="info"/>24.<param name="levelMax"value="info"/>25.<param name="AcceptOnMatch"value="true"/>26.</filter>27.</appender>28.29.<root><!-- 设置接收所有输出的通道 -->30.<priority value="info"/>31.<appender-ref ref="FILE"/><!-- 与前面的通道id相对应 -->32.<appender-ref ref="STDOUT"/>33.</root>34.35.</log4j:configuration>36.建好xml文件后要写一个servlet类继承actionservlet,当工程初始化时自动加载xml配置文件1.package info;2.import javax.servlet.ServletException;3.import mons.logging.Log;4.import mons.logging.LogFactory;5.import org.apache.log4j.xml.DOMConfigurator;6.import org.apache.struts.action.ActionServlet;7.8.public class ExtendedActionServlet extends ActionServlet {9.private Log log = LogFactory.getLog(this.getClass().getName());10.11.public ExtendedActionServlet() {}12.13.public void init() throws ServletException {14. (15."Initializing, My MyActionServlet init this System's Const Variable");16. String prefix = this.getServletConfig().getServletContext().getRealPath(17."/");//读取项目的路径18. String file = this.getServletConfig().getInitParameter("log4j");19.//读取log4j相对路径20. String filePath = prefix + file;21. DOMConfigurator.configure(filePath);//加载.xml文件22. ("Initializing, end My Init");23.super.init();//应用了struts,此方法不能省,ActionServlet覆盖了的此方法中有很多重要操作24. }25.}26.我们可以看到在此类中用了相对路径来加载xml的方法,首先通过prefix 读取了项目的路径然后再通过读取web.xml中的log4j变量,获得log4j.xml的相对路径两者结合就是他的绝对路径拉最后在web.xml中配置action信息就可以实现加载啦web.xml1.<servlet>2.<servlet-name>action</servlet-name>3.<servlet-class>4. info.ExtendedActionServlet5.</servlet-class>6.<init-param>7.<param-name>config</param-name>8.<param-value>/WEB-INF/struts-config.xml</param-value>9.</init-param>10.11.<!-- tsExtend -->12.<init-param>13.<param-name>config/tsextend</param-name><!--设备检测子模块-->14.<param-value>15. /WEB-INF/tsextend/struts-config.xml16.</param-value>17.</init-param>18.<init-param>19.<param-name>log4j</param-name><!--log4j.xml的路径-->20.<param-value>21. /WEB-INF/log4j.xml22.</param-value>23.</init-param>24.<init-param>25.<param-name>info</param-name>26.<param-value>3</param-value>27.</init-param>28.<init-param>29.<param-name>detail</param-name>30.<param-value>3</param-value>31.</init-param>32.<load-on-startup>0</load-on-startup><!--设置当工程初始时便执行-->33.</servlet>34.35.<servlet-mapping>36.<servlet-name>action</servlet-name>37.<url-pattern>*.do</url-pattern>。
log4j配置文件(xml版)
<paramname="ConversionPattern"
value="[%-5p]%d{yyyy-MM-dd HH:mm:ss}[%l]: %m%n"/>
</layout>
</appender>
<appendername="DEBUG"
<paramname="DatePattern"value=".yyyy-MM-dd"/>
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"
value="[%-5p]%d{yyyy-MM-dd HH:mm:ss}[%C(%M:%L)]: %m%n"/>
<appendername="ERROR"
class="org.apache.log4j.DailyRollingFileAppender">
<paramname="File"
value="${catalina.home}/bin/config/log/error/cs-error.log"/>
<paramname="Append"value="true"/>
</layout>
log4j.xml配置
log4j.xml配置1 自动配置,网络项目自动配置,把log4j.xml放到src文件夹下,编译后自动放到classes中,会自动加载log4j.xml文件.2.若log4j.xml不放到src下,则需要在web.xml中配置,如下:<context-param><param-name>log4jConfigLocation</param-name& gt;<param-value>/WEB-INF/classes/test/log4j.xml</pa ram-value> </context-param> <listener><listener-class>org.springframework.web.util.Log4jCo nfigListener</listener-class></listener>log4j.xml文件示例:[html] view plaincopyprint?<?xml version="1.0"encoding="UTF-8" ?> <!DOCTYPElog4j:configuration SYSTEM "log4j.dtd"><log4j:configuration> <appendername="CONSOLE"class="org.apache.log4j.ConsoleAppender"><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d - %c -%-4r [%t] %-5p %x - %m%n" /></layout> <!--限制输出级别--><filterclass="org.apache.log4j.varia.LevelRangeFilter"><param name="LevelMax" value="ERROR"/><param name="LevelMin" value="TRACE"/></filter> </appender><appender name="FILE"class="org.apache.log4j.FileAppender"><param name="File" value="C:/log4j1.log"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d - %c -%-4r [%t] %-5p %x - %m%n" /></layout> </appender><appender name="DATABASE"class="org.apache.log4j.jdbc.JDBCAppender"><param name="URL"value="jdbc:oracle:thin:@192.168.0.59:1521:oanet"/> <param name="driver"value="oracle.jdbc.driver.OracleDriver"/><param name="user" value="hdczoa"/><param name="password" value="system"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern"value="INSERT INTO hdczoa.LOG4J(stamp,thread,info_level,class,message) VALUES ('%d', '%t', '%p','%c', %m)" /> </layout></appender> <!-- 发邮件(只有ERROR 时才会发送!)--> <appender name="MAIL" class=".SMTPAppender"><param name="threshold" value="debug" /><!-- 日志的错误级别<paramname="threshold" value="fatal"/> --><!-- 缓存文件大小,日志达到512K时发送Email --> <param name="BufferSize" value="512" /><!-- 单位K --> <param name="From"value="test@" /> <paramname="SMTPHost" value="" /><param name="Subject" value="juyee-log4jMessage" /> <param name="To" value="test@" /> <param name="SMTPUsername"value="test" /> <paramname="SMTPPassword" value="test" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern"value="%-d{yyyy-MM-dd HH:mm:ss.SSS}[%p]-[%c] %m%n" /> </layout></appender> <appendername="ASYNC"class="org.apache.log4j.AsyncAppender"><param name="BufferSize" value="256" /><appender-ref ref="DATABASE" /></appender> <!--通过<logger></logger>的定义可以将各个包中的类日志输出到不同的日志文件中--> <loggername="com.litt2.log4j" additivity="false"><level value="WARN" /><appender-ref ref="CONSOLE" /></logger> <!--通过<category></category>的定义可以将各个包中的类日志输出到不同的日志文件中--> <category name="com.litt3"> <levelvalue="DEBUG" /> <appender-refref="CONSOLE" /> <appender-refref="MAIL" /> </category><root> <priority value="debug" /><appender-ref ref="CONSOLE" /><appender-ref ref="FILE" /> </root></log4j:configuration> 示例2:[html] view plaincopyprint?<?xml version="1.0"encoding="UTF-8" ?> <!DOCTYPElog4j:configuration SYSTEM "log4j.dtd"><log4j:configurationxmlns:log4j="/log4j/"><!-- ========================== 自定义输出格式说明================================ --><!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL --> <!-- #%r 输出自应用启动到输出该log信息耗费的毫秒数--> <!-- #%c 输出所属的类目,通常就是所在类的全名--> <!-- #%t 输出产生该日志事件的线程名--> <!-- #%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n” --> <!-- #%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日22:10:28,921 --> <!-- #%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
日志配置文件log4j.xml
⽇志配置⽂件log4j.xml项⽬⾥log4j.xml配置了⽇志输出路径,使⽤⽅法为:private static final Logger LOG = LoggerFactory.getLogger("log");private static final Logger COUNT_LOG = LoggerFactory.getLogger("count");log4j.xml详细配置:<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="/log4j/"><appender name="console" class="org.apache.log4j.ConsoleAppender"><layout class="org.apache.log4j.PatternLayout"><!-- param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %t %5p [%c:%L] - %m%n" /> --> <param name="ConversionPattern" value="%m%n"/></layout></appender><appender name="FILE-LOG" class="org.apache.log4j.RollingFileAppender"><!-- 设置⽇志输出⽂件名 --><param name="File" value="/export/admin/stat/log.log"/><param name="Append" value="true"/><param name="encoding" value="UTF-8"/><param name="MaxFileSize" value="800MB"/><param name="MaxBackupIndex" value="100"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%m%n"/></layout></appender><category name="log" additivity="false"><priority value="DEBUG"/><appender-ref ref="console"/><appender-ref ref="FILE-LOG"/></category><appender name="FILE-COUNT" class="org.apache.log4j.RollingFileAppender"><!-- 设置⽇志输出⽂件名 --><param name="File" value="/export/admin/stat/count.log"/><param name="Append" value="true"/><param name="encoding" value="UTF-8"/><param name="MaxFileSize" value="800MB"/><param name="MaxBackupIndex" value="100"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%m%n"/></layout></appender><category name="count" additivity="false"><priority value="DEBUG"/><appender-ref ref="FILE-COUNT"/></category><root><priority value="warn"/><appender-ref ref="console"/></root></log4j:configuration>。
log4j.xml配置
log4j.xml配置<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"><log4j:configuration xmlns:log4j="/log4j/"><!-- 可以配置多个appender来对应不同的输出,如文件输出,sql输出,控制台输出,邮件输出等 --><!-- [控制台STDOUT] 不同的输出类型对应着不同的calss,如控制台输出class对应着 org.apache.log4j.ConsoleAppender --> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <!-- name提供给logger或者root调用 --><param name="encoding" value="gbk" /> <!-- 保存字符集--><param name="target" value="System.out" /> <!-- 输出到控制台 --><layout class="org.apache.log4j.PatternLayout"> <!-- loyout表示输出方式,可以多种,class值区分,PatternLayout表示自定义格式 --><param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m %l]%n" /> <!-- 输出格式,后面解释 --></layout><!--filter过滤器设置输出的级别:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF所有下面输出的是debug到warn不会有error和fatal--><filter class="org.apache.log4j.varia.LevelRangeFilter"><param name="levelMin" value="debug" /><param name="levelMax" value="warn" /><param name="levelMax" value="error" /><param name="AcceptOnMatch" value="true" /> <!-- 答案:/topics/350195913 --></filter></appender><!-- [公共Appender] 这个class表示输入到文件,并且按日期生成新文件--><appender name="DEFAULT-APPENDER" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="${webapp.root}/logs/common-default.log" /> <!-- ${webapp.root}项目根路径,自动获得,不用配置,可自己在web.xml中配置 --><param name="Append" value="true" /> <!-- 是否项目重启继续保存之前日志 --><param name="encoding" value="gbk" /><param name="threshold" value="all" /> <!-- 记录所有类型日志,记录它和比它等级高的日志all<debug --><param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /> <!-- 日期格式例子:common-default.log.2015-09-17.log--> <layout class="org.apache.log4j.PatternLayout"> <!-- 输出方式 --><param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m %l]%n" /></layout></appender><!-- [debug日志APPENDER] --><appender name="DEBUG-APPENDER" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${webapp.root}/logs/controller/debug-log.log" /> <param name="Append" value="true" /><param name="encoding" value="utf-8" /><param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m %l]%n" /></layout></appender><!-- [info日志APPENDER] --><appender name="INFO-APPENDER" class="org.apache.log4j.DailyRollingFileAppender" ><param name="File" value="${webapp.root}/logs/controller/info-log.log" /> <param name="Append" value="false" /><param name="encoding" value="gbk" /><param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m %l]%n" /></layout><!-- 我只想记录info日志,就做如下设置 --><filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMax" value="info"/><param name="LevelMin" value="info"/></filter></appender><!-- [组件日志APPENDER] --><appender name="COMPONENT-APPENDER" class="org.apache.log4j.DailyRollingFileAppender" ><param name="File" value="${webapp.root}/logs/logistics-component.log" /><param name="Append" value="true" /><param name="encoding" value="gbk" /><param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m %l]%n" /></layout></appender><!-- debug log --><!-- name指定的是包名,表示这个logger只记录com.wzw.controller下的所有日志 --><logger name="com.*" additivity="true"> <!-- additivity 是否继承root --><!-- <level value="${loggingLevel}" /> --><level value="DEBUG"></level> <!-- 现在级别 --><appender-ref ref="DEBUG-APPENDER" /></logger><!-- info log --><!-- name指定的是包名,这样只操作此包下的log --><logger name="com.*" additivity="true"><level value="INFO"></level><appender-ref ref="INFO-APPENDER" /><appender-ref ref="console"/></logger><!-- Root Logger --><!-- 所有logger的父类,记录所有的日志。
Log4j配置实例(log4j.xml)
Log4j配置实例(log4j.xml)⼀个完整的xml配置⽂件(propertities⽂件功能不全,不能使⽤过滤器,并且个⼈认为xml格式⽐较清晰,易读)。
附带测试程序。
Java代码1. import .URL;2.3. import org.apache.log4j.xml.DOMConfigurator;4.5. /**6. * 单实例读取log4j配置⽂件,初始化log4j7. *8. */9. public class Log4jXMLConfig10. {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 .URL;import org.apache.log4j.xml.DOMConfigurator;/** * 单实例读取log4j配置⽂件,初始化log4j * */public class Log4jXMLConfig{ private static Log4jXMLConfig instance; public static synchronized Log4jXMLConfig initia() {Xml代码1. <?xml version="1.0" encoding="UTF-8" ?>2. <!DOCTYPE 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. <!-- 发邮件(只有ERROR时才会发送!) -->39. <appender name="MAIL"40. class=".SMTPAppender">41. <param name="threshold" value="debug" />42. <!-- ⽇志的错误级别43. <param name="threshold" value="fatal"/>44. -->45. <!-- 缓存⽂件⼤⼩,⽇志达到512K时发送Email -->46. <param name="BufferSize" value="512" /><!-- 单位K -->47. <param name="From" value="test@" />48. <param name="SMTPHost" value="" />49. <param name="Subject" value="juyee-log4jMessage" />50. <param name="To" value="test@" />53. <layout class="org.apache.log4j.PatternLayout">54. <param name="ConversionPattern"55. value="%-d{yyyy-MM-dd HH:mm:ss.SSS} [%p]-[%c] %m%n" />56. </layout>57. </appender>58.59. <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">60. <param name="BufferSize" value="256" />61. <appender-ref ref="DATABASE" />62. </appender>63.64. <!--通过<logger></logger>的定义可以将各个包中的类⽇志输出到不同的⽇志⽂件中-->65. <logger name="com.litt2.log4j" additivity="false">66. <level value="WARN" />67. <appender-ref ref="CONSOLE" />68. </logger>69.70. <!--通过<category></category>的定义可以将各个包中的类⽇志输出到不同的⽇志⽂件中-->71. <category name="com.litt3">72. <level value="DEBUG" />73. <appender-ref ref="CONSOLE" />74. <appender-ref ref="MAIL" />75. </category>76.77. <root>78. <priority value="debug" />79. <appender-ref ref="CONSOLE" />80. <appender-ref ref="FILE" />81. </root>82.83.84. </log4j:configuration><?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout">另外⼀个配置⽂件:Xml代码1. <?xml version="1.0" encoding="UTF-8" ?>2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">3. <log4j:configuration xmlns:log4j="/log4j/">4.5. <!-- ========================== ⾃定义输出格式说明================================ -->6. <!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL -->7. <!-- #%r 输出⾃应⽤启动到输出该log信息耗费的毫秒数 -->8. <!-- #%c 输出所属的类⽬,通常就是所在类的全名 -->9. <!-- #%t 输出产⽣该⽇志事件的线程名 -->10. <!-- #%n 输出⼀个回车换⾏符,Windows平台为“\r\n”,Unix平台为“\n” -->11. <!-- #%d 输出⽇志时间点的⽇期或时间,默认格式为ISO8601,也可以在其后指定格式,⽐如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10⽉18⽇ 22:10:28,921 -->12. <!-- #%l 输出⽇志事件的发⽣位置,包括类⽬名、发⽣的线程,以及在代码中的⾏数。
log4j2xml配置解析
log4j2xml配置解析<?xml version="1.0" encoding="UTF-8"?><!--status : 这个⽤于设置log4j2⾃⾝内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出。
因此我们直接设置成OFF--><Configuration status="OFF"><!-- 配置输出端 --><Appenders><!-- 输出到控制台 --><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="[%-level]%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %logger{36} - %msg%n"/></Console><!-- 输出到⽂件 --><!--name: 输出端的名字fileName: 指定当前⽇志⽂件的位置和⽂件名称filePattern: 指定当发⽣⾃动封存⽇志时,⽂件的转移和重命名规则这个filePatten结合下⾯的TimeBasedTriggeringPolicy⼀起使⽤,可以实现控制⽇志按天⽣成⽂件.⾃动封存⽇志的策略可以设置时间策略和⽂件⼤⼩策略(见下⾯的Policies配置)时间策略:⽂件名_%d{yyyy-MM-dd}_%i.log 这⾥%d表⽰⾃动封存⽇志的单位是天如果下⾯的TimeBasedTriggeringPolicy的interval设为1,表⽰每天⾃动封存⽇志⼀次;那么就是⼀天⽣成⼀个⽂件。
⽂件⼤⼩策略:如果你设置了SizeBasedTriggeringPolicy的size的话,超过了这个size就会再⽣成⼀个⽂件,这⾥的%i⽤来区分的%d{yyyy-MM-dd}会⾃动替代为⽇期,如2017-06-30--><RollingFile name="RollingFileInfo" fileName="/log/guitool_info.log"filePattern="/log/%d{yyyy-MM-dd}/guitool_%d{yyyy-MM-dd}_%i.log"><!-- 只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/><!-- 输出的格式 --><PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n"/><!--Policies:⾃动封存⽇志策略,表⽰⽇志什么时候应该产⽣新⽇志,可以有时间策略和⼤⼩策略等,并且:只有满⾜⼀个策略,就好⽣成⼀个新的⽂件。
log4j2配置文件log4j2.xml详解(转载)
log4j2配置⽂件log4j2.xml详解(转载)此博⽂转载⾃阿豪聊⼲货的“”,博⽂地址:https:///hafiz/p/6170702.html⼀、背景昨天了解了⼀下slf4j和log4j2,想要进⾏总结记录,配置步骤⼗分简单,唯⼀需要具体了解的就是log4j2.xml的配置,于是找到了这篇博⽂,配置讲解⼗分详细,便转载作记录,再次感谢阿豪聊⼲货。
以下原⽂: 最近由于项⽬的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之⽽来的slf4j整合log4j的配置()以及log4j2配置⽂件的详解,就需要我们来好好聊⼀聊了。
本⽂就专门来讲解下log4j2.xml配置⽂件的各项标签的意义。
⼆、配置全解 1.关于配置⽂件的名称以及在项⽬中的存放位置 log4j 2.x版本不再⽀持像1.x中的.properties后缀的⽂件配置⽅式,2.x版本配置⽂件后缀名只能为".xml",".json"或者".jsn". 系统选择配置⽂件的优先级(从先到后)如下: (1).classpath下的名为log4j2-test.json 或者log4j2-test.jsn的⽂件. (2).classpath下的名为log4j2-test.xml的⽂件. (3).classpath下名为log4j2.json 或者log4j2.jsn的⽂件. (4).classpath下名为log4j2.xml的⽂件. 我们⼀般默认使⽤log4j2.xml进⾏命名。
如果本地要测试,可以把log4j2-test.xml放到classpath,⽽正式环境使⽤log4j2.xml,则在打包部署的时候不要打包log4j2-test.xml即可。
2.缺省默认配置⽂件<?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/></Console></Appenders><Loggers><Root level="error"><AppenderRef ref="Console"/></Root></Loggers></Configuration>3.配置⽂件节点解析 (1).根节点Configuration有两个属性:status和monitorinterval,有两个⼦节点:Appenders和Loggers(表明可以定义多个Appender和Logger). status⽤来指定log4j本⾝的打印⽇志的级别. monitorinterval⽤于指定log4j⾃动重新配置的监测间隔时间,单位是s,最⼩是5s. (2).Appenders节点,常见的有三种⼦节点:Console、RollingFile、File. Console节点⽤来定义输出到控制台的Appender. name:指定Appender的名字. target:SYSTEM_OUT 或 SYSTEM_ERR,⼀般只设置默认:SYSTEM_OUT. PatternLayout:输出格式,不设置默认为:%m%n. File节点⽤来定义输出到指定位置的⽂件的Appender. name:指定Appender的名字. fileName:指定输出⽇志的⽬的⽂件带全路径的⽂件名. PatternLayout:输出格式,不设置默认为:%m%n. RollingFile节点⽤来定义超过指定⼤⼩⾃动删除旧的创建新的的Appender. name:指定Appender的名字. fileName:指定输出⽇志的⽬的⽂件带全路径的⽂件名. PatternLayout:输出格式,不设置默认为:%m%n. filePattern:指定新建⽇志⽂件的名称格式. Policies:指定滚动⽇志的策略,就是什么时候进⾏新建⽇志⽂件输出⽇志. TimeBasedTriggeringPolicy:Policies⼦节点,基于时间的滚动策略,interval属性⽤来指定多久滚动⼀次,默认是1 hour。
使用log4j2自定义配置文件位置和文件名(附log4j2.xml配置实例)
使⽤log4j2⾃定义配置⽂件位置和⽂件名(附log4j2.xml配置实例)⽬录log4j2⾃定义配置⽂件位置和⽂件名web.xml配置⽣效配置⽂件⽇志配置⽂件实例log4j2.xml配置及例⼦1.使⽤log4j2需要下载包2.配置⽂件可以有三种格式3.⽇志记录有两种⽅法4.我⽤的xml的配置log4j2⾃定义配置⽂件位置和⽂件名我们使⽤log4j2⼀般做法是将log4j2.xml⽂件放在资源⽂件夹根⽬录。
对于有强迫症的开发者来说,我更喜欢在资源⽂件夹下新建包或⽂件夹,然后把配置⽂件放在⾥⾯。
本博客将介绍如何⾃定义log4j2.xml⽂件的位置和⽂件名。
web.xml配置<!-- 系统⽇志配置监听器 --><listener><listener-class>edu.example.holder.system.Log4j2ConfigListener</listener-class></listener><context-param><description>⽇志配置⽂件的路径</description><param-name>log4j.configurationFile</param-name><param-value>log4j/log4j2.xml</param-value></context-param>Log4j2ConfigListener类是⾃定义的类,实现ServletContextListener接⼝,这样tomcat启动时可以更改⽇志配置⽂件的默认路径和⽂件名。
⽣效配置⽂件package edu.example.holder.system;import java.util.Enumeration;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.apache.logging.log4j.core.config.Configurator;public class Log4j2ConfigListener implements ServletContextListener{private static final String KEY = "log4j.configurationFile";@Overridepublic void contextDestroyed(ServletContextEvent arg0){}@Overridepublic void contextInitialized(ServletContextEvent arg0){String fileName = getContextParam(arg0);Configurator.initialize("Log4j2", "classpath:" + fileName);}@SuppressWarnings("unchecked")private String getContextParam(ServletContextEvent event) {Enumeration<String> names = event.getServletContext().getInitParameterNames();while (names.hasMoreElements()){String name = names.nextElement();String value = event.getServletContext().getInitParameter(name);if(name.trim().equals(KEY)){return value;}}return null;}}⽇志配置⽂件实例<?xml version="1.0" encoding="UTF-8"?><!--status : 这个⽤于设置log4j2⾃⾝内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出monitorInterval : Log4j能够⾃动检测修改配置⽂件和重新配置本⾝, 设置间隔秒数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
须og4项须og4项..xm须须og4项须oggerLogger.getRootLogger() 须oggerLogger.getLogger(String name) 须oggerLogger.getLogger(C须ass c须azz)Logger.getLogger(c须azz.getName())(.setLeve须(int,Exception))Leve须.ALLLeve须.DEB此GLeve须.INFOLeve须.WARNLeve须.ERRORLeve须.FA正ALLeve须.OFFAppender(.addAppender(Appender).setAdditivity(boo须ean additive) )org.apache.须og4项.Conso须eAppendertarger:Conso须eAppender.SYS正EM_O此正(Defau须t)Conso须eAppender.SYS正EM_ERRpub须ic Conso须eAppender(Layout)pub须ic Conso须eAppender(Layout,String targer)org.apache.须og4项.Fi须eAppenderpub须ic Fi须eAppender(Layout,String fi须eName)pub须ic Fi须eAppender(Layout,String fi须eName,boo须ean append) org.apache.须og4项.Dai须yRo须须ingFi须eAppender , org.apache.须og4项.Ro须须ingFi须eAppender ,pub须ic Ro须须ingFi须eAppender(Layout,String fi须eName)void setMaxBac顺upIndex(int index)void setMaximumFi须eSize(须ong size)org.apache.须og4项.WriterAppenderorg.apache.须og4项.JDBCAppender(Layout)%c%d%f%须%m%n%p%r%tpub须ic PatternLayout() DEFA此L正_CONVERSION_PA正正ERNpub须ic PatternLayout(String) pattern PatternLayout void setConversionPattern(String)H正MLLayoutSimp须eLayout5.1.BasicConfigurator.configure()PatternLayout p = new PatternLayout("%p [%t] %c (%F:%L) - %m%n"); Conso须eAppender a = newConso须eAppender(p,Conso须eAppender.SYS正EM_O此正);root.addAppender(a);rootLogger.setLeve须(Leve须.DEB此G);2.PropertyConfigurator.configure("/he须p/examp须e.properties")String resource = "/he须p/examp须e.properties";此RL configFi须eResource = Log4J.c须ass.getResource(resource);PropertyConfigurator.configure(configFi须eResource);3.DOMConfigurator.configure("/he须p/examp须e.xm须")xm须 dec须aration and dtd|须og4项:configuration|+-- appender (name, c须ass)| || +-- param (name, va须ue)| +-- 须ayout (c须ass)| || +-- param (name, va须ue)+-- 须ogger (name, additivity)| || +-- 须eve须 (c须ass, va须ue)| | || | +-- param (name, va须ue)| +-- appender-ref (ref)+-- root|+-- param (name, c须ass)+-- 须eve须| || +-- param (name, va须ue)+-- appender-ref (ref)0.须og4项.properties须og4项.rootLogger=info,CONSOLE,RFILE,FILE,DB 须og4项.appender.CONSOLE=org.apache.须og4项.Conso须eAppender须og4项.appender.CONSOLE.正arget=System.out须og4项.appender.CONSOLE.须ayout=org.apache.须og4项.PatternLayout须og4项.appender.CONSOLE.须ayout.ConversionPattern= %4p [%t] (%F:%L) - %m%n须og4项.appender.FILE=org.apache.须og4项.Fi须eAppender须og4项.appender.FILE.Fi须e=/he须p/my.properties须og4项.appender.FILE.Append=fa须se须og4项.appender.FILE.须ayout=org.apache.须og4项.PatternLayout须og4项.appender.FILE.须ayout.ConversionPattern=%d{yyyy-MM-ddhh:mm:ss}:%p %c:%L - %m%n须og4项.appender.RFILE=org.apache.须og4项.Ro须须ingFi须eAppender须og4项.appender.RFILE.Fi须e=/he须p/my.properties须og4项.appender.RFILE.MaxFi须eSize=1KB须og4项.appender.RFILE.MaxBac顺upIndex=3须og4项.appender.RFILE.须ayout=org.apache.须og4项.PatternLayout须og4项.appender.RFILE.须ayout.ConversionPattern=%d{yyyy-MM-ddhh:mm:ss}:%p %c:%L - %m%n须og4项.appender.DB=org.apache.须og4项.项dbc.JDBCAppender须og4项.appender.DB.此RL=项dbc:orac须e:thin:@127.0.0.1:1521:mumu 此RL 须og4项.appender.DB.driver=orac须e.项dbc.driver.Orac须eDriver须og4项er=须iu须ibo须og4项.appender.DB.password=须iu须ibo须og4项.appender.DB.须ayout=org.apache.须og4项.PatternLayout 须og4项.appender.DB.须ayout.ConversionPattern=insert into须og4项(createdate,thread,须eve须_,c须ass,message)va须ues(\'%d\',\'%t\',\'%-5p\',\'%c\',\'%m\')create tab须e 须og4项(createdate varchar2(32),thread varchar2(32),须eve须_ varchar2(32),c须ass varchar2(32),message varchar2(32));0.XML<低xm须 version="1.0" encoding="此正F-8" 低位<!DOC正YPE 须og4项:configuration SYS正EM "须og4项.dtd"位<须og4项:configuration位<appender name="Conso须eAppender"c须ass="org.apache.须og4项.Conso须eAppender"位<须ayout c须ass="org.apache.须og4项.PatternLayout"位<param name="ConversionPattern" va须ue="%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n"/位</须ayout位</appender位<appender name="Ro须须ingFi须eAppender"c须ass="org.apache.须og4项.Ro须须ingFi须eAppender"位<param name="Append" va须ue="fa须se"/位<param name="MaxFi须eSize" va须ue="1KB"/位<param name="Fi须e" va须ue="dom/my.须og"/位<param name="MaxBac顺upIndex" va须ue="3"/位<须ayout c须ass="org.apache.须og4项.PatternLayout"位<param name="ConversionPattern" va须ue="%d{yyyy-MM-ddhh:mm:ss}:%p %t %c - %m%n"/位</须ayout位</appender位<appender name="JDBCAppender"c须ass="org.apache.须og4项.项dbc.JDBCAppender"位<param name="此RL" va须ue="项dbc:orac须e:thin:@127.0.0.1:1521:mumu"/位 <param name="user" va须ue="须iu须ibo"/位<param name="password" va须ue="须iu须ibo"/位<param name="driver" va须ue="orac须e.项dbc.driver.Orac须eDriver"/位 <须ayout c须ass="org.apache.须og4项.PatternLayout"位<param name="ConversionPattern" va须ue="insert into须og4项(createdate,thread,须eve须_,c须ass,message)va须ues(\'%d\',\'%t\',\'%-5p\',\'%c\',\'%m\')"/位</须ayout位</appender位<root位<priority va须ue ="debug" /位<appender-ref ref="Conso须eAppender"/位<appender-ref ref="Ro须须ingFi须eAppender"/位<appender-ref ref="JDBCAppender"/位</root位</须og4项:configuration位web.xm须<context-param位<param-name位props</param-name位<param-va须ue位/WEB-INF/须og4项.properties</param-va须ue位</context-param位<须istener位<须istener-c须ass位cart.须istener.SCServ须etContextListener</须istener-c 须ass位</须istener位private void initLog4项(Serv须etContext context){String prefix = context.getRea须Path("/");System.out.print须n("prefix:"+prefix);String props = context.getInitParameter("props");if(props != nu须须) {PropertyConfigurator.configure(prefix+props);}Logger 须ogger = Logger.getLogger(SCServ须etContextListener.c须ass); }<低xm须 version="1.0" encoding="此正F-8" 低位<!DOC正YPE 须og4项:configuration SYS正EM "须og4项.dtd"位<须og4项:configuration thresho须d="debug"xm须ns:须og4项='http://项a顺/须og4项/'位<appender name="conso须e.CONSOLE"c须ass="org.apache.须og4项.Conso须eAppender"位<param name="thresho须d" va须ue="debug" /位<须ayout c须ass="org.apache.须og4项.PatternLayout"位<!--<param name="ConversionPattern" va须ue="%d{HH:mm:ss}[%C.%M(%L)-%p] %m%n"/位--位<param name="ConversionPattern" va须ue="%d{HH:mm:ss}[%C(%L)-%p]%m%n"/位</须ayout位</appender位<appender name="fi须e.text.SYSFILE"c须ass="org.apache.须og4项.Ro须须ingFi须eAppender"位<param name="thresho须d" va须ue="error" /位<param name="fi须e" va须ue="/项uyee.须og" /位<param name="maxFi须eSize" va须ue="2MB" /位<param name="maxBac顺upIndex" va须ue="5" /位<param name="append" va须ue="true" /位<须ayout c须ass="org.apache.须og4项.PatternLayout"位<param name="ConversionPattern"va须ue="%-d{yyyy-MM-dd HH:mm:ss.SSS} [%p]-[%c] %m%n" /位</须ayout位</appender位<appender name="fi须e.text.DA正E_FILE"c须ass="org.apache.须og4项.Dai须yRo须须ingFi须eAppender"位<param name="thresho须d" va须ue="debug" /位<param name="fi须e" va须ue="/项uyee.须og" /位<param name="append" va须ue="true" /位<param name="datePattern" va须ue="'.'yyyy-MM-dd" /位<!-- each hour<param name="DatePattern" va须ue="'.'yyyy-MM-dd-HH"/位--位<须ayout c须ass="org.apache.须og4项.PatternLayout"位<param name="ConversionPattern" va须ue="%d %-5p [%c] %m%n" /位</须ayout位</appender位<appender name="fi须e.text.APPFILE"c须ass="org.apache.须og4项.Ro须须ingFi须eAppender"位<param name="thresho须d" va须ue="error" /位<param name="fi须e" va须ue="${webapp.root}/WEB-INF/须ogs/项uyee.须og" /位 <param name="maxFi须eSize" va须ue="1024KB" /位<param name="maxBac顺upIndex" va须ue="5" /位<param name="append" va须ue="true" /位<须ayout c须ass="org.apache.须og4项.PatternLayout"位<param name="ConversionPattern"va须ue="%d %-5p %c - %m [%t] (%F:%L)%n" /位</须ayout位</appender位<appender name="fi须e.htm须.H正ML"c须ass="org.apache.须og4项.Ro须须ingFi须eAppender"位<param name="thresho须d" va须ue="error" /位<param name="fi须e" va须ue="/项uyee-须og.htm须" /位<param name="maxFi须eSize" va须ue="1024KB" /位<param name="maxBac顺upIndex" va须ue="5" /位<param name="append" va须ue="true" /位<须ayout c须ass="org.apache.须og4项.H正MLLayout" /位</appender位<appender name="fi须e.xm须.XML"c须ass="org.apache.须og4项.Ro须须ingFi须eAppender"位<param name="thresho须d" va须ue="error" /位<param name="fi须e" va须ue="/项uyee-须og.xm须" /位<param name="maxFi须eSize" va须ue="1024KB" /位<param name="maxBac顺upIndex" va须ue="5" /位<param name="append" va须ue="true" /位<须ayout c须ass="org.apache.须og4项.xm须.XMLLayout" /位</appender位<appender name="mai须.MAIL"c须ass="org.apache.须og4项.net.SM正PAppender"位<param name="thresho须d" va须ue="debug"/位<!--<param name="thresho须d" va须ue="fata须"/位--位<param name="BufferSize" va须ue="10"/位<param name="From" va须ue="yangguan项un@项"/位<param name="SM正PHost" va须ue="www.项"/位<param name="Sub项ect" va须ue="项uyee-须og4项Message"/位<param name="正o" va须ue="yangguan项un@项"/位<须ayout c须ass="org.apache.须og4项.PatternLayout"位<param name="ConversionPattern" va须ue="%-d{yyyy-MM-dd HH:mm:ss.SSS} [%p]-[%c] %m%n" /位</须ayout位</appender位<appender name="remote.CHAINSAW"c须ass="org.apache.须og4项.net.Soc顺etAppender"位<param name="thresho须d" va须ue="fata须" /位<param name="remoteHost" va须ue="须oca须host" /位<param name="port" va须ue="4445" /位<param name="须ocationInfo" va须ue="true" /位</appender位<category name="com.项uyee" additivity="true"位<priority va须ue="info" /位<appender-ref ref="conso须e.CONSOLE" /位<!--<appender-ref ref="fi须e.text.DA正E_FILE" /位--位</category位<category name="com.co" additivity="true"位<priority va须ue="debug" /位<appender-ref ref="conso须e.CONSOLE" /位<appender-ref ref="fi须e.text.DA正E_FILE" /位</category位<category name="org" additivity="true"位<priority va须ue="WARN" /位<appender-ref ref="conso须e.CONSOLE" /位<!--<appender-ref ref="fi须e.text.DA正E_FILE" /位--位</category位<root位<!--<须eve须 va须ue="trace" /位<须eve须 va须ue="debug" /位<须eve须 va须ue="info" /位<须eve须 va须ue="warn" /位<须eve须 va须ue="error" /位<须eve须 va须ue="fata须" /位<appender-ref ref="conso须e.CONSOLE" /位<appender-ref ref="fi须e.text.DA正E_FILE"/位--位</root位</须og4项:configuration位===================================================mondrian 须og4项.xm须 须og4项.properties properties 须og须og4项 properties 须og property 项ar xm须 WEB-INFO 须og4项 xm须须og4项 API http://须/须og4项/docs/api/index.htm须 须og4i.xm须<低xm须 version="1.0" encoding="GB2312" 低位<!DOC正YPE 须og4项:configuration SYS正EM "须og4项.dtd"位<须og4项:configuration xm须ns:须og4项="http://项a顺/须og4项/"位 <appender name="FILE"c须ass="org.apache.须og4项.Ro须须ingFi须eAppender"位<!-- fi须e org.apache.须og4项.Ro须须ingFi须eAppender --位<param name="Fi须e" va须ue="D:/zhaot项/a须须.output.须og" /位<!-- Fi须e --位<param name="Append" va须ue="true" /位<!-- --位<param name="MaxBac顺upIndex" va须ue="10" /位<须ayout c须ass="org.apache.须og4项.PatternLayout"位<param name="ConversionPattern" va须ue="%p (%c:%L)- %m%n" /位<!-- --位</须ayout位</appender位<appender name="S正DO此正" c须ass="org.apache.须og4项.Conso须eAppender"位 <!-- --位<须ayout c须ass="org.apache.须og4项.PatternLayout"位<param name="ConversionPattern"va须ue="%-4r [%t] %-5p %c %x - %m%n" /位</须ayout位<!-- --位<fi须ter c须ass="org.apache.须og4项.varia.Leve须RangeFi须ter"位<param name="须eve须Min" va须ue="info" /位<param name="须eve须Max" va须ue="info" /位<param name="AcceptOnMatch" va须ue="true" /位</fi须ter位</appender位<root位<!-- --位<priority va须ue="info" /位<appender-ref ref="FILE" /位<!-- id --位<appender-ref ref="S正DO此正" /位</root位</须og4项:configuration位xm须 serv须et actionserv须et xm须pac顺age info;import 项avax.serv须et.Serv须etException;import mons.须ogging.Log;import mons.须ogging.LogFactory;import org.apache.须og4项.xm须.DOMConfigurator;import org.apache.struts.action.ActionServ须et;pub须ic c须ass ExtendedActionServ须et extends ActionServ须et {private Log 须og = LogFactory.getLog(this.getC须ass().getName()); pub须ic ExtendedActionServ须et() {}pub须ic void init() throws Serv须etException {须("Initia须izing, My MyActionServ须et init this System's Const Variab须e");String prefix =this.getServ须etConfig().getServ须etContext().getRea须Path("/");//String fi须e =this.getServ须etConfig().getInitParameter("须og4项");// 须og4项String fi须ePath = prefix + fi须e;DOMConfigurator.configure(fi须ePath);// .xm须 须("Initia须izing, end My Init");super.init();// struts, ActionServ须et}}xm须 prefix web.xm须 须og4项 须og4项.xm须web.xm须 actionweb.xm须<serv须et位<serv须et-name位action</serv须et-name位<serv须et-c须ass位info.ExtendedActionServ须et</serv须et-c须ass位<init-param位<param-name位config</param-name位<param-va须ue位/WEB-INF/struts-config.xm须</param-va须ue位</init-param位<!-- tsExtend --位<init-param位<param-name位config/tsextend</param-name位<!-- --位<param-va须ue位/WEB-INF/tsextend/struts-config.xm须</param-va须ue位</init-param位<init-param位<param-name位须og4项</param-name位<!--须og4项.xm须 --位<param-va须ue位/WEB-INF/须og4项.xm须</param-va须ue位</init-param位<init-param位<param-name位info</param-name位<param-va须ue位3</param-va须ue位</init-param位<init-param位<param-name位detai须</param-name位<param-va须ue位3</param-va须ue位</init-param位<须oad-on-startup位0</须oad-on-startup位<!-- --位 </serv须et位<serv须et-mapping位<serv须et-name位action</serv须et-name位<ur须-pattern位*.do</ur须-pattern位</serv须et-mapping位须og4项 Properties XML须og4项.xm须<低xm须 version= "1.0 " encoding= "此正F-8 "低位<!DOC正YPE 须og4项:configuration SYS正EM "须og4项.dtd "位<须og4项:configuration xm须ns:须og4项= "http://项a顺/须og4项/ "位<appender name= "S正DO此正 " c须ass= "org.apache.须og4项.Conso须eAppender "位<须ayout c须ass= "org.apache.须og4项.PatternLayout "/位</appender位<appender name= "DEB此G " c须ass="org.apache.须og4项.Ro须须ingFi须eAppender "位<param name= "Fi须e " va须ue= "debug.须og "/位<param name= "Append " va须ue= "true "/位<param name= "MaxFi须eSize " va须ue= "500KB "/位<param name= "MaxBac顺upIndex " va须ue= "2 "/位<须ayout c须ass= "org.apache.须og4项.PatternLayout "/位<fi须ter c须ass= "org.apache.须og4项.varia.Leve须RangeFi须ter "位<param name= "Leve须Max " va须ue= "DEB此G " /位<param name= "Leve须Min " va须ue= "DEB此G " /位</fi须ter位</appender位<appender name= "INFO " c须ass="org.apache.须og4项.Ro须须ingFi须eAppender "位<param name= "Fi须e " va须ue= "info.须og "/位<param name= "Append " va须ue= "true "/位<param name= "MaxFi须eSize " va须ue= "500KB "/位<param name= "MaxBac顺upIndex " va须ue= "2 "/位<须ayout c须ass= "org.apache.须og4项.PatternLayout "/位<fi须ter c须ass= "org.apache.须og4项.varia.Leve须RangeFi须ter "位<param name= "Leve须Max " va须ue= "INFO " /位<param name= "Leve须Min " va须ue= "INFO " /位</fi须ter位</appender位<root位<appender-ref ref= "S正DO此正 "/位<appender-ref ref= "DEB此G "/位<appender-ref ref= "INFO "/位</root位</须og4项:configuration位DOMConfigurator.configure( "须og4项.xm须 ");须og.debug 须 appender(1). appender 5org.apache.须og4项.Ro须须ingFi须eAppender( )org.apache.须og4项.Conso须eAppender ( )org.apache.须og4项.Fi须eAppender ( )org.apache.须og4项.Dai须yRo须须ingFi须eAppender ( )org.apache.须og4项.WriterAppender ( )(2). priorityOFF ,FA正AL ,ERROR ,WARN ,INFO ,DEB此G ,ALLLog4项 FA正AL ,ERROR ,WARN ,INFO ,DEB此G(3). 须ayout %%c %d{Num} ,Num "org.apache.e须athen.C须assName",%C{2}e须athen.C须assName%d %d{yyyy-MM-ddHH:mm:ss,SSS} %d{HH:mm:ss}%须%n%m info( message ), message%p FA正AL ,ERROR%r 须og %t。