Log4j的日志输出级别和配置文件详解

一,Log4j的日志输出级别

    Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、
INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信

息的显示内容。

ALL 各级包括自定义级别 
DEBUG 指定细粒度信息事件是最有用的应用程序调试 
ERROR 错误事件可能仍然允许应用程序继续运行 
FATAL 指定非常严重的错误事件,这可能导致应用程序中止 
INFO 指定能够突出在粗粒度级别的应用程序运行情况的信息的消息 
OFF 这是最高等级,为了关闭日志记录 
TRACE 指定细粒度比DEBUG更低的信息事件 
WARN 指定具有潜在危害的情况 

    级别p的级别使用q,在记录日志请求时,如果p>=q启用。这条规则是log4j的核心。它假设级别是有序的。对于标准级别它们关系如下:
ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。

验证Log4j的规则:

public class LogClass {
   private static org.apache.log4j.Logger log = Logger
                                    .getLogger(LogClass.class);
   public static void main(String[] args) {
      log.setLevel(Level.WARN);

      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

当编译并运行LogClass程序会产生以下结果:
Warn Message!
Error Message!
Fatal Message!

二,Log4j.properties配置文件详解

1,log4j.rootLogger=DEBUG,console,FILE
log4j.rootLogger用来配置日志输出的优先级和日志输出的目的地。第一个字段DEBUG指定优先级,只能指定一个字段。第二个字段和第三个字段,
用来指定日志输出的目的地。console代表输出到控制台,FILE代表输出到文件。如果只有一个输出目的地,我们也可以只指定一个字段。

2,log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console用来配置具体的类,这里的console就是我们在上面定义的log4j.rootLogger=DEBUG,console,FILE

3,log4j.appender.console.threshold=INFO
threshold是个全局的过滤器,把低于所设置的level的信息过滤掉,不显示出来。

4,log4j.appender.console.layout=org.apache.log4j.PatternLayout
指定布局样式,Log4j具有以下几种类型的布局Layout
PatternLayout:根据指定的转换模式格式化日志输出
HTMLLayout:格式化日志输出为HTML表格
XMLLayout:格式化日志输出为XML文件
SimpleLayout:以一种非常简单的方式格式化日志输出
TTCCLayout:包含日志产生的时间、线程、类别等信息

5,log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
设置日志的布局格式

6,log4j.appender.FILE=org.apache.log4j.RollingFileAppender
输出到文件
org.apache.log4j.ConsoleAppender(输出日志到控制台)
org.apache.log4j.FileAppender(输出日志到文件)
org.apache.log4j.DailyRollingFileAppender(输出日志到文件,且每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(输出日志到文件,且文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

ConsoleAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Target=System.err:默认值是System.out。

FileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。

DailyRollingFileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定当前消息输出到logging.log4j文件中。
DatePattern='.'yyyy-MM:每月滚动一次日志文件,即每月产生一个新的日志文件。当前月的日志文件名为logging.log4j,前一个月的日志
文件名logging.log4j.yyyy-MM。
另外,也可以指定按周、天、时、分等来滚动日志文件,对应的格式如下:
1)'.'yyyy-MM:每月
2)'.'yyyy-ww:每周
3)'.'yyyy-MM-dd:每天
4)'.'yyyy-MM-dd-a:每天两次
5)'.'yyyy-MM-dd-HH:每小时
6)'.'yyyy-MM-dd-HH-mm:每分钟

RollingFileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。
MaxFileSize=100KB:后缀可以是KB, MB 或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logging.log4j.1文件中。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数,例如,设为2则可以产生logging.log4j.1,logging.log4j.2两个滚动文件
和一个logging.log4j文件。

7,log4j.appender.FILE.Append=true
是否追加:是

8,log4j.appender.FILE.File=../logs/log4jtest.log
日志文件路径

9,log4j.appender.FILE.MaxFileSize=10MB
设置文件大小超过10MB以后自动更名,将原来的日志移动到新的新的文件中,打包备份。

10,log4j.appender.FILE.MaxBackupIndex=50
设置可以产生的滚动文件的最大数量,也就是可以产生的备份文件的最大数量。


log4j2是一个流行的Java日志框架,可以通过log4j2.xml文件进行配置。下面是log4j2.xml文件的配置详解: 1. 配置文件动态刷新配置 可以使用monitorInterval属性来设置配置文件的动态刷新间隔,单位为秒。例如: ```xml <Configuration monitorInterval="30"> ``` 2. Configuration的status属性 Configuration标签有一个status属性,用于指定日志记录器的状态。可以设置为debug、info、warn、error、fatal。例如: ```xml <Configuration status="warn"> ``` 3. 日志级别 可以使用属性level来指定日志级别,可以设置为trace、debug、info、warn、error、fatal、off。例如: ```xml <Logger name="com.foo.Bar" level="trace"> ``` 4. Logger与Root标签 Logger标签用于指定特定的类或包的日志级别,而Root标签用于指定所有日志记录器的默认日志级别。例如: ```xml <Root level="error"> <AppenderRef ref="Console"/> </Root> <Logger name="com.foo.Bar" level="trace"> <AppenderRef ref="RollingFile"/> </Logger> ``` 5. Logger的additivity属性 Logger标签还有一个additivity属性,用于指定是否将日志事件传递给父记录器。默认情况下,Logger的additivity属性为true。例如: ```xml <Logger name="com.foo.Bar" level="trace" additivity="false"> ``` 6. appender-ref的ref属性 可以使用appender-ref标签来引用appender。例如: ```xml <Logger name="com.foo.Bar" level="trace"> <AppenderRef ref="RollingFile"/> </Logger> ``` 7. appender 可以使用appender标签来指定日志输出的目的地,例如控制台或文件。常用的appenderConsole、File、RollingFile等。例如: ```xml <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> <PatternLayout pattern="%d %p %c{1.} [%t] %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="250 MB"/> </Policies> </RollingFile> </Appenders> ``` 8. Patterns 可以使用PatternLayout标签来指定日志输出的格式。例如: ```xml <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> ``` 9. Java使用Log4j2 可以使用以下步骤在Java中使用Log4j2: 1)导入pom依赖 ```xml <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.14.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.14.1</version> </dependency> ``` 2)配置Log4j2.xml 3)使用日志 ```java import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class MyClass { private static final Logger logger = LogManager.getLogger(MyClass.class); public void doSomething() { logger.debug("Debug message"); logger.info("Info message"); logger.warn("Warn message"); logger.error("Error message"); logger.fatal("Fatal message"); } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值