//配置日志输出的定义,主要有三点:1:输出什么级别的日志信息,2:将日志信息输出到那里,3:输出的日志以什么格式展示
public static void main(String[] args) { Logger logger=Logger.getLogger(PatternLayoutTest.class);
//输出等级
logger.setLevel(Level.INFO);
//设置输出格式 日志显示格式
String pattern="[%d{HH:mm:ss}]---[%p]--- (%c:%L)--- %m%n";
//设置输出layout 日志显示样式
PatternLayout p=new PatternLayout(pattern);
//输出端 显示的目的地
ConsoleAppender consoleAppender=null;
try {
consoleAppender=new ConsoleAppender(p, consoleAppender.SYSTEM_OUT);
logger.addAppender(consoleAppender);
logger.debug("debug");
logger.info("info");
logger.warn("warn");
logger.error("error");
logger.fatal("fatal");
} catch (Exception e) {
// TODO: handle exception
} /**
* 一:定义日志信息的格式化方式,Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:
* 1)%t 用来输出生成该日志事件的线程的名称
* 2)%p 用于输出日志事件的优先级,即DEBUG,INFO,WARN,ERROR,FATAL
* 3)%r 用于输出从layout(布局)的构建到日志事件创建所经过的毫秒数
* 4)%c 用于输出日志事件的category(类别),通常就是所在类的全名
* 5)%F 用于输出被发出日志记录请求,其中的文件名
* 6)%d 用于输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:20017年02月18日 22:10:28,921
* 7)%L 用于输出日志事件的发生位置,即在代码中的行数。举例:10
* 8)%l 用于输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
* 9)%% 用于输出%标志
* 10)%M 用于输出打印该条日志的方法名
* 11)%m 用于输出代码中指定的消息
* 12)%n 用于输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
*
*
* 当我们运行程序后发现,因为输出的日志信息长短不一,所以对不齐,看起来不好看,那么有什么法子呢?log4j也发现这个问题,并且为我们提供了格式修饰符
* 格式修饰符:可以控制输出字段的最小字段宽度、最大字段宽度、字段对齐格式,如下所示:
* 序号 格式修饰符 对齐方式 最小宽度 最大宽度 备注(对%c来使用格式修饰符,所以改变的是类别名称)
*
* 1) %-20c 左对齐 20 none 用空格右垫,如果类别名称少于20个字符长
* 2) %20c 右对齐 20 none 用空格左垫,如果类别名称少于20个字符长
* 3) %.30c 左对齐 none 30 从开始截断,如果类别名称超过30个字符长
* 4) %-20.30c 左对齐 20 30 用空格右侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。
* 5) %20.30c 右对齐 20 30 用空格左侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。
*
*/
/**
* 二:定义日志输出的风格样式,日志输出的风格主要有以下几种(通过官方文档我们会发现还有其他的):
* 1)org.apache.log4j.HTMLLayout(以HTML表格形式布局),
* 2)org.apache.log4j.PatternLayout(可以灵活地指定布局模式,这个在我的实际工作中是最常用的),
* 3)org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
* 4)org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
*/
/**
* 三:定义日志输出的目的地,日志输出的目的地主要中以下几种(通过官方文档我们会发现还有好多种类的):
* 1)org.apache.log4j.ConsoleAppender(控制台),
* 2)org.apache.log4j.FileAppender(文件),
* 3)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
* 4)org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件,这个在我的实际工作中也是最常用的),
* 5)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
*/
/**
* 日志输出的级别,主要有以下几种:
* 1)ALL 各级包括自定义级别。
* 2)TRACE 最详细的信息。一般这些信息只记录到日志文件中。自版本1.2.12[3]。
* 3)DEBUG 流经系统的详细信息。一般这些信息只记录到日志文件中。
* 4)INFO 令人感兴趣的运行时事件(启动/关闭)。一般这些信息将立即呈现在状态控制台上,因而要保守使用,并保持到最低限度。
* 5)WARN 使用已过时的API,API的滥用,潜在错误,其他不良的或意外的运行时的状况(但不一定是错误的)。一般这些信息将立即呈现在状态控制台上。
* 6)ERROR 其他运行时错误或意外情况。一般这些信息将立即呈现在状态控制台上。
* 7)FATAL 导致应用程序提前终止的严重错误。一般这些信息将立即呈现在状态控制台上。
* 8)OFF 最高级别,用于关闭日志记录。
*
* 日志的级别之间的大小关系如右所示:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
*/
}
[20:28:17]---[INFO]--- (log4j.PatternLayoutTest:28)--- info
[20:28:17]---[WARN]--- (log4j.PatternLayoutTest:29)--- warn
[20:28:17]---[ERROR]--- (log4j.PatternLayoutTest:30)--- error
[20:28:17]---[FATAL]--- (log4j.PatternLayoutTest:31)--- fatal

