文档章节

log4j入门

菩提_
 菩提_
发布于 2016/01/28 15:41
字数 1670
阅读 56
收藏 3
点赞 2
评论 0

1、在工程中导入log4j的jar包

    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

2、新建测试类:

package zieckey.study.log4j;

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

public class Log4jTest {

    // 获取日志记录器
    static Logger logger = Logger.getLogger(Log4jTest.class.getName());

    Log4jTest() {
        // 读取使用Java属性文件编写的配置文件
        PropertyConfigurator.configure("log4j.properties");
    }

    public static void main(String[] args) {

        logger.debug("Log4jTest-->>debug");
        logger.info("Log4jTest-->>info");
        logger.warn("Log4jTest-->>warn");
        logger.error("Log4jTest-->>error");
    }
}

3、新建配置文件:log4j.properties

log4j.rootLogger=DEBUG, A1, A2

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ss} %c %m%n

log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.File=Log4jTest.log
log4j.appender.A2.MaxFileSize=20KB
log4j.appender.A2.MaxBackupIndex=1
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ss} %c %m%n

该配置文件配置了log输出的目的地:console和file

Log4j日志管理系统简单使用说明

        Log4j有三个主要的组件:Loggers,Appenders和Layouts,这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。 综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。下面对三个组件分别进行说明:

1、 Loggers

        Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,明白这一点很重要,这里Log4j有一个规则:假设Loggers级别为P,如果在Loggers中发生了一个级别Q比P高,则可以启动,否 则屏蔽掉。
    Java程序举例来说:
    //建立Logger的一个实例,命名为“com.foo”

    Logger  logger = Logger.getLogger("com.foo");

    //设置logger的级别。通常不在程序中设置logger的级别。一般在配置文件中设置。

    logger.setLevel(Level.INFO);

    Logger barlogger = Logger.getLogger("com.foo.Bar");

    //下面这个请求可用,因为WARN >= INFO

    logger.warn("Low fuel level.");

    //下面这个请求不可用,因为DEBUG < INFO

    logger.debug("Starting search for nearest gas station.");

    //命名为“com.foo.bar”的实例barlogger会继承实例“com.foo”的级别。因此,下面这个请求可用,因为INFO >= INFO

    barlogger.info("Located nearest gas station.");

    //下面这个请求不可用,因为DEBUG < INFO

    barlogger.debug("Exiting gas station search");
    这里“是否可用”的意思是能否输出Logger信息。
    在对Logger实例进行命名时,没有限制,可以取任意自己感兴趣的名字。一般情况下建议以类的所在位置来命名Logger实例,这是目前来讲比较有效的Logger命名方式。这样可以使得每个类建立自己的日志信息,便于管理。比如:
static Logger logger = Logger.getLogger(ClientWithLog4j.class.getName());

2、 Appenders

        禁用与使用日志请求只是Log4j其中的一个小小的地方,Log4j日志系统允许把日志输出到不同的地方,如控制台(Console)、文件(Files)、根据天数或者文件大小产生新的文件、以流的形式发送到其它地方等等。
        其语法表示为:
    org.apache.log4j.ConsoleAppender(控制台),
    org.apache.log4j.FileAppender(文件),
    org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
    org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
    org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

配置时使用方式为:

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

    log4j.appender.appenderName.option1 = value1

    …

    log4j.appender.appenderName.option = valueN

这样就为日志的输出提供了相当大的便利。

3、 Layouts

        有时用户希望根据自己的喜好格式化自己的日志输出。Log4j可以在Appenders的后面附加Layouts来完成这个功能。Layouts提供了四 种日志输出样式,如根据HTML样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式等等。

    其语法表示为:
    org.apache.log4j.HTMLLayout(以HTML表格形式布局),
    org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
    org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
    org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
    配置时使用方式为:
     log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
     log4j.appender.appenderName.layout.option1 = value1
     …
     log4j.appender.appenderName.layout.option = valueN

以上是从原理方面说明Log4j的使用方法,在具体Java编程使用Log4j可以参照以下示例:

