本文介绍将日志输出到文件的例子。

log4j 2输出到文件

log4j2.xml文件

这个文件里,定义了三个类型的Appender:Console、File和RollingFile。

  • Console类型的Appender名称为Console,并且使用过滤器ThresholdFilter:debug级别及其以上信息可以输出,其余级别不输出。
  • File类型的Appender名称为log,存储日志到log/test.log文件里,append=“false”表示每次运行程序后,新日志覆盖旧日志。
  • RollingFile类型的Appender名称为RollingFile,存储日志到logs/app.log文件里,app.log达到某个大小值时,可以备份存储起来。还有其它的触发策略,比如时间,可以每天某个时间点进行备份存储。
<?xml version="1.0" encoding="UTF-8"?>

<configuration status="error">
<!--先定义所有的appender-->
<appenders>
<!--这个输出控制台的配置-->
<Console name="Console" target="SYSTEM_OUT">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
<!--这个都知道是输出日志的格式-->
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</Console>
<!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
<File name="log" fileName="log/test.log" append="false">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</File> <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<SizeBasedTriggeringPolicy size="0.004MB"/>
</RollingFile>
</appenders>
<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
<loggers>
<!--建立一个默认的root的logger-->
<root level="trace">
<appender-ref ref="RollingFile"/>
<appender-ref ref="log"/>
<appender-ref ref="Console"/>
</root> </loggers>
</configuration>

输出日志的例子

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager; public class Hello
{
public static org.apache.logging.log4j.Logger logger = LogManager.getLogger(Hello.class.getName);
public static void main(String[] args)
{
add(1, 2);
} public static int add(int a , int b)
{
logger.entry(a, b);//trace级别的信息,单独列出来是希望你在某个方法或者程序逻辑开始的时候调用,和logger.trace("entry")基本一个意思
logger.info("我是info信息");
logger.warn("我是warn信息");
logger.error("我是error信息");
logger.fatal("我是fatal信息");
logger.printf(Level.TRACE, "%d+%d=%d", a, b, a + b);//这个就是制定Level类型的调用:谁闲着没事调用这个,也不一定哦!
logger.exit(a + b);//和entry()对应的结束方法,和logger.trace("exit");一个意思
return a + b;
}
}

输出信息

1、控制台

trace级别信息被过滤掉了。

13:52:31.012 INFO  main.java.com.dbyl.appiumCore.tests.Hello 17 add - 我是info信息
13:52:31.012 WARN main.java.com.dbyl.appiumCore.tests.Hello 18 add - 我是warn信息
13:52:31.013 ERROR main.java.com.dbyl.appiumCore.tests.Hello 19 add - 我是error信息
13:52:31.013 FATAL main.java.com.dbyl.appiumCore.tests.Hello 20 add - 我是fatal信息

2、不滚动存储的日志

项目的根目录/log/test.log

11:20:51.739 TRACE main.java.com.dbyl.appiumCore.tests.Hello 16 add - Enter params(1, 2)
11:20:51.745 INFO main.java.com.dbyl.appiumCore.tests.Hello 17 add - 我是info信息
11:20:51.746 WARN main.java.com.dbyl.appiumCore.tests.Hello 18 add - 我是warn信息
11:20:51.747 ERROR main.java.com.dbyl.appiumCore.tests.Hello 19 add - 我是error信息
11:20:51.747 FATAL main.java.com.dbyl.appiumCore.tests.Hello 20 add - 我是fatal信息
11:20:51.759 TRACE main.java.com.dbyl.appiumCore.tests.Hello 21 add - 1+2=3
11:20:51.760 TRACE main.java.com.dbyl.appiumCore.tests.Hello 22 add - Exit with(3)

3、滚动存储的日志

项目的根目录/logs/app.log

2017-02-13 at 13:33:24 CST TRACE main.java.com.dbyl.appiumCore.tests.Hello 22 add - Exit with(3)

app.log文件中只有一部分日志,其余部分日志都已经在文件达到4K大小时被备份存储了。

项目的根目录/log/2017-02/

drwxr-xr-x  8 wwh  staff  272  2 13 13:33 .
drwxr-xr-x 4 wwh staff 136 2 13 13:33 ..
-rw-r--r-- 1 wwh staff 120 2 13 13:33 app-02-13-2017-1.log.gz
-rw-r--r-- 1 wwh staff 122 2 13 13:33 app-02-13-2017-2.log.gz
-rw-r--r-- 1 wwh staff 122 2 13 13:33 app-02-13-2017-3.log.gz
-rw-r--r-- 1 wwh staff 123 2 13 13:33 app-02-13-2017-4.log.gz
-rw-r--r-- 1 wwh staff 123 2 13 13:33 app-02-13-2017-5.log.gz
-rw-r--r-- 1 wwh staff 110 2 13 13:33 app-02-13-2017-6.log.gz

