环境

操作系统:win10
log4j2版本: 2.11.0

准备

下载jar

官网https://logging.apache.org/log4j/2.x/download.html

把jar包放入到项目中去

开始使用

假设我们要使用log4j2,我们一般是先声明成一个静态成员变量:

private static final Logger logger = LogManager.getLogger(MyApp.class);
// 或者
private static final Logger logger = LogManager.getLogger(MyApp.class.getName());

声明好logger后,我们就可以开始使用它了。

假设我们有这么一个程序:

package test;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Hello {

    private static Logger logger = LogManager.getLogger(Hello.class.getName());

    public void getHello() {

        logger.entry();
        logger.trace("我是trace");
        logger.info("我是info信息");
        logger.error("我是error");
        logger.fatal("我是fatal");

        logger.trace("退出程序.");
        logger.exit();
    }

    public static void main(String[] args) {
        new Hello().getHello();
    }
}

如果没有自定义配置文件,执行上面的方法后,在控制台显示如下:

10:45:05.641 [main] ERROR test.Hello - 我是error
10:45:05.644 [main] FATAL test.Hello - 我是fatal

从结果上看出,只有>=error级别的日志打印出来了。 
这是因为Log4j有一个默认的配置,它的日志级别是ERROR,输出只有控制台。 
如果我已经定义好了日志,我把日志级别改成了TRACE,输出会变成下面这样:

10:48:21.326 [main] TRACE test.Hello - Enter
10:48:21.330 [main] TRACE test.Hello - 我是trace
10:48:21.331 [main] INFO  test.Hello - 我是info信息
10:48:21.331 [main] ERROR test.Hello - 我是error
10:48:21.331 [main] FATAL test.Hello - 我是fatal
10:48:21.331 [main] TRACE test.Hello - 退出程序.
10:48:21.331 [main] TRACE test.Hello - Exit

配置文件

log4j2默认下载包里是没有配置文件的。下面这个配置文件等于缺省配置: 
https://logging.apache.org/log4j/2.x/manual/configuration.html

<?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} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

只需要把上面level="error"改为level="trace"就可以,看到刚才的效果!

由于这篇是简单使用,就讲这些,下篇接着讲。

最新文章

  1. Pairwise Sum and Divide 51nod
  2. composer环境配置
  3. 第二章 ZAB协议介绍
  4. 计算机网络: IP地址,子网掩码,默认网关,DNS服务器详解
  5. ES6笔记-正则表达式和字符串正则方法
  6. 基于Andoird 4.2.2的Account Manager源代码分析学习:AccountManagerService系统服务的添加
  7. Tengine中的proxy_upstream_tries
  8. 一句话 Servlet
  9. java 流输出的一些问题
  10. [译]RabbitMQ教程C#版 - 远程过程调用(RPC)
  11. webDriver定位元素的方法
  12. Qt浅谈之一:内存泄露(总结)
  13. JS中图片飞飞效果
  14. Dubbo -- 系统学习 笔记 -- 配置
  15. 以OPC PowerTool 连接iFix与KEPWARE
  16. php代码不支持多维数组,注释和没有缓存功能。
  17. 廖雪峰Java1-2程序基础-1基本结构
  18. 云数据库Redis版256M双机热备款
  19. 数据校验DWZ与validator
  20. C语言 函数参数不确定时 需要用到va_start和va_end函数

热门文章

  1. bat入门--第一个bat文件
  2. js递归遍历多维数组并在修改数组的key后返回新的多维数组
  3. Dev_GridView自定义表格
  4. rest_framework 跨域和CORS
  5. Codeforces 1154E - Two Teams - [线段树+链表]
  6. Install sublime text for elementary os
  7. 3. Scala运算符
  8. sql进阶
  9. ambari卸载集群
  10. jmeter常用插件介绍