一、基础入门

1.1 下载安装

下载相应的log4j-1.2.15.jar(也可以下载其他的版本)提供一个下载jar包的网站(http://search.maven.org/)

新建一个log4j.properties文件:

#配置根Logger

log4j.rootLogger=info, RF #info代表的是日志输出的级别

log4j.appender.RF=org.apache.log4j.RollingFileAppender #文件大小到达指#定尺寸的时候产生

#一个新的文件

log4j.appender.RF.File=example.log

log4j.appender.RF.MaxFileSize=100KB

log4j.appender.RF.MaxBackupIndex=1log4j.appender.RF.layout=org.apache.log4j.PatternLayout

log4j.appender.RF.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c] - %m%n

#为某一个包下添加log日志

log4j.logger.com.lxy.io.file=debug, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.

log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c] - %m%n

log4j.additivity.com.lxy.io.file=true # 如果为FALSE,上面指定的根root设置的输出将会被禁用

1.2 代码示例

项目结构如下:

如果log4j.properties放在项目的根目录下,加载的时候:

PropertyConfigurator.configure("lo4j.properties");

如果放在src目录下,则加载带上class输出路径的文件夹,例如:

PropertyConfigurator.configure("bin/lo4j.properties");

设置日志内容:

public classLogTest{static Logger log=Logger.getLogger(FileTest.class);public static voidmain(String[] args){

PropertyConfigurator.configure("lo4j.properties");

log.debug("===========debug信息===============");

log.info("===========info信息===============");

log.error("===========error信息===============");

}

}

二、Log4j详解

Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显 示内容。

2.1、定义配置文件

Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)。下面我们介绍使用Java特性文件做为配置文件的方法:

2.1.1 配置根Logger

其语法为:

log4j.rootLogger = [ level ] , appenderName, appenderName, …

其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。 appenderName就是指B日志信息输出到哪个地方。您可以同时指定多个输出目的地。

2.1.2 配置日志信息输出目的地

输出目的地Appender,其语法为:

log4j.appender.appenderName = fully.qualified.name.of.appender.class

log4j.appender.appenderName.option1 = value1

log4j.appender.appenderName.option = valueN

其中,Log4j提供的appender有以下几种:

org.apache.log4j.ConsoleAppender(控制台)

org.apache.log4j.FileAppender(文件)

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

2.1.3 配置日志信息的格式(布局)

其语法为:

log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class

log4j.appender.appenderName.layout.option1 = value1

log4j.appender.appenderName.layout.option = valueN

其中,Log4j提供的layout有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局)

org.apache.log4j.PatternLayout(可以灵活地指定布局模式)

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:

%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,

%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如: %d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-18 22:10:28,921

%r: 输出自应用启动到输出该log信息耗费的毫秒数

%c: 输出日志信息所属的类目,通常就是所在类的全名

%t: 输出产生该日志事件的线程名

%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。

%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。

%%: 输出一个"%"字符

%F: 输出日志消息产生时所在的文件名称

%L: 输出代码中的行号

%m: 输出代码中指定的消息,产生的日志具体信息

%n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行

2.1.5 注意事项

ClassLoader.getSystemResource("")加载的文件是bin所在的路径下面

PropertyConfigurator是log4j中的一个类,用来初始化log4j的配置

ClassLoader类的getResource( " ")方法能够得到当前classpath的绝对路径,这是所有Java程序都拥有的能力,具有最大的适应性!

