log4j.properties配置文件配置项的说明

合集下载

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。

android log4j 用法

android log4j 用法

android log4j 用法Android Log4j 用法:详细步骤解析Log4j是一个功能强大且广泛用于Java程序的日志记录工具。

它提供了灵活的日志配置选项,允许开发人员根据应用程序的需求自定义日志输出。

在Android开发中,我们可以使用Log4j来记录应用程序的日志,以便更好地进行调试和故障排除。

本文将一步一步介绍如何在Android项目中使用Log4j,并对其用法进行详细解析。

第一步:引入Log4j库要使用Log4j,我们首先需要将其库文件添加到Android项目的依赖项中。

可以从Apache官方网站上下载Log4j的最新版本。

下载完成后,将其包含在项目的libs文件夹中。

接下来,在项目的build.gradle文件中添加以下依赖项:dependencies {implementation files('libs/log4j.jar')}这样,Log4j库就会被添加到项目中。

第二步:创建配置文件Log4j需要一个配置文件来定义日志输出的格式和目标。

我们可以在项目的res目录下创建一个名为log4j.properties的文件,并按照如下内容进行配置:# 设置根日志级别为DEBUGlog4j.rootLogger=DEBUG,stdout# 配置控制台输出log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %t %c - %m%n# 配置文件输出log4j.appender.file=org.apache.log4j.RollingFileAppenderlog4j.appender.file.File=/sdcard/app.loglog4j.appender.file.MaxFileSize=5MBlog4j.appender.file.MaxBackupIndex=4yout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %t %c - %m%n在上述配置文件中,我们首先设置了根日志级别为DEBUG,这意味着只有DEBUG级别及以上的日志才会被输出。

log4j基本使用方法

log4j基本使用方法

log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j。

首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址:/log4j/1.2/download.html我们先看一个最简单的示例:【示例1】项目结构:【注:由于这里的多个项目公用一个jar档,我们可以创建一个专门放置jar档的Java工程,然后将jar档放到lib目录下。