1、 建立Logger实例:
    语法表示:public static Logger getLogger( String name)
    实际使用:static Logger logger = Logger.getLogger   (ServerWithLog4j.class.getName ()) ;
2、 读取配置文件:
    获得了Logger的实例之后,接下来将配置Log4j使用环境:
    语法表示:
    BasicConfigurator.configure():自动快速地使用缺省Log4j环境。
    PropertyConfigurator.configure(String configFilename):读取使用Java的特性文件编写的配置文件。
    DOMConfigurator.configure(String filename):读取XML形式的配置文件。
    实际使用:PropertyConfigurator.configure("ServerWithLog4j.properties");
3、 插入日志信息
    完成了以上连个步骤以后,下面就可以按日志的不同级别插入到你要记录日志的任何地方了。
    语法表示:
    Logger.debug(Object message);
    Logger.info(Object message);
    Logger.warn(Object message);
    Logger.error(Object message);
    实际使用:logger.info("ServerSocket before accept: " + server);
 
    在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对Logger、Appender及Layout的分别使用,具体如下:
1、 配置根Logger,其语法为:
    log4j.rootLogger = [ level ] , appenderName, appenderName, …
这里level指Logger的优先级,appenderName是日志信息的输出地,可以同时指定多个输出地。如:log4j.rootLogger= INFO,A1,A2
2、 配置日志信息输出目的地,其语法为:
    log4j.appender.appenderName = fully.qualified.name.of.appender.class
    可以指定上面所述五个目的地中的一个。
3、 配置日志信息的格式,其语法为:
    log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
    这里上面三个步骤是对前面Log4j组件说明的一个简化;下面给出一个具体配置例子,在程序中可以参照执行:
    log4j.rootLogger=INFO,A1
    log4j.appender.A1=org.apache.log4j.ConsoleAppender
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n

    这里需要说明的就是日志信息格式中几个符号所代表的含义:

    -X号: X信息输出时左对齐;
    %p: 日志信息级别
    %d{}: 日志信息产生时间
    %c: 日志信息所在地(类名)
    %l: 日志信息所在地(类名),加行数
    %m: 产生的日志具体信息
    %n: 输出日志信息换行

根据上面的日志格式,某一个程序的输出结果如下:
0    INFO  2003-06-13 13:23:46968 ClientWithLog4j Client socket: Socket[addr=localhost/127.0.0.1,port=8002,localport=2014]
16   DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server says: 'Java server with log4j, Fri Jun 13 13:23:46 CST 2003'
16   DEBUG 2003-06-13 13:23:46984 ClientWithLog4j GOOD
16   DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server responds: 'Command 'HELLO' not understood.'
16   DEBUG 2003-06-13 13:23:46984 ClientWithLog4j HELP
16   DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server responds: 'Vocabulary: HELP QUIT'

16   DEBUG 2003-06-13 13:23:46984 ClientWithLog4j QUIT



log4j.rootLogger=DEBUG, A1, A2
 
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.Append=true
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%p] %m%n

log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.File=D:/test/Log4jTest.log
log4j.appender.A2.Append=true
log4j.appender.A2.Encoding=UTF-8
log4j.appender.A2.DatePattern = '.'yyyy-MM-dd
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%p] %m%n

log4j.logger.org.springframework=OFF
log4j.logger.org.apache=OFF



本文转载自:http://blog.chinaunix.net/uid-25434387-id-1992044.html

共有 人打赏支持
菩提_
粉丝 2
博文 113
码字总数 24338
作品 0
朝阳
程序员
log4j+commons-logging结合使用

1.参考文献: Apache Commons-logging使用实例 Apache Log4j配置说明 log4j.properties配置详解 commons-logging结合Log4j的问题 Properties文件相关 Apache通用日志工具commons-logging和L...

飓风2000
2014/05/28
0
0
commons-logging 和 log4j 之间的关系

我们在做项目时,日志的记录是必不可少的一项任务,而我们通常是使用 apache 的 log4j 日志管理工具。然而,在项目中,我们经常会看到两个 jar 包:commons-logging.jar 和 log4j.rar。为什么...