log4j 2 入门实例(2)的更多相关文章

  1. log4j 2 入门实例(1)

    本文介绍log4j的基本概念和将日志输出到控制台的例子. 参考文章: http://www.jianshu.com/p/464058bdbc76 http://www.hankcs.com/progr ...

  2. log4j 2 入门实例(3)

    继承机制 所有logger都继承自root logger. 可以认为名为log4j2learn.Hello的logger继承自名为log4j2learn的logger. log4j会先查找名称是&qu ...

  3. mybatis 详解(二)------入门实例(基于XML)

    通过上一小节,mybatis 和 jdbc 的区别:http://www.cnblogs.com/ysocean/p/7271600.html,我们对 mybatis有了一个大致的了解,下面我们通过一 ...

  4. java 日志体系(三)log4j从入门到详解

    java 日志体系(三)log4j从入门到详解 一.Log4j 简介 在应用程序中添加日志记录总的来说基于三个目的: 监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作: 跟踪代 ...

  5. freemarker入门实例与源码研究准备工作

    首先去freemarker官网下载源码jar包,本文是基于freemarker-2.3.21.tar.gz进行研究的.解压源码包,找到freemarker的源码部分导入eclipse工程中.需要注意的 ...

  6. 1. mybatis 的入门实例

    mybatis 的入门实例 1.创建一个普通的Java项目 1.加入jar包(所有mybatis 和mysql) 2.加入配置文件 src 目录下 (1) db.properties mysql.us ...

  7. mybatis学习一:基于xml与注解配置入门实例与问题

    注:本case参考自:http://www.cnblogs.com/ysocean/p/7277545.html 一:Mybatis的介绍: MyBatis 本是apache的一个开源项目iBatis ...

  8. React 入门实例教程(转载)

    本人转载自: React 入门实例教程

  9. struts入门实例

    入门实例 1  .下载struts-2.3.16.3-all  .不摆了.看哈就会下载了. 2  . 解压  后 找到 apps 文件夹. 3.    打开后将 struts2-blank.war   ...

随机推荐

  1. android 布局中 layout_gravity、gravity、orientation、layout_weight

    线性布局中,有 4 个及其重要的参数,直接决定元素的布局和位置,这四个参数是 android:layout_gravity ( 是本元素相对于父元素的重力方向 ) android:gravity (是 ...

  2. 对象第复制operator=

    类机制中有默认的对象复制操作符=,自定义对象复制需要注意一个问题,如果有遇到指针指向的资源是需要释放的,这时需要毫不留情释放,否则内存空间的泄露就不可避免.复制操作与拷贝构造函数的参数是一致的,只是在 ...

  3. ylb: 触发器(Trigger)之Instead Of触发器 [注:没内容]

    ylbtech-SQL Server:SQL Server-触发器(Trigger)之Instead Of触发器 触发器(Trigger)之Instead Of触发器 [注:没内容]. ylb: 触发 ...

  4. 用循环将三个DIV变成红色

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. hdu 4862 KM算法 最小K路径覆盖的模型

    http://acm.hdu.edu.cn/showproblem.php?pid=4862 选t<=k次,t条路要经过全部的点一次而且只一次. 建图是问题: 我自己最初就把n*m 个点分别放入 ...

  6. EMMC电路设计

    优秀文档: eMMC基础技术1:MMC简介 eMMC基础技术2:eMMC概述 一:供电电源时序 EMMC的供电有两种模式,且分两路工作,有VCC和VccQ.在规范上,上电时序是有要求的,如下图所示. ...

  7. 强大易用的日期和时间库 Joda Time

    Joda-Time提供了一组Java类包用于处理包括ISO8601标准在内的date和time.可以利用它把JDK Date和Calendar类完全替换掉,而且仍然能够提供很好的集成,并且它是线程安全 ...

  8. 开发ActiveX控件调用另一个ActiveX系列0——身份证识别仪驱动的问题

    程序员要从0下表开始,这篇是介绍这个系列的背景的,没有兴趣的人可以直接跳过. 为什么要开发ActiveX控件 由于工作需要,我们开发了一个网站,使用了一款身份证识别仪的网页ActiveX(OCX)插件 ...

  9. 常用global.css

    html, body, ul, li, ol, dl, dd, dt, p, h1, h2, h3, h4, h5, h6, form, fieldset, legend, img { margin: ...

  10. ZIP解压缩文件的工具类【支持多级文件夹|全】

    ZIP解压缩文件的工具类[支持多级文件夹|全] 作者:Vashon 网上有非常多的加压缩演示样例代码.可是都仅仅是支持一级文件夹的操作.假设存在多级文件夹的话就不行了. 本解压缩工具类经过多次检查及重 ...