在要使用的工程中按图所示进行引用】Java代码:Java代码1package com.coderdream.log4j;23import org.apache.log4j.Logger;45public class HelloLog4j {67private static Logger logger = Logger.getLogger(HelloLog4j.class);89/**10* @param args11*/12public static void main(String[] args) {13// System.out.println("This is println message.");1415// 记录debug级别的信息16logger.debug("This is debug message.");17// 记录info级别的信息("This is info message.");19// 记录error级别的信息20logger.error("This is error message.");21}22}配置文件log4j.properties:Properties代码23#可以设置级别:debug>info>error24#debug:显示debug、info、error25#info:显示info、error26#error:只error27log4j.rootLogger=debug,appender128#log4j.rootLogger=info,appender129#log4j.rootLogger=error,appender13031#输出到控制台32log4j.appender.appender1=org.apache.log4j.ConsoleAppender33#样式为TTCCLayoutyout=org.apache.log4j.TTCCLayout输出结果:Console代码35[main] DEBUG com.coderdream.log4j.HelloLog4j - This is debug message.36[main] INFO com.coderdream.log4j.HelloLog4j - This is info message.37[main] ERROR com.coderdream.log4j.HelloLog4j - This is error message. 通过配置文件可知,我们需要配置3个方面的内容:1、根目录(级别和目的地);2、目的地(控制台、文件等等);3、输出样式。

log4j2使用properties文件进行配置

log4j2使用properties文件进行配置

log4j2使⽤properties⽂件进⾏配置⽹上不少⽂章给的都是⽤xml进⾏配置,也会提到⽆法使⽤properties⽂件对log4j进⾏配置,但那应该只是在他们写⽂章的时候才是如此,最新的2.8.2版本经过我试验后是可以做到的当然该⽂件最好放在特定的⽬录中才⾏,官⽅⽂档也提到了1.Log4j will inspect the "log4j.configurationFile" system property and, if set, will attempt to load the configuration using the ConfigurationFactory that matches the file extension.2.If no system property is set the YAML ConfigurationFactory will look for log4j2-test.yaml or log4j2-test.yml in the classpath.3.If no such file is found the JSON ConfigurationFactory will look for log4j2-test.json or log4j2-test.jsn in the classpath.4.If no such file is found the XML ConfigurationFactory will look for log4j2-test.xml in the classpath.5.If a test file cannot be located the YAML ConfigurationFactory will look for log4j2.yaml or log4j2.yml on the classpath.6.If a YAML file cannot be located the JSON ConfigurationFactory will look for log4j2.json or log4j2.jsn on the classpath.7.If a JSON file cannot be located the XML ConfigurationFactory will try to locate log4j2.xml on the classpath.8.If no configuration file could be located the DefaultConfiguration will be used. This will cause logging output to go to the console.name = PropertiesConfigproperty.filename = target/logs#appenders = console, file#配置值是appender的类型,并不是具体appender实例的nameappenders = rollingappender.rolling.type = RollingFile = RollingLogFileappender.rolling.fileName=${filename}/automationlogs.logappender.rolling.filePattern = ${filename}/automationlogs-%d{MM-dd-yy-HH-mm-ss}-%i.logyout.type = PatternLayoutyout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%nappender.rolling.policies.type = Policiesappender.rolling.policies.size.type = SizeBasedTriggeringPolicyappender.rolling.policies.size.size=100MBappender.rolling.strategy.type = DefaultRolloverStrategyappender.rolling.strategy.max = 5rootLogger.level = tracerootLogger.appenderRef.rolling.ref = rollingrootLogger.appenderRef.rolling.ref = RollingLogFile。

Log4j笔记--log4j的各种输出控制的权限

Log4j笔记--log4j的各种输出控制的权限

Log4j笔记●为什么要使用日志⏹开发阶段可以发现程序的问题,排错⏹产品阶段可以记录程序运行的状况⏹Log4j就是一个简便的日志管理工具●System.out.println()的问题⏹不能在运行过程中打开或者关闭⏹不能有针对性地选择⏹输出的信息没有分级⏹只能输出文本信息⏹不能改变输出的位置Log4j可以解决以上的所有问题●log4j简介⏹是最流行的Java日志处理框架⏹Apache的子项目⏹开源●log4j的使用⏹需要从Apache官方网站上下载jar包⏹添加到项目的Build Path里⏹使用示例运行这个程序,需要log4j.properties文件warn是指输出的日志级别;大于等于这个级别的输出才会执行,小于此级别的不会输出;级别有8种,名称固定Console:输出的位置或者目的地,这个名字是别名,可以任意起名字在第二行针对这个目的地进行设置如果上面叫aaa第二行就是log4j.appender.aaa第三行可以设置输出目的地的一些配置信息,最常用的是输出的布局格式对于输出到文件,还需要在这个位置指定文件的路径log4j的核心●Logger完成日志信息的处理,可以定义输出的层次和决定信息是否输出输出的优先级顺序:ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFFALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF●Appender设置日志信息的去向,可以同时指定多个目的地。

log4j.appender.appenderName=Appender.classlog4j.appender.appenderName.optiona1=value1…log4j.appender.appenderName.optionaN=valueN常用的有如下:org.apache.log4j.ConsoleAppender 控制台org.apache.log4j.FileAppender 文件org.apache.log4j.DailyRollingFileAppender 每天产生一个日志文件org.apache.log4j.RollingFileAppender 文件尺寸到一定大小产生新文件org.apache.log4j.WriterAppender 将日志以流的方式发送org.apache.log4j.JdbcAppender 将日志保存到数据库●Layout设置日志信息的输出样式配置格式:yout=Layout.classyout.option=value常用:org.apache.log4j.HTMLLayout 以HTML表格形式布局org.apache.log4j.SimpleLLayout 包含日志级别和信息字符串org.apache.log4j.TTCCLayout 包含日志产生的时间,执行者,类别等org.apache.log4j.PatternLayout 灵活指定%p 输出优先级%r 输出自应用启动到输出信息所耗费的毫秒数%t 输出产生该日志事件的线程名%f 输出所属类名%c 输出类的全名称%d 输出日志产生时间或者日前,后面用{yyyy-MM-dd HH-mm-ss}指定%l 输出所处行号%m 具体信息%n 换行●配置文件⏹log4j.propertieslog4j.rootLogger=级别,去向。

idea log4j插件用法

idea log4j插件用法

1. 什么是Log4j插件Log4j是一个开源的日志记录框架,广泛应用于Java项目中。

Log4j插件是用于在开发过程中方便地使用Log4j框架的工具,能够帮助开发人员快速配置和管理日志记录功能。

2. Log4j插件的安装在使用Log4j插件之前,首先需要在开发环境中安装Log4j插件。

可以通过Maven或手动下载Jar包的方式将Log4j插件导入到项目中,然后在项目配置文件中声明Log4j插件的依赖关系。

3. Log4j插件的配置在项目中成功导入Log4j插件后,需要对插件进行配置。

首先需要创建一个Log4j配置文件(通常命名为log4j.properties或log4j.xml),在配置文件中指定日志记录的格式、输出目标、日志级别等参数。

4. 使用Log4j插件记录日志配置完成后,开发人员可以通过调用Log4j插件提供的API来记录日志。

开发人员可以在代码中插入日志记录语句,指定日志的级别(如DEBUG、INFO、WARN、ERROR等),以及日志的内容。

通过Log4j插件记录的日志可以输出到控制台、文件、数据库等不同的目标。

5. Log4j插件的优点Log4j插件提供了丰富的日志记录功能,可以根据需要灵活地配置日志记录的方式和输出目标。

Log4j插件具有较高的性能和稳定性,适用于各种规模的项目。

另外,Log4j插件支持多种日志级别,开发人员可以根据实际需要精细地控制日志的记录和输出。

6. Log4j插件的注意事项在使用Log4j插件的过程中,需要注意配置文件的正确指定和日志记录语句的合理使用。

对于不同的项目和需求,需要仔细选择适合的日志记录方式和输出目标,以便保证日志记录的准确性和便捷性。

7. 结语Log4j插件是一个优秀的日志记录工具,能够帮助开发人员轻松地实现日志记录的功能。

通过仔细的配置和合理的使用,开发人员可以充分发挥Log4j插件的优势,为项目提供有效的日志管理和追踪功能。

希望本文对大家了解Log4j插件的用法有所帮助。

使用log4j2自定义配置文件位置和文件名(附log4j2.xml配置实例)

使用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)

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压根不⽤。

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

在程序中,可以以以下方式来使用Log log = mons.logging.LogFactory.LogFactory.getLog(yourClassName.class);log.debug("debug message -------------------");("inf o message ******************");log.warn("w arn message +++++++++++++++");log.error("error msg=================");本文主要讲的是如何配置log4j,先让我们先看看一个典型的log4j配置:==========log4j.properties==================log4j.appender.stdout=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%nlog4j.appender.f ileout=org.apache.log4j.RollingFileAppenderlog4j.appender.f ileout.File=D:/w orkspace/log4jtest/log/application.loglog4j.appender.f ileout.MaxFileSize=10000KBlog4j.appender.f ileout.MaxBackupI ndex=10log4j.appender.f yout=org.apache.log4j.PatternLayoutlog4j.appender.f yout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS}[%24F:%-3L:%-5p]%x %m%nlog4j.rootCategory=INF O, stdout, fileout.wolf square.log2=DEB UG,stdout===================================这个文件可以划为三小块===========第一块定义了一个名为 stdout 的appender和layout (appender,layout的概念后面再解释,目前先记着有这样两个名词):log4j.appender.stdout=org.apache.log4j.ConsoleAppender定义stdout的实际输出实现类,从这个appender实现类名可以猜到,这个类是负责控制台输出的。