飓风2000
2014/05/26
0
4
Java Log4J 使用教程(java日志)

简介 2. 安装 3. log4j基本概念 3.1. Logger 3.2. Appender 3.2.1. 使用ConsoleAppender 3.2.2. 使用FileAppender 3.2.3. 使用WriterAppender 3.3. Layout 3.4. 基本示例 3.4.1. SimpleLayou......

lgxheartlikesea
2014/02/13
0
0
jboss log4j冲突分析与解决

Log4j作为日志组件被大多数的系统所使用,Jboss也不例外的采用了Log4j作为它的日志输出组件。 但在使用JBoss时,很多人经常碰到一些冲突,这些冲如自己配置的log4j文件无效,系统抛org.jboss...

职通网
2012/07/16
0
0
log4j:WARN Please initialize the log4j system p...

log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext). log4j:WARN Please initialize the log4j system properly. S......

进击的方便面
2013/09/26
0
0
Java --log4j.properties详解

已经完结的工程中用到了log4j,抽时间写一篇日志记录下。 //参考文章如下 http://it.oyksoft.com/log4j/ 一、log4j是什么?有什么用? Log4j是一个日志记录工具,基于java语言的。我们可以将...

求是科技
2015/11/03
0
0
java instrment手工加载log4j配置文件

使用java instrument做一个代码监控的工具,监控日志想用log4j记录,遇到了点问题。 启动应用的命令行加入-javaagent参数,可以在加载类时对其字节码做修改,常用工具有asm、javasssit。 我希...

yingtju
06/26
0
0
java 日志框架——log4j

Log4J是JAVA下的一款日志组件 下载: http://logging.apache.org/log4j/2.x/download.html 下面的示例我使用最新版本2.7无法正常运行,最新版本使用方法可能不同。本文示例使用log4j-1.2.15测...

xundh
05/09
0
0
log4j:WARN No appenders could be found for logg...

log4j:WARN No appenders could be found for logger 在src下面新建file名为log4j.properties内容如下: # Configure logging for testing: optionally with log file log4j.rootLogger=WARN......

小丸子_
2012/10/09
0
0
Maven及LOG4J配置示例

刚才在测试小项目里配置了一下log4j,很久不用,有些遗忘了,配置完发出来备忘一下 首先用maven引入log4j,相关的代码如下: <dependency><groupId>log4j</groupId><artifactId>log4j</artif......

王小明123
2012/12/25
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!

前言 Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据。 本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它...

crossoverJie
8分钟前
2
0
OSChina 周一乱弹 —— 你的朋友圈有点生锈了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @Devoes :分享Trademark的单曲《Only Love (电视剧《妙手仁心 II》插曲)》: 《Only Love (电视剧《妙手仁心 II》插曲)》- Trademark 手机党少...

小小编辑
今天
249
9
【面试题】盲人坐飞机

有100位乘客乘坐飞机,其中有一位是盲人,每位乘客都按自己的座位号就坐。由于盲人看不见自己的座位号,所以他可能会坐错位置,而自己的座位被占的乘客会随便找个座位就坐。问所有乘客都坐对...

garkey
今天
1
0
谈谈神秘的ES6——(二)ES6的变量

谈谈神秘的ES6——(二)ES6的变量 我们在《零基础入门JavaScript》的时候就说过,在ES5里,变量是有弊端的,我们先来回顾一下。 首先,在ES5中,我们所有的变量都是通过关键字var来定义的。...

JandenMa
今天
2
0
arts-week1

Algorithm 594. Longest Harmonious Subsequence - LeetCode 274. H-Index - LeetCode 219. Contains Duplicate II - LeetCode 217. Contains Duplicate - LeetCode 438. Find All Anagrams ......

yysue
今天
2
0
NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
今天
1
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
今天
1
0
AB 压力测试

Ubuntu 安装AB apapt-get install apache2-utils 使用AB 压力测试 -c 并发数 -n请求总数 ab -c 3000 -n 10000 http://localhost/test/index.php AB只能测试localhost 返回结果 This is Apac......

xiawet
今天
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
1
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部