log4j配置文件详解附实例


"'" ) ;
System.out.println ( "debug: HELP" ) ; writer.println ( "HELP" ) ; response = reader.readLine () ; System.out.println ( "debug: Server responds: '" + response +
public static void main ( String args [] ) { String clientRequest = null; BufferedReader reader = null; PrintWriter writer = null; ServerSocket server = null; Socket socket = null; InputStream in = null; OutputStream out = null;
2.1.1. 客户程序 package log4j ;
import java.io.* ; import .* ;
public class ClientWithoutLog4j {
public static void main ( String args [] ) {
String welcome = null; String response = null; BufferedReader reader = null; PrintWriter writer = null; InputStream in = null; OutputStream out = null; Socket client = null;
最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文 件中,比较好的做法就是构造一个日志操作类来封装此类操作,而不是让一系列的打印语句 充斥了代码的主体。
1.2. Log4j 简介
在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外, Apache 为我们提供了一个强有力的日志操作包-Log4j。
Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j,我们可以控制日志信息输 送的目的地是控制台、文件、GUI 组件、甚至是套接口服务 器、NT 的事件记录器、UNIX Syslog 守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我 们能够更加细致地控制日志的生成过程。最令人感兴趣的就 是,这些可以通过一个配置文 件来灵活地进行配置,而不需要修改应用的代码。
} catch ( IOException e ) { System.out.println ( "error: IOException : " + e ) ; System.exit ( 0 ) ;
}
try{ reader = new BufferedReader( new InputStreamReader ( in ) ) ; writer = new PrintWriter ( new OutputStreamWriter ( out ), true ) ;
此外,通过 Log4j 其他语言接口,您可以在 C、C+ +、.Net、PL/SQL 程序中使用 Log4j, 其语法和用法与在 Java 程序中一样,使得多语言分布式系统得到一个统一一致的日志组件 模块。而且,通过使用各种第三方扩展,您可以很方便地将 Log4j 集成到 J2EE、JINI 甚至 是 SNMP 应用中。
on-line!" ) ;
log4j 配置文件有三个主要的组件:
Logger,Appender 和 Layout,分别为日志类型,日志输出目的地,日志输出格式。 log4j.rootLogger = [level], appenderName, appenderName, ... (level 是错误级别,appenderName 是输出目的地,本例设为 mylog,可以定义多个) level 优先级分别为 FATAL、ERROR、WARN、INFO、DEBUG 5 个级别.通过定义的级别,你可以 控制程序中的日志输出.比如在这里定义了 ERROR 级别,程序中只有 FARAL、ERROR 级别的 LOG 会被输出. log4j.appender.mylog= 输出目的地 (这里的 appenderName 是在前面定义的,可任意 起名) Log4j 提供的输出目的地有以下几种: org.apache.log4j.ConsoleAppender(控制台) org.apache.log4j.FileAppender(文件) org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) org.apache.log4j.RollingFileAppender(文件到达指定大小时产生一个新文件) org.apache.log4j.WriterAppender(将日志信息以流格式发送到任何地方)
2.1.2. 服务器程序 package log4j ;
import java.util.* ; import java.io.* ; import .* ;
public class ServerWithoutLog4j { final static int SERVER_PORT = 8001 ; // this server's port
System.out.println ( "debug: QUIT" ) ; writer.println ( "QUIT" ) ; } catch ( IOException e ) { System.out.println ( "warn: IOException in client.in.readln()" ) ; System.out.println ( e ) ; } try{ Thread.sleep ( 2000 ) ; } catch ( Exception ignored ) {} } }
>>>> 2. 一个简单的例子 <<<<
我们先来看一个简单的例子,它是一个用 Java 实现的客户/服务器网络程序。刚开始我 们不使用 Log4j,而是使用了一系列的打印语句,然后我们将使用 Log4j 来实现它的日志功 能。这样,大家就可以清楚地比较出前后两个代码的差别。
2.1. 不使用 Log4j
本文介绍的 Log4j 版本是 1.2.3。作者试图通过一个简单的客户/服务器 Java 程序例子 对比使用与不使用 Log4j 1.2.3 的差别,并详细讲解了在实践中最常使用 Log4j 的方法和步 骤。在强调可重用组件开发的今天,相信 Log4j 将会给广大的设计开发人员带来方便。加入 到 Log4j 的队伍来吧!
log4j 配置详解
------------------------------------------------------------------------
log4j 配置详解 log4j 详解 根据网络资料整理
1. 概述<<<<
1.1. 背景
在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期 性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依 据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。
welcome = reader.readLine () ; System.out.println ( "debug: Server says: '" + welcome + "'" ) ;
"'") ;
System.out.println ( "debug: HELLO" ) ; writer.println ( "HELLO" ) ; response = reader.readLine () ; System.out.println ( "debug: Server responds: '" + response +
程序中并没有直接用到 log4j 的类,而是使用了 commons-logging 提供的日志类。 commons-logging 是为"所有的 Java 日志实现"提供一个统一的接口,它的功能据说“平常 弱”。
Log(基本记录器)和 LogFactory(负责创建 Log 实例)。当 commons-logging.jar 被加入到 CLASSPATH 之后,它会合理地猜测你喜欢的日志工具,然后进行自我设置,用户根本不需要 做任何设置。默认的 LogFactory 是按照下列的步骤去发现并决定那个日志工具将被使用的 (按照顺序,寻找过程会在找到第一个工具时中止): 1.寻找当前 factory 中名叫 mons.logging.Log 配置属性的值 2.寻找系统中属性中名叫 mons.logging.Log 的值 3.如果应用程序的 classpath 中有 log4j,则使用相关的包装(wrapper)类(Log4JLogger) 4.如果应用程序运行在 jdk1.4 的系统中,使用相关的包装类(Jdk14Logger) 5.使用简易日志包装类(SimpleLog)
log4j.appender.filelog.File=your file dir log4j.appender.filelog.MaxFileSize=your filesize log4j.appender.mylog.MaxBackupIndex=num 设置保存备份文件数量
yout = 布局类型(设置布局类型) Log4j 提供的 layout 有以下 4 种: org.apache.log4j.HTMLLayout(以 HTML 表格形式布局) org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串) org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) org.apache.log4j.PatternLayout(可以灵活地指定布局模式) 如果使用 PatternLayout 布局就要指定的打印信息的具体格式 ConversionPattern,打印参 数如下: %m 输出代码中指定的消息 %p 输出优先级,即 DEBUG,INFO,WARN,ERROR,FATAL %r 输出自应用启动到输出该 log 信息耗费的毫秒数 %c 输出所属的类目,通常就是所在类的全名 %t 输出产生该日志事件的线程名 %n 输出一个回车换行符,Windows 为"rn",Unix 为"n" %d 输出日志时间,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出:2007 年 5 月 17 日 19:30:00,000 %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数 [QC]是 log 信息的开头,可以为任意字符,一般为项目简称
合集下载

