zoukankan      html  css  js  c++  java
  • log4j 2之简单测试

      1.去官网      http://logging.apache.org/log4j/2.x/download.html 点击打开链接 下载log4j 2的jar包和source包

       2.新建Log4j2_Test 项目 并添加log4j-api-2.0-beta9.jar和log4j-core-2.0-beta9.jar 添加到工程中 

             

    3.编写测试文件    Log4j2_Test.java文件

    package com.undergrowth;
    
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    public class Log4j2_Test {
    
    	/**
    	 * @param args
    	 */
    	//根据类的全名(com.undergrowth.Log4j2_Test)获取Logger 
    	//因为com.undergrowth.Log4j2_Test中没有Logger的实现类
    	//所以logger继承rootLogger
    	public static Logger logger=LogManager.getLogger(Log4j2_Test.class);
    	
    	//输出日志的六个级别的信息
    	public static void outLogger()
    	{
    		logger.trace("trace to console");
    		logger.debug("debug to console");
    		logger.info("info to console");
    		logger.warn("warn to console");
    		logger.error("error to console");
    		logger.fatal("fatal to console");
    	}
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//因为logger继承rootLogger 这里又没有配置文件设定rootLogger 所以采用默认的配置方式
    		//即rootLogger的日志级别(level)为error 输出源(appender)为控制台
    		outLogger();
    	}
    
    }
    

    控制台输出:

    18:52:13.102 [main] ERROR com.undergrowth.Log4j2_Test - error to console
    18:52:13.117 [main] FATAL com.undergrowth.Log4j2_Test - fatal to console
    

    具体的原因在代码里面已经加了注释 就不多说了 


    现在加入配置文件 

    对于配置文件log4j 2支持xml和json格式  在此使用xml方式 

    对于配置文件的加载方式 官网上如下:

    第一步会在系统属性中查找名为log4j.configurationFile的属性值 找到后加载配置文件 所以在此修改 Log4j2_Test.java文件 

    package com.undergrowth;
    
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    public class Log4j2_Test {
    
    	
    	
    	/**
    	 * @param args
    	 */
    	//指定日志的配置器文件
    	static{
    		System.setProperty("log4j.configurationFile", "com/undergrowth/log4j2.xml");
    	}
    	
    	
    	//根据类的全名(com.undergrowth.Log4j2_Test)获取Logger 
    	//因为com.undergrowth.Log4j2_Test中没有Logger的实现类
    	//所以logger继承rootLogger
    	public static Logger logger=LogManager.getLogger(Log4j2_Test.class);
    	
    	//输出日志的六个级别的信息
    	public static void outLogger()
    	{
    		logger.trace("trace to console");
    		logger.debug("debug to console");
    		logger.info("info to console");
    		logger.warn("warn to console");
    		logger.error("error to console");
    		logger.fatal("fatal to console");
    	}
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//因为logger继承rootLogger 这里又没有配置文件设定rootLogger 所以采用默认的配置方式
    		//即rootLogger的日志级别(level)为error 输出源(appender)为控制台
    		outLogger();
    	}
    
    }
    

      加入了如下代码 指定了配置文件的地方 
    //指定日志的配置器文件
    	static{
    		System.setProperty("log4j.configurationFile", "com/undergrowth/log4j2.xml");
    	}


    在上面指定了配置文件的地方后  所以在com.undergrowth的包下面新建  log4j2.xml的配置文件 内容如下

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 配置日志文件
    status~表示日志事件是否需要进一步的处理 off的话表示所有级别的日志事件都需要进一步处理
    name~可有可无
     -->
    <Configuration status="off" name="test">
        <!-- 添加输出源 -->
        <Appenders>
            <!-- 添加控制台输出源
            PatternLayout用于格式化日志文本 并输出到指定的输出源  
             -->
            <Console name="out" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{yyyy-MMM-dd HH:mm:ss} [%t] %-5p: %m%n"></PatternLayout>
            </Console>
        </Appenders>
        <!-- 添加记录器 -->
        <Loggers>
            <!-- 配置根记录器 如果不设置的话  level为error appender为控制台 -->
            <root level="trace">
                <AppenderRef ref="out" />
            </root>
        </Loggers>
    </Configuration>

    控制台输出:

    2013-九月-28 19:20:29 [main] TRACE: trace to console
    2013-九月-28 19:20:29 [main] DEBUG: debug to console
    2013-九月-28 19:20:29 [main] INFO : info to console
    2013-九月-28 19:20:29 [main] WARN : warn to console
    2013-九月-28 19:20:29 [main] ERROR: error to console
    2013-九月-28 19:20:29 [main] FATAL: fatal to console

    通过控制台的输出  我们可以看到 rootLogger的级别还有输出格式都变化了 表明配置文件起到了作用 


    其实加载配置文件除了使用 System.setProperty的方式外 还可以将配置文件放在src目录下 log4j会自动加载配置文件  但是配置文件名必须为log4j2.xml 就是上面自动配置的第五条


    两种方式最终的效果是一致的




    现在在配置文件加入文件输出源 修改如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 配置日志文件
    status~表示日志事件是否需要进一步的处理 off的话表示所有级别的日志事件都需要进一步处理
    name~可有可无
     -->
    <Configuration status="off" name="test">
        <!-- 添加输出源 -->
        <Appenders>
            <!-- 添加控制台输出源
            PatternLayout用于格式化日志文本 并输出到指定的输出源  
             -->
            <Console name="out" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{yyyy-MMM-dd HH:mm:ss} [%t] %-5p: %m%n"></PatternLayout>
            </Console>
            <File name="outFile" fileName="log/test.log">
                <PatternLayout pattern="%d{yyyy-MMM-dd HH:mm:ss} [%t] %-5p %l: %m%n"></PatternLayout>
            </File>
        </Appenders>
        <!-- 添加记录器 -->
        <Loggers>
            <!-- 配置根记录器 如果不设置的话  level为error appender为控制台 -->
            <root level="trace">
                <AppenderRef ref="out" />
                <AppenderRef ref="outFile" />
            </root>
        </Loggers>
    </Configuration>

    上面配置文件 加入了文件输出流 并制定了输出的文件为log目录下的test.log文件 如果不存在的话 系统会自动创建

    运行后在test.log中有如下内容

    2013-九月-28 19:29:56 [main] TRACE com.undergrowth.Log4j2_Test.outLogger(Log4j2_Test.java:27): trace to console
    2013-九月-28 19:29:56 [main] DEBUG com.undergrowth.Log4j2_Test.outLogger(Log4j2_Test.java:28): debug to console
    2013-九月-28 19:29:56 [main] INFO  com.undergrowth.Log4j2_Test.outLogger(Log4j2_Test.java:29): info to console
    2013-九月-28 19:29:56 [main] WARN  com.undergrowth.Log4j2_Test.outLogger(Log4j2_Test.java:30): warn to console
    2013-九月-28 19:29:56 [main] ERROR com.undergrowth.Log4j2_Test.outLogger(Log4j2_Test.java:31): error to console
    2013-九月-28 19:29:56 [main] FATAL com.undergrowth.Log4j2_Test.outLogger(Log4j2_Test.java:32): fatal to console
    

    对于配置文件 感觉很方便 只要修改配置文件 不用修改源码 即可控制什么信息输出  例如 将配置文件的root中的level修改为warn

    控制台信息即变化了:

    2013-九月-28 19:35:45 [main] WARN : warn to console
    2013-九月-28 19:35:45 [main] ERROR: error to console
    2013-九月-28 19:35:45 [main] FATAL: fatal to console
    




  • 相关阅读:
    提高软件开发内功的推荐阅读列表
    oracle如何使用dblink链接另一个数据库
    代码不可读
    oracle如何使用dblink链接另一个数据库
    程序猿的吐槽三——改进还是不改进
    程序猿的吐槽一
    软件模式
    用户分类
    Matplotlib简介和pyplot的简单使用——subplot
    Linux下Eclipse的PyDev和CDT的安装和配置
  • 原文地址:https://www.cnblogs.com/liangxinzhi/p/4275598.html
Copyright © 2011-2022 走看看