log4j| log4j-控制指定类,包的日志级别

本文为了测试方便,只将日志记录打印在控制台,并未做其他的文件保存设置,并且设置统一根日志等级为Error,接下来我们来看一下项目结构:
在这里插入图片描述

如上图所示的结构下,下面列出了主要的类,其中都写了一个record方法,里面有所有的日志记录,这里需要注意是的是这些类所在包的位置:

package com.debug;

import org.apache.log4j.Logger;

/**
 * @author yveshe ([email protected])
 * @create 10 10, 2019
 * @since 1.0.0
 */
public class DebugTest {

    static Logger log = Logger.getLogger(DebugTest.class.getName());

    public static void recode() {
        log.trace("This is trace record!");
        log.debug("This is debug record!");
        log.info("This is info record!");
        log.warn("This is warn record!");
        log.error("This is error record!");
        log.fatal("This is fatal record!");
    }
}
package com.debug;

import org.apache.log4j.Logger;

/**
 * @author yveshe ([email protected])
 * @create 10 10, 2019
 * @since 1.0.0
 */
public class DebugTest2 {

    static Logger log = Logger.getLogger(DebugTest2.class.getName());

    public static void recode() {
        log.trace("This is trace record!");
        log.debug("This is debug record!");
        log.info("This is info record!");
        log.warn("This is warn record!");
        log.error("This is error record!");
        log.fatal("This is fatal record!");
    }
}
package com.info;

import org.apache.log4j.Logger;

/**
 * @author yveshe ([email protected])
 * @create 10 10, 2019
 * @since 1.0.0
 */
public class InfoTest {
    static Logger log = Logger.getLogger(InfoTest.class.getName());

    public static void recode() {
        log.trace("This is trace record!");
        log.debug("This is debug record!");
        log.info("This is info record!");
        log.warn("This is warn record!");
        log.error("This is error record!");
        log.fatal("This is fatal record!");
    }
}

测试类:

package com.yveshe;

import com.debug.DebugTest;
import com.debug.DebugTest2;
import com.info.InfoTest;
import org.apache.log4j.Logger;

/**
 * Hello world!
 */
public class Test {
    static Logger log = Logger.getLogger(Test.class.getName());

    public static void main(String[] args) {
        log.trace("This is trace record!");
        log.debug("This is debug record!");
        log.info("This is info record!");
        log.warn("This is warn record!");
        log.error("This is error record!");
        log.fatal("This is fatal record!");

        System.out.println();
        InfoTest.recode();

        System.out.println();
        DebugTest.recode();

        System.out.println();
        DebugTest2.recode();
    }
}

log4j.properties配置

# Define the root logger with appender file
log4j.rootLogger=ERROR, STDOUT
# Define the stdout appender
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.conversionPattern=%d %-5p [%t] - %c -%m%n

# 限制指定类的日志级别
log4j.logger.com.debug.DebugTest=debug

# 限制指定包的日志级别 (比如: com.info.*)
log4j.logger.com.info=info

输出结果

D:\Java\jdk1.8.0_201\bin\java.exe "-javaagent:D:\ProgramFiles\JetBrains\IntelliJ IDEA 2019.1\lib\idea_rt.jar=53465:D:\ProgramFiles\JetBrains\IntelliJ IDEA 2019.1\bin" -Dfile.encoding=UTF-8 -classpath D:\Java\jdk1.8.0_201\jre\lib\charsets.jar;D:\Java\jdk1.8.0_201\jre\lib\deploy.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\access-bridge-64.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\cldrdata.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\dnsns.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\jaccess.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\jfxrt.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\localedata.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\nashorn.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\sunec.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\sunjce_provider.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\sunmscapi.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\sunpkcs11.jar;D:\Java\jdk1.8.0_201\jre\lib\ext\zipfs.jar;D:\Java\jdk1.8.0_201\jre\lib\javaws.jar;D:\Java\jdk1.8.0_201\jre\lib\jce.jar;D:\Java\jdk1.8.0_201\jre\lib\jfr.jar;D:\Java\jdk1.8.0_201\jre\lib\jfxswt.jar;D:\Java\jdk1.8.0_201\jre\lib\jsse.jar;D:\Java\jdk1.8.0_201\jre\lib\management-agent.jar;D:\Java\jdk1.8.0_201\jre\lib\plugin.jar;D:\Java\jdk1.8.0_201\jre\lib\resources.jar;D:\Java\jdk1.8.0_201\jre\lib\rt.jar;D:\IdeaProjects\graylog-fj\log4j-demo\target\classes;D:\ProgramFiles\maven-3.6.0\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar com.yveshe.Test
2019-10-10 10:36:24,233 ERROR [main] - com.yveshe.Test -This is error record!
2019-10-10 10:36:24,234 FATAL [main] - com.yveshe.Test -This is fatal record!

2019-10-10 10:36:24,234 INFO  [main] - com.info.InfoTest -This is info record!
2019-10-10 10:36:24,234 WARN  [main] - com.info.InfoTest -This is warn record!
2019-10-10 10:36:24,234 ERROR [main] - com.info.InfoTest -This is error record!
2019-10-10 10:36:24,234 FATAL [main] - com.info.InfoTest -This is fatal record!

2019-10-10 10:36:24,235 DEBUG [main] - com.debug.DebugTest -This is debug record!
2019-10-10 10:36:24,235 INFO  [main] - com.debug.DebugTest -This is info record!
2019-10-10 10:36:24,235 WARN  [main] - com.debug.DebugTest -This is warn record!
2019-10-10 10:36:24,235 ERROR [main] - com.debug.DebugTest -This is error record!
2019-10-10 10:36:24,235 FATAL [main] - com.debug.DebugTest -This is fatal record!

2019-10-10 10:36:24,235 ERROR [main] - com.debug.DebugTest2 -This is error record!
2019-10-10 10:36:24,235 FATAL [main] - com.debug.DebugTest2 -This is fatal record!

对于标准日志级别,我们有 ALL < TRACE < DEBUG <INFO <WARN <ERROR <FATAL <OFF的级别顺序.

我们可以看到在没有指定日志级别的DebugTest2 类和测试类Test 中只会打印大于等于ERROR级别的日志.

而在指定了日志级别设置的则按照指定日志级别打印,不受rootLogger设置的影响,哪怕rootLogger设置的日志级别高于指定的日志级别.

资源下载: log4j-demo.zip

发布了457 篇原创文章 · 获赞 147 · 访问量 43万+

猜你喜欢

转载自blog.csdn.net/u011479200/article/details/102476242