result

浅谈log4j-2的更多相关文章

  1. 浅谈Log4j和Log4j2的区别

    相信很多程序猿朋友对log4j都很熟悉,log4j可以说是陪伴了绝大多数的朋友开启的编程.我不知道log4j之前是用什么,至少在我的生涯中,是log4j带我开启的日志时代. log4j是Apache的 ...

  2. 浅谈Log4j

    1 什么是Log4j Log4j 是Apache为Java提供的日志管理工具.为了你快速理解Log4j的作用,我们用下面的代码说明Log4j的作用.我们为了调试程序,总是需要在程序使用System.o ...

  3. 浅谈一下SSI+Oracle框架的整合搭建

    浅谈一下SSI+Oracle框架的整合搭建 最近换了一家公司,公司几乎所有的项目都采用的是Struts2+Spring+Ibatis+Oracle的架构,上一个东家一般用的就是JSF+Spring,所 ...

  4. 谁还没遇上过NoClassDefFoundError咋地——浅谈字节码生成与热部署

    谁还没遇上过NoClassDefFoundError咋地--浅谈字节码生成与热部署 前言 在Java程序员的世界里,NoClassDefFoundError是一类相当令人厌恶的错误,因为这类错误通常非 ...

  5. 浅谈Spring中的Quartz配置

    浅谈Spring中的Quartz配置 2009-06-26 14:04 樊凯 博客园 字号:T | T Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在 ...

  6. Java线上问题排查神器Arthas快速上手与原理浅谈

    前言 当你兴冲冲地开始运行自己的Java项目时,你是否遇到过如下问题: 程序在稳定运行了,可是实现的功能点了没反应. 为了修复Bug而上线的新版本,上线后发现Bug依然在,却想不通哪里有问题? 想到可 ...

  7. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  8. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  9. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  10. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

随机推荐

  1. 安装Adobe Acrobat XI Pro

    从网上下载Adobe Acrobat XI Pro这款软件,下载后将其解压到我们的电脑上,然后找到setup.exe双击安装它,安装时选择“使用试用版本或订阅” 2 选择“自定义”   自定义安装组件 ...

  2. 动手动脑(Java)

    1.仔细阅读示例: EnumTest.java,运行它,分析运行结果? 你能得到什么结论?你掌握了枚举类型的基本用法了吗? 答: public class EnumTest { public stat ...

  3. day31 锁 队列 前面课程重点总结

    今日内容: 1.进程的其他方法 2.僵尸进程和孤儿进程(了解) 3.验证进程之间是空间隔离的 4.守护进程 5.进程锁 重点(又叫同步锁,互斥锁) 6.进程队列(重点)  Queue 7.生产者消费者 ...

  4. bluemix部署(一)简单测试,搭建样本flask程序。

    1.注册bluemix 这个略 2.登录bluemix 这个也略 3.创建组织 这个确实是和我们的思想不一样.要创建组织.为什么呢?国内的很多服务都没见过组织这个概念.貌似神符合一个中国人是条龙,十个 ...

  5. 枚举类返回Map键值对,绑定到下拉框

    有时候,页面的下拉框要显示键值对,但是不想从数据库取,此时我们可以写一个枚举类, Java后台代码 1.枚举类 import java.util.HashMap; import java.util.M ...

  6. gulp安装和使用

    1.全局安装gulp:sudo npm install -g gulp 2.代码根目录:npm install 3.gulp 开始编译(在项目根目录下创建一个名为 gulpfile.js 的文件) 注 ...

  7. 第三篇 功能实现(3) (Android学习笔记)

    第三篇 功能实现(3) ●发一个广播和启动一个隐式的Intent非常像,那么它们之间有什么区别呢? Implicit Intents (sent via startActivity( )) and B ...

  8. JS日期工具类(转)

    javascript Date format(js日期格式化) https://www.cnblogs.com/zhangpengshou/archive/2012/07/19/2599053.htm ...

  9. python 列表和元组

    一,基本的列表操作 1.该表列表,元素赋值 示例: >>>x = [1,1,1] >>>x[1] = 2 >>>x [1,2,1] 2.删除元素 ...

  10. 搭建VUE项目

    1.换源由于npm源服务器在国内访问速度较慢,所以一般需要更换源服务器地址npm config set registry https://registry.npm.taobao.org也可以安装cnp ...