java项目log4j_java项目测试log4j相关推荐

  1. java jar log4j_java项目打包成可执行jar用log4j将日志写在jar所在目录操作

    开发一个demo时想将日志输出到最终打包的jar所在目录,从网上学习实验整理之后的配置如下, log4j.properties log4j.rootLogger = INFO,console,logF ...

  2. java 封装log4j_Java项目 切片实现log4j的终极封装

    通用型(再也不用每个类new一个logger了) public classLog {private static Map loggerMap = new HashMap();public static ...

  3. Java Web项目性能测试 - JMeter测试网站吞吐量、反应时间百分比、流量

    Java Web项目性能测试 - JMeter测试网站吞吐量.反应时间百分比.流量 为了衡量.调整.完成Java Web项目的性能指标,满足客户.用户对性能的要求,保证项目上线后能正常运行,以及了解项 ...

  4. ssm毕设项目高校体质测试管理系统dp69w(java+VUE+Mybatis+Maven+Mysql+sprnig)

    ssm毕设项目高校体质测试管理系统dp69w(java+VUE+Mybatis+Maven+Mysql+sprnig) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + ...

  5. Java分布式二手房项目尚好房第三课 利用Dubbo拆分微服务

    Java分布式二手房项目尚好房:Apache Dubbo介绍 一.分布式RPC框架Apache Dubbo 1.软件架构的演进过程 软件架构的发展经历了由单体架构.垂直架构.SOA架构到微服务架构的演 ...

  6. Java springmvc web项目,基于maven的hello world入门级项目使用IntelliJ IDEA 2017版本

    IntelliJ IDEA使用教程 (总目录篇) 使用这个IntelliJ IDEA创建一个简单的Java web maven项目,我在前面的文章里面已经示范过了. 地址:IntelliJ IDEA ...

  7. Java web小项目_个人主页(1)—— 云环境搭建与项目部署

    摘自:Java web小项目_个人主页(1)-- 云环境搭建与项目部署 作者:丶PURSUING 发布时间: 2021-03-26 23:59:39 网址:https://blog.csdn.net/ ...

  8. 项目不能使用fn标签_无服务器,Java和FN项目的第一步

    项目不能使用fn标签 无服务器不是什么新事物,但是可以说,仍然有很多关于它的炒作,以及它将如何改变一切,以及未来将如何成为无服务器. 除了云提供商提供的无服务器/功能之外,还有越来越多的无服务器项目正 ...

  9. java拦截器项目应用_使用拦截器分析Java EE应用程序的性能下降/提高

    java拦截器项目应用 在开发具有某些性能要求的Java EE应用程序时,必须在每个发行版之前验证是否满足这些要求. 您可能会想到,哈德森的一项工作每天晚上在某些特定的硬件平台上执行一系列测试测量. ...

最新文章

  1. android调服务不更新,android – OnUpdate()不调用小部件服务
  2. 【聊透SpringMVC】自学java和三大框架要多久
  3. adv147(蓝桥杯) 学霸的迷宫 bfs
  4. Windows下32位汇编语言读取键盘输入单字符
  5. 从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)
  6. date oracle 显示毫秒_Oracle date timestamp 毫秒 - 时间函数总结
  7. 人工神经网络——笔记摘抄2
  8. UI设计灵感|仪表盘界面如何设计?优质案例给你帮助
  9. 西南交通大学计算机组成原理,西南交通大学计算机组成原理课程设计报告
  10. 【C# RDLC】 RDLC报表的部署问题
  11. 输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)
  12. 最终,我决定将代码迁出x86架构!
  13. protel99se学习笔记
  14. 机器学习实战:支持向量机回归预测财政收入
  15. 手风琴几排簧好_四排簧手风琴适合初学者么
  16. 唱吧录制的歌曲转换成mp3_录制开放文化歌曲
  17. .强力卸载或者删除文件
  18. office中导入mathtype出现MathPage.wll未找到错误
  19. 网传程序员加班猝死,当事人:我还在写代码
  20. mac安装golang,编写第一个go程序

热门文章

  1. 乐观锁和悲观锁_什么是悲观锁和乐观锁?
  2. ip网络基础知识及原理_关于网络测试的5个命令
  3. python连接mysql的一些基础知识+安装Navicat可视化数据库+flask_sqlalchemy写数据库
  4. 大数据常见问题:数据倾斜
  5. Python 大规模异步新闻爬虫、google翻译、百度翻译、有道翻译、百度指数
  6. Node.js 教程
  7. java xml 序列化_java-序列化为XML时忽略父类
  8. java单例方法_Java单例模式
  9. php 空格用什么表示方法,php用空格代替标点符号
  10. 外设驱动库开发笔记24:FM24xxx系列FRAM存储器驱动