一 Log4J有三个主要的组件

1.1 Loggers(记录类型)

Log4j划分了5个级别:DEBUG,INFO,WARN,ERROR,FATAL。 这5个level是有优先级顺序的,DEBUG<INFO<WARN<ERROR<FATAL。并且输出的日志不能小于你
指定的日志级别。比如你指定了WARN级别,可以输出WARN,ERROR和FATAL的日志,但是不会输出DEBUG和INFO级别的日志

1.2 Appenders(输出)

有了日志,那么日志应该输出到哪儿,控制台?文件? 那么Appenders就是来干这个事情的。Appenders有一下集中输出类型:
控制台:org.apache.log4j.ConsoleAppender
文件:org.apache.log4j.FileAppender
每天产生一个日志文件:org.apache.log4j.DailyRollingFileAppender
文件大小超过制定阀值产生一个新的文件:org.apache.log4j.RollingFileAppender
将日志信息以流的形式发送到任何地方:org.apache.log4j.WriterAppender

1.3 Layouts(布局)

Log4J提供了可以自己控制输出格式,Layouts就可以干这个事情,Layouts提供四种日志输出格式:
HTML表格形式:org.apache.log4j.HTMLLayout
灵活地指定布局模式:org.apache.log4j.PatternLayout
包含INFO类型的布局模式:org.apache.log4j.SimpleLayout
包含线程,日志类型的布局模式:org.apache.log4j.TTCCLayout

二 配置Log4J

Log4j支持两种配置文件格式,一种是XML格式的文件,一种是properties属性文件。下面以properties属性文件为例介绍log4j.properties的配置。

2.1 配置Root Logger

log4j.rootLogger = level, appenders, appenders, ...

level :设定日志记录的最低级别,可设的值有OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别,Log4j建议只使用中间四个级别(ERROR、WARN、INFO、DEBUG)。通过在这里设定级别,您可以控制应用程序中相应级别的日志信息的开关,比如在这里设定了INFO级别,则应用程序中所有DEBUG级别的日志信息将不会被打印出来。

appenders:就是指定日志信息要输出到哪里。可以同时指定多个输出目的地,用逗号隔开

示例:log4j.rootLogger = DEBUG,stdout,D,R

2.2 配置日志信息输出目的地(appender)

2.2.1 ConsoleAppender

log4j.appender.${自定义appender名字}:指定Appender类型
log4j.appender.${自定义appender名字}.Threshold = 指定日志信息的最低输出级别,默认为DEBUG 
log4j.appender.${自定义appender名字}.ImmediateFlush = 消息都会被立即输出(true|false)
log4j.appender.${自定义appender名字}.Target = 输出类型(System.out|System.err)

示例:
log4j.appender.STDOUT = org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.Threshold = INFO
log4j.appender.STDOUT.ImmediateFlush = true
log4j.appender.STDOUT.Target = System.out

2.2.2 FileAppender

log4j.appender.${自定义appender名字} = 指定Appender类型
log4j.appender.${自定义appender名字}.Threshold = 指定日志信息的最低输出级别,默认为DEBUG 
log4j.appender.${自定义appender名字}.ImmediateFlush = 消息都会被立即输出(true|false)
log4j.appender.${自定义appender名字}.Append = 添加还是覆盖(true|false)
log4j.appender.${自定义appender名字}.File = 日志文件路径

示例:
log4j.appender.F=org.apache.log4j.FileAppender
log4j.appender.F.Threshold = DEBUG 
log4j.appender.F.ImmediateFlush = true
log4j.appender.F.Append = true
log4j.appender.F.File = /opt/app/logs/server.out

2.2.3 DailyRollingFileAppender

log4j.appender.${自定义appender名字} = 指定Appender类型
log4j.appender.${自定义appender名字}.Threshold = 指定日志信息的最低输出级别,默认为DEBUG 
log4j.appender.${自定义appender名字}.ImmediateFlush = 消息都会被立即输出(true|false)
log4j.appender.${自定义appender名字}.Append = 添加还是覆盖(true|false)
log4j.appender.${自定义appender名字}.File = 日志文件路径
log4j.appender.${自定义appender名字}.DatePattern = 指定日志滚动频率
常用的频率选项:
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:每分钟
示例:
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.ImmediateFlush = true
log4j.appender.D.Append = true
log4j.appender.D.File = /opt/app/logs/server.out
log4j.appender.D.DatePattern = '.'yyyy-MM-dd

2.2.4 RollingFileAppender

log4j.appender.${自定义appender名字} = 指定Appender类型
log4j.appender.${自定义appender名字}.Threshold = 指定日志信息的最低输出级别,默认为DEBUG 
log4j.appender.${自定义appender名字}.ImmediateFlush = 消息都会被立即输出(true|false)
log4j.appender.${自定义appender名字}.Append = 添加还是覆盖(true|false)
log4j.appender.${自定义appender名字}.File = 日志文件路径
log4j.appender.${自定义appender名字}.MaxFileSize = 指定超过阀值数,然后滚动日志文件,单位可以是KB,MB,GB
log4j.appender.${自定义appender名字}.MaxBackupIndex = 备份数(可选参数)