yout=org.apache.log4j.PatternLayout定义stdout的输出装饰器yout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n装饰器参数配置============第二块定义了一个名为 fileout 的appender和layout:log4j.appender.f ileout=org.apache.log4j.RollingFileAppender同理可猜这个实现类是输出到文件的log4j.appender.f ileout.File=D:/w orkspace/log4jtest/log/application.loglog4j.appender.f ileout.MaxFileSize=10000KBlog4j.appender.f ileout.MaxBackupI ndex=10log4j.appender.f yout=org.apache.log4j.PatternLayoutlog4j.appender.f yout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS}[%24F:%-3L:%-5p]%x %m%n============第三块定义了名字分别为rootCategory,.wolf square.log2的两个loggerlog4j.rootCategory=INF O, stdout, fileout.wolf square.log2=DEB UG,stdoutrootCategory logger是缺省的logger,记录所有的包的信息输出。

第二个logger是只输出指定包com.w olf square.log2下的日志信息。

那么INF O,DEB UG又是什么意思呢,他们是信息的分级标识,通过继承实现这个实现自定义级别的分级。

第三块配置两句的意思是这样的:rootCategory 把所有类的INF O级别以上的信息输出到stdout和fileout两个appender中,.w olf square.log2,把com.w olf square.log2包中的所有类(包括子包)DEB UG级别(含)以上的信息输出到stdout 中一个logger可以输出到很多个设备中(appender),如果需要增加输出设备则用分号分隔开appender名称即可。