log4j配置文件模板大全

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。

log4j2 console 默认级别

log4j2 console 默认级别

log4j2是一个用于记录日志的Java库,它提供了丰富的功能和灵活的配置选项,使得开发人员可以轻松地管理和记录应用程序的日志信息。

其中,console 默认级别是log4j2中的一个重要概念,它决定了日志输出到控制台时的默认级别设置。

下面将介绍console 默认级别的相关内容,帮助大家更好地理解和使用log4j2库。

一、 log4j2概述1. log4j2的作用log4j2是Apache软件基金会下的一个Java日志框架,用于记录应用程序的运行日志。

它可以帮助开发人员实现灵活的日志记录和管理,提供了多种输出渠道和丰富的配置选项。

2. log4j2的特点- 支持多种输出方式,如控制台、文件、数据库等。

- 支持日志级别的设置,如debug、info、warn、error等。

- 支持灵活的日志格式配置。

- 支持动态配置和重新配置。

二、 console 默认级别1. console 默认级别的含义在log4j2中,console 默认级别是指日志输出到控制台时的默认级别设置。

也就是说,当开发人员使用log4j2记录日志并输出到控制台时,console 默认级别决定了哪些级别的日志会被显示在控制台上。

2. console 默认级别的设置log4j2中的console 默认级别可以通过配置文件进行设置。