示例:
log4j.appender.R = org.apache.log4j.RollingFileAppender
log4j.appender.R = org.apache.log4j.RollingFileAppender
log4j.appender.R.Threshold = DEBUG 
log4j.appender.R.ImmediateFlush = true
log4j.appender.R.Append = true
log4j.appender.R.File = /opt/app/logs/server.out
log4j.appender.R.MaxFileSize = 10MB

2.2.5 WriterAppender

是前面几个Appender的父类,如果我们要自定义Appedner,也可以继承WriterAppender

2.3 配置Layout

log4j.appender.${appenders}.layout= 类名

2.3.1 HTMLLayout

log4j.appender.stdout.layout.Title=设置title
log4j.appender.stdout.layout.LocationInfo=是否设置locationInfo(true|false)

2.3.2 PatternLayout

我们可以通过PatternLayout灵活地指定布局模式,ConversionPattern属性指定怎样格式化输出日志
格式化参数如下:
%p: 输出日志信息的优先级
%d: 输出日志时间点的日期或时间,指定日期格式%d{yyyy-MM-dd HH:mm:ss,SSS}
%r: 输出自应用程序启动到输出该log信息耗费的毫秒数
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数
%c: 输出日志信息所属的类全名
%M: 输出产生日志信息的方法名
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的具体日志信息
%n: 输出一个回车换行符
%-n参数:n表示数字,意思就是参数长度为n,如果参数长度不够,左对齐,然后剩余的位数则用空格填满,比如%-5p,如果是DEBUG的话就是DEBUG,长度为5 如果是info的话长度为4,剩余的一位用空格填满。

示例:

log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

2.3.3 SimpleLayout

包含日志信息的级别和信息字符串

2.3.4 TTCCLayout

包含日志产生的线程、类别等等信息

Log4J 1.x 配置详解相关推荐

  1. java log4j基本配置及日志级别配置详解,java基础面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  2. 转 Log4j.properties配置详解

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  3. Log4j.properties 配置详解

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  4. stone 的 log4j配置详解

    stone 的 log4j配置详解 Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过 ...

  5. Log4j介绍,log4j.properties配置详解

    http://www.cnblogs.com/simle/archive/2011/09/29/2195341.html本文主要解释log4j的配置文件各个配置项的含义,内容是从网上转载的 1.Log ...

  6. log4j 打印线程号配置_Log4J日志整合及配置详解

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  7. log4j 配置详解(超详细)

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  8. Log4j日志配置详解(Log4j2)

    Log4j日志配置详解 一.Log4j升级Log4j2 首先来说一下日志升级,log4j配置的变化,配置文件从log4j.xml变成了log4j2.xml,配置文件的内容也有很大不同,log file ...

  9. log4j加载配置方式和配置详解

    log4j配置详解 log4j的配置文件有两种格式分别是xml和properties.本文只讲解properties格式.比较properties简洁易懂. log4j加载配置文件方式 大家在刚接触l ...

最新文章

  1. Python List append()方法
  2. 解决getOutputStream() has already been called for this response[java io流]
  3. 万字长文详解如何用Python玩转OpenGL | CSDN 博文精选
  4. C语言成长学习题(十六)
  5. CentOS 7 安装.NET Core 2.0
  6. Windows XP和Windows 7双系统安装和启动菜单修复
  7. Java-数据结构与算法-逢3减1
  8. swing皮肤包 substance
  9. 从fragment启动另一个fragment
  10. 从零开始学习ASP.NET MVC1.O (第一章)
  11. 牛的障碍Cow Steeplechase
  12. 用git push代码到远程仓库的时候出现错误
  13. python消费kafka逻辑处理导致cpu升高_用Apache Kafka 和 Python 搭建分布式流处理系统[翻译]...
  14. 印度成不了下一个世界工厂,越南才可能
  15. 网吧IC卡收费系统常见问题与解决(转)
  16. 网络爬虫基础-scrapy框架
  17. Steam游戏存档位置大全
  18. 匿名邮件实现的方式及原理
  19. Oracle 11g 服务器结构
  20. gimp 架构_超级图像处理软件 gimp 2.99.2中文免费版

热门文章

  1. linux系统上手工建库步骤,Linux下Oracle手工建库过程
  2. 面试被问mysql扩展性设计相关的点,你知道该如何回答吗
  3. HTTP协议及其POST与GET操作差异 C#中如何使用POST、GET等
  4. 清华计算机系山东分数,清华大学山东录取分数线|2021清华大学山东分数线|2021年清华大学山东高考分数线|2021年清华大学山东招生计划录取人数...
  5. axure 图片切换图片的交互_Axure 交互案例:放大缩小图片
  6. 关于人行acs对账不及时_记工记账新方法,不用本子不用笔,一个手机全搞定
  7. django2.x/3.x 前端页面在debug模式中找不到动态文件static
  8. 解决Dataframe删除操作时警告:SettingWithCopyWarning:A value is trying to be set on a copy of a slice from a...
  9. 使用U盘在Windows与Mac上传输数据
  10. 华为p20支持手机云闪付吗_余承东:明年华为智能手机全面支持鸿蒙系统