Log4j简单学习笔记
log4j结构图:
结构图展现出了log4j的主结构。
logger:表示记录器,即数据来源;
appender:输出源,即输出方式(如:控制台、文件。。.)
layout:输出布局
Logger机滤器:
常用级别的划分:Debug,Info,Warn,Error,Fatal
这5个级别由低到高,如果配置的级别为"INFO"那么"Debug"级别的信息则不会显示"依次类推。
示例代码:
@Test
public void testLevel() {
log.debug("Debug message"); //调试信息
log.info("Info message"); //一般信息
log.warn("Warn message"); //警告信息
log.error("Error message"); //错误信息
log.fatal("Fatal message "); //致命错误信息
}
配置:
#debug 日志级别 stdOut 为输出源
log4j.rootLogger=debug, stdOut
#ConsoleAppender 表示控制台输出
log4j.appender.stdOut=org.apache.log4j.ConsoleAppender
#PatternLayout 默认输出的布局
log4j.appender.stdOut.layout=org.apache.log4j.PatternLayout
运行结果:
如果日志级别为:debug
Debug message
Info message
Warn message
Error message
Fatal message
如果日志级别为:info
Info message
Warn message
Error message
Fatal message
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Appender输出源:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
1.ConsoleAppender选项:
Threshold=DEBUG:指定日志消息的输出最低层次。(根据优先级别输出Debug以上的信息)
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
encoding=UTF-8:指定编码,默认为操作系统默认编码。
Target=System.err:默认情况下是:System.out,指定输出控制台。
2.FileAppender 选项:
Threshold=DEBUF:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
encoding=UTF-8:指定编码,默认为操作系统默认编码。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
3.DailyRollingFileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
encoding=UTF-8:指定编码,默认为操作系统默认编码。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
DatePattern=''.''yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
1)''.''yyyy-MM: 每月
2)''.''yyyy-ww: 每周
3)''.''yyyy-MM-dd: 每天
4)''.''yyyy-MM-dd-a: 每天两次
5)''.''yyyy-MM-dd-HH: 每小时
6)''.''yyyy-MM-dd-HH-mm: 每分钟
4.RollingFileAppender 选项
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
5.WriterAppender选项:
Threshold=DEBUG:指定日志消息的输出最低层次。(根据优先级别输出Debug以上的信息)
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
encoding=UTF-8:指定编码,默认为操作系统默认编码。
Layout输出内容格式:
org.apache.log4j.PatternLayout(可以灵活地指定布局模式,自定义布局),
org.apache.log4j.HTMLLayout(以HTML表格形式布局,纯HTML文本),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)。
PatternLayout是可自定义格式的,其他三个为系统提供的固定格式。
自定义配置:
log4j.appender.stdOut.layout=org.apache.log4j.PatternLayout
log4j.appender.stdOut.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
关于ConversionPattern参数含义的解释:
1.每一部分都以%开头,以空格分隔
2."-"表示左对齐,默认为右对齐
3.%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},
4.%r: 输出自应用启动到输出该log信息耗费的毫秒数
5.%t: 输出产生该日志事件的线程名
6.%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
7.%%: 输出一个"%"字符
8.%c: 输出日志信息所属的类目,通常就是所在类的全名
9.%F: 输出日志消息产生时所在的文件名称
10.%L: 输出代码中的行号
11.%m: 输出代码中指定的消息,产生的日志具体信息
12.%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。
13.%n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行
14.在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
配置:log4j.appender.stdOut.layout.ConversionPattern=%20r %d %m%n
" 0 2013-03-05 10:57:41,546 Debug message"
配置:log4j.appender.stdOut.layout.ConversionPattern=%-20r %d %m%n
"0 2013-03-05 10:58:10,875 Debug message"
15.%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉,如果是负号则相反。
原文链接:Log4j简单学习笔记
Log4j简单学习笔记的更多相关文章
- Linux——帮助命令简单学习笔记
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...
- OI数学 简单学习笔记
基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...
- <<C++标准程序库>>中的STL简单学习笔记
0. 内容为个人学习笔记, 仅供参考, 如有错漏, 欢迎指正! 1. STL中的所有组件都是由模板构成的, 所以其元素可以是任意型别的. 组件有: - 容器: 管理某类对象的集合. 不同的容器有各自的 ...
- Mongoose简单学习笔记
1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 Entity : 由Mo ...
- Linux——bash应用技巧简单学习笔记
本人是看的lamp兄弟连的视频,学习的知识做一下简单,如有错误尽情拍砖. 命令补齐 命令补齐允许用户输入文件名起始的若干个字 母后,按<Tab>键补齐文件名. 命令历史 命令历史允许用户浏 ...
- Oracle简单学习笔记
创建用户 CREATE USER username identified by password;//这是最简单的用户创建SQL语句. CREATE USER username identified ...
- Linux——软件包简单学习笔记
Linux中的是那种软件包: (这里学习是基于redHat的Cent-OS) 1: 二进制软件包管理(RPM.YUM) 2:源代码包安装 3: 脚本安装(Shell或Java脚本) 一: 二进制软件 ...
- Linux——vim/vi 简单学习笔记
Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立.编辑.显示文本文件.Vim/Vi 没有菜单,只有命令. 早前也用过Vim变过C++/C的代码, ...
- OI动态规划&&优化 简单学习笔记
持续更新!! DP的难点主要分为两类,一类以状态设计为难点,一类以转移的优化为难点. DP的类型 序列DP [例题]BZOJ2298 problem a 数位DP 常用来统计或者查找一个区间满足条件的 ...
随机推荐
- AbstractFactoryPattern(抽象工厂)
/** * 抽象工厂模式 * 分为四部分 * 1.产品接口 * 2.产品实例 * 3.工厂接口(生产同一个产品的不同等级,这里是主要区别) * 4.工厂实例 * 工厂类最好用单例模式,但在这里主要是说 ...
- Lind.DDD.ExpressionExtensions动态构建表达式树,实现对数据集的权限控制
回到目录 Lind.DDD框架里提出了对数据集的控制,某些权限的用户为某些表添加某些数据集的权限,具体实现是在一张表中存储用户ID,表名,检索字段,检索值和检索操作符,然后用户登陆后,通过自己权限来构 ...
- 软件公司为何要放弃MongoDB?
本文转至:http://database.51cto.com/art/201503/469510_all.htm(只作转载, 不代表本站和博主同意文中观点或证实文中信息) Olery成立于2010年, ...
- Atitit. null错误的设计 使用Optional来处理null
Atitit. null错误的设计 使用Optional来处理null 然后,我们再看看null还会引入什么问题. 看看下面这个代码: String address = person.getCount ...
- C#读取ini文件的方法
最近项目用到ini文件,读取ini文件,方法如下: using System; using System.Collections.Generic; using System.Linq; using S ...
- UITextFeild的用法
一. 修改占位字符串的 颜色: =======方法一 ====================================== #import "ViewController.h&quo ...
- 记CentOS-7-x86_64-DVD-1503与Windows7单硬盘双系统的安装
我最初的设想是:Win引导CentOS,最后却变成了CentOS引导Win了.算是‘弄拙成巧’了吧. 因为我打算用U盘刻录镜像直接从U盘启动,所以不需要网上一些教程里面的繁琐的win下引导CentOS ...
- 使用putty与SSHSecureShellClient登录远程服务器完成与本地Git项目的同步
使用软件远程登录管理服务器 今天给大家介绍两款远程登录管理服务器的软件(Putty和SSHSecureShellClient),这两款也是我在工作中经常的软件. 使用 PuTTY 远程登录管理服务器 ...
- 初探PHP多进程
h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...
- C++基础——模拟事务 (1)COMMAND模式
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...