在log4j2的配置文件中,可以通过编写相应的配置项来指定console 默认级别的值,常见的级别包括debug、info、warn、error等。

3. console 默认级别的作用console 默认级别的设置可以帮助开发人员在调试和生产环境中更好地管理日志输出。

在调试环境中,可以将console 默认级别设置为debug,以便在控制台上查看更详细的日志信息;而在生产环境中,可以将console 默认级别设置为info或warn,以避免过多的日志输出对性能造成影响。

三、使用示例下面是一个使用log4j2的示例配置文件,其中包括了对console 默认级别的设置:```xml<?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} - msgn"/></Console></Appenders><Loggers><Root level="debug"><AppenderRef ref="Console"/></Root></Loggers></Configuration>```在上面的示例中,配置了一个名为Console的控制台输出,其中设置了输出格式和级别。

springlog4j2.xml配置文件详解

springlog4j2.xml配置文件详解

springlog4j2.xml配置⽂件详解⼀、log4j2介绍 log4j 2.x版本不再⽀持像1.x中的.properties后缀的⽂件配置⽅式,2.x版本配置⽂件后缀名只能为".xml",".json"或者".jsn"。

配置⽂件的格式:log2j配置⽂件可以是xml格式的,也可以是json格式的。

配置⽂件的位置:log4j2默认会在classpath⽬录下寻找log4j2.xml、log4j.json、log4j.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进⾏命名。

⼆、配置⽂件节点解析 (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。

log4j中logger标签中additivity属性的用法说明

log4j中logger标签中additivity属性的用法说明

log4j中logger标签中additivity属性的⽤法说明⽬录log4j logger标签中additivity属性log4j.additivity⽤法和例⼦log4j logger标签中additivity属性将logger中的 additivity 属性配置为 false,则这个logger不会将⽇志流反馈到root中。

可以达到以logger中配置的appender⽅式来输出⽇志⽽其他地⽅输出的⽬的,看配置:< appender name = "DEMO" class = "com.XXXXX.RollingFileAppender" >< param name = "file" value = "${loggingRoot}/xxx.log" />< param name = "append" value = "true" />< param name = "encoding" value = "GB2312" />< param name = "threshold" value = "info" />< param name = "MaxFileSize" value = "50MB" />< param name = "MaxBackupIndex" value = "10" />< layout class = "org.apache.log4j.PatternLayout" >< param name = "ConversionPattern" value = "%d [%X{requestURIWithQueryString}] %-5p %c{2} - %m%n" /></ layout ></ appender >< logger name = "XXXX.XXXX.XXXX" additivity = "false" >< level value = "${loggingLevel}" />< appender-ref ref = "DEMO" /></ logger >root的作⽤是收集下⾯所有反馈上来的信息流并根据配置在root中appender进⾏输出,只要你在looger中配置了additivity="false",就不会反馈到root中。

log4j2.xml 标准配置写法

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 stringmatchfilter 用法

log4j2 stringmatchfilter 用法

log4j2 stringmatchfilter 用法`StringMatchFilter` 是Log4j 2 中的一种过滤器,用于过滤日志事件(Log Events)的处理。

这个过滤器的主要作用是匹配和过滤日志消息中的指定字符串。

以下是`StringMatchFilter` 的主要属性和用法:属性:1. key(必填):要匹配的日志消息的关键字。

2. value(可选):与`key` 对应的值,用于进一步精确匹配。

3. onMatch(可选):匹配成功时的操作。

默认值是`NEUTRAL`。

4. onMismatch(可选):匹配失败时的操作。

默认值是`DENY`。

用法示例:以下是一个简单的Log4j 2 XML 配置文件的示例,演示如何使用`StringMatchFilter` 过滤器:```xml<?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/><!--使用StringMatchFilter 过滤包含"ERROR" 的日志消息--><StringMatchFilter key="message" stringToMatch="ERROR" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/></Console></Appenders><Loggers><Root level="DEBUG"><AppenderRef ref="Console"/></Root></Loggers></Configuration>```在上述配置中:- `<StringMatchFilter>` 元素用于配置`StringMatchFilter` 过滤器。

使用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能够⾃动检测修改配置⽂件和重新配置本⾝, 设置间隔秒数。

log4j使用教程详解(怎么使用log4j2)

log4j使⽤教程详解(怎么使⽤log4j2)1. 去官⽅下载log4j 2,导⼊jar包,基本上你只需要导⼊下⾯两个jar包就可以了(xx是乱七⼋糟的版本号):log4j-core-xx.jarlog4j-api-xx.jar2. 导⼊到你的项⽬中:这个就不说了。

3. 开始使⽤:我们知道,要在某个类中使⽤log4j记录⽇志,只需要申明下⾯的成员变量(其实不⼀定要是成员变量,只是为了⽅便调⽤⽽已)复制代码代码如下:private static Logger logger = LogManager.getLogger(MyApp.class.getName());⾥getLogger有⼀个参数指定的是这个logger的名称,这个名称在配置⽂件⾥⾯可是有需要的,这个待会⼉再说。

声明了Logger对象,我们就可以在代码中使⽤他了。

4. ⽇志的级别:我们现在要调⽤logger的⽅法,不过在这个Logger对象中,有很多⽅法,所以要先了解log4j的⽇志级别,log4j规定了默认的⼏个级别:trace<debug<info<warn<error<fatal等。

这⾥要说明⼀下:1)级别之间是包含的关系,意思是如果你设置⽇志级别是trace,则⼤于等于这个级别的⽇志都会输出。

