专栏首页TheOneGIS空间站Log4J使用快速入门

Log4J使用快速入门

基本概念

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

Log4j中有三个比较重要的的类:

Logger:日志记录器,供程序输出日志信息。

Appender:日志目的地,把格式化好的日志信息输出到到指定地方。

Layout:日志格式化器,以指定格式输入日志信息。

Log4j提供的appender有以下几种:

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

org.apache.log4j.FileAppender(文件),

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

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

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

Log4j提供的layout有以下几种:

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

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

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

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

使用方法

一:添加log4j jar包

二:配置log4j

Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(一般命名为log4j.properties)。

下面是一个示例文件,定义了输出信息基本为Debug,然后分别定义了三个输出目的地R为控制台输出,D为log.log的日志文件,E为error.log的日志文件输出错误信息:

log4j.rootLogger = debug, R, D, E

log4j.appender.R =org.apache.log4j.ConsoleAppender
log4j.appender.R.Target = System.out
log4j.appender.R.layout =org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=  [%d{yy/MM/dd HH:mm:ss:SSS}][%C-%M]%m%n

log4j.appender.D =org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout =org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern =[%d{HH:mm:ss:SSS}][%C-%M] -%m%n

 
log4j.appender.E =org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout =org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern =[%d{HH:mm:ss:SSS}][%C-%M] -%m%n

三:在程序中使用log4j

1.得到记录器

 使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。一般使用如下语句:

    static Logger logger = Logger.getLogger ( Test.class );

2.读取配置文件

 当获得了日志记录器之后,第二步将配置Log4j环境,其语法为:

    BasicConfigurator.configure(): 自动快速地使用缺省Log4j环境。

    PropertyConfigurator.configure(String configFilename) :读取使用Java的特性文件编写的配置文件。

 DOMConfigurator.configure(String filename) :读取XML形式的配置文件。

3.插入记录信息(格式化日志信息)

 当上两个必要步骤执行完毕,您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:

 Logger.debug(Object message) ;

 Logger.info(Object message) ;

 Logger.warn(Object message) ;

 Logger.error(Object message) ;

下面是一个实例:

log4j配置文件使用上面给出的配置文件,配置文件放置在src文件夹下,程序如下:

package cn.tzy.log4j;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class LogDemo {

	public static void main(String[] args) {
		Logger logger= Logger.getLogger(LogDemo.class);
		PropertyConfigurator.configure(LogDemo.class.getResource("/log4j.properties"));
		logger.info("This is a test!");
	}
}

运行结果如下:

[14/11/20 21:55:47:759][cn.tzy.log4j.LogDemo-main] This is a test!

此外还会在工程目录下产生一个logs文件夹,可以查看里面的log文件内容!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何成为一名顶级的C/C++程序员?

    从事c/c++开发已经差不多十几年了,C语言相对使用起来简单一些,做的项目多了经验积累多了,整体觉得更加可控一点,但是c++越做越觉得细节越多,也面试过几百人,...

    程序员互动联盟
  • 学编程能做什么工作?这5种高大上的工作你喜欢么!

    学泥瓦工可以码砖头、学裁缝能做衣服,这个都有明确的方向。那我们学编程能从事那些工作呢?码农?岂止是码农!而且大家太小看码农了,码农也分了很多种,一起来看看吧!

    老九君
  • 【剑指offer】33.二叉树镜像

    可以看到首先对根节点的左右进行翻转。 再递归的对左子树,以及右子树进行翻转。 之前讲过,链表的题目分为四个步骤:连过来、指针走、断后路、调状态。 二涉及到树的...

    Leetcode名企之路
  • 聊聊flink的FsStateBackend

    flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/StateBacken...

    codecraft
  • Pandas-层次化索引

    层次化索引是pandas的一项重要功能,它能使你在一个轴上有多个索引级别,也就是说,它能使你以低维度形式处理高维度数据,比如下面的代码:

    用户1332428
  • 聊聊flink的MemoryBackendCheckpointStorage

    本文主要研究一下flink的MemoryBackendCheckpointStorage

    codecraft
  • Golang学习笔记之方法(method)

    一个方法只是一个函数,它有一个特殊的接收者(receiver)类型,该接收者放在 func 关键字和函数名之间。接收者可以是结构体类型或非结构体类型。可以在方法...

    李海彬
  • leetcode 14 | 最长公共前缀

    分析:找到数组中长度最小的元素min(从后面更快的例子来看,这个好像不需要~),然后从min的第一字符开始,去查找剩余元素是否在相同位置是同一个字符。

    ACM算法日常
  • 一些常用的算法技巧总结

    今天和大家讲讲,在做算法题时常用的一些技巧。对于平时没用过这些技巧的人,或许你可以考虑试着去看看在实践中能否用的上这些技巧来优化问题的解。

    Java3y
  • 聊聊flink的MemCheckpointStreamFactory

    flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/CheckpointS...

    codecraft

扫码关注云+社区

领取腾讯云代金券