输出信息的分类级别是DEB UG > INF O > WAR N > ERROR,信息细节由细到粗,指定输出某一级别的信息时,过细的信息输出将会被忽略如果一个配置中有多个logger,他们之间会有什么关系呢?答案是,在输出上,他们没有任何关系,都是独立运作的,不相关的,但是在配置上,父包的配置会传给子包,如果子包没有另外定义配置的话。

例如上面配置文件中的两个logger:.wolf square.wolf square.log2这里认为 .wolf square.log2继承自 .w olf square,他们的配置声明如下:log4j.rootCategory=INF O, stdout, fileout.wolf square.log2=,stdout注意第二句没有指定输出级别,那么根据配置继承规则会继承父logger的配置,在这里就是INF O。

同时需要强调的是,如果两个logger有继承关系,且输出到同一个appender,根据输出独立原则,那么将会出现两行一样的信息,例如上面的两个logger定义会导致这样的情况。

最后以一幅图来概括:log4j.properties配置详解在学习spring mvc的同时也对其日志引起了兴趣,由于准备要把log4j更换成logback 其两框架都是同一个作者开发,所以先把log4j做一个详细的了解,以下内容从Google上搜到出来的,关于log4j.properties的详细配置Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。

通过配置,可以创建出Log4J的运行环境。

1. 配置文件Log4J配置文件的基本格式如下:#配置根Loggerlog4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …#配置日志信息输出目的地Appenderlog4j.appender.appenderName = .of.appender.classlog4j.appender.appenderName.option1 = value1…log4j.appender.appenderName.optionN = valueN#配置日志信息的格式(布局)yout = yout.class yout.option1 = value1…yout.optionN = valueN其中[level] 是日志输出级别,共有5级:FATAL 0ERROR 3WARN 4INFO 6DEBUG 7Appender 为日志输出目的地,Log4j提供的appender有以下几种:org.apache.log4j.ConsoleAppender(控制台),org.apache.log4j.FileAppender(文件),org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)Layout:日志输出格式,Log4j提供的layout有以下几种:org.apache.log4j.HTMLLayout(以HTML表格形式布局),org.apache.log4j.PatternLayout(可以灵活地指定布局模式),org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)打印参数: Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:%m 输出代码中指定的消息%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 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

举例:Testlog4.main(TestLog4.java: 10 )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来完成配置。

相关文档
最新文档