2)基本上默认的级别没多⼤区别,就是⼀个默认的设定。

你可以通过它的API⾃⼰定义级别。

你也可以随意调⽤这些⽅法,不过你要在配置⽂件⾥⾯好好处理了,否则就起不到⽇志的作⽤了,⽽且也不易读,相当于⼀个规范,你要完全定义⼀套也可以,不⽤没多⼤必要。

3)这不同的级别的含义⼤家都很容易理解,这⾥就简单介绍⼀下:trace:是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低⽇志级别不让他输出。

debug:调试么,我⼀般就只⽤这个作为最低级别,trace压根不⽤。

log4j中文手册

Log4j手册文档版本:1.1编者:陈华联系方式:clinker@发布日期:2006年4月5日1. 简介 (1)1. 简介 (3)1.1 概述 (3)1.2 主要组件 (3)2. Logger (4)2.1 层次结构 (4)2.2 输出级别 (5)3. Appenders (7)3.1 概念说明 (7)3.2 Appender的配置 (7)3.3 Appender的添加性 (8)4. Layouts (8)4.1 概念说明 (8)4.2 Layout的配置 (9)5. 配置 (10)6. 默认的初始化过程 (13)7. 配置范例 (14)7.1 Tomcat (14)8. Nested Diagnostic Contexts (14)9. 优化 (15)9.1 日志为禁用时,日志的优化 (15)9.2 当日志状态为启用时,日志的优化 (16)9.3 日志信息的输出时,日志的优化 (16)10. 总结 (16)11. 附录 (17)11.1 参考文档 (17)11.2 比较全面的配置文件 (17)11.3 日志乱码的解决 (19)1. 简介1.1 概述程序开发环境中的日志记录是由嵌入在程序中以输出一些对开发人员有用信息的语句所组成。

例如,跟踪语句(trace),结构转储和常见的System.out.println或printf调试语句。

log4j提供分级方法在程序中嵌入日志记录语句。

日志信息具有多种输出格式和多个输出级别。

使用一个专门的日志记录包,可以减轻对成千上万的System.out.println语句的维护成本,因为日志记录可以通过配置脚本在运行时得以控制。

log4j维护嵌入在程序代码中的日志记录语句。

通过规范日志记录的处理过程,一些人认为应该鼓励更多的使用日志记录并且获得更高程度的效率。

1.2 主要组件Log4j有三个主要组件: loggers、appenders和layouts。

这三个组件协同工作,使开发人员能够根据消息类型和级别来记录消息,并且在程序运行期控制消息的输出格式位置。

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指定不同的⽇志级别等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档