Log4j简单配置(后续补充)

一、目的


我们先来说说目的,一个程序运行的时候,我们是几乎看不到其内部运作的,看到的只是我们输入的数据和程序输出给我们的结果。对于运行过程中发生了什么,我们全然不知。当你想要在用户登录时记录下登录时间以及登录的用户信息,这时就能用输出日志来完成这个功能。Java在util.logging包中给我们提供了输出日志的类和各种工具。但是我个人认为使用apache提供的log4j更加方便,仅仅在配置方面,就简单易操作,而且功能强大。

二、准备工作


第一步,我们需要到apache网站下载log4j的jar包,网址在此:点击过去
第二步,导入jar包到项目buildpath下。
这里写图片描述

三、配置文件


这一步很重要,而且配置完成了之后你会发现,日志输出太简单了。一个配置,处处使用,甚至挪到另一个项目上,配置也不会变多少。所以这里配置好了,log4j使用就方便多了。在网上看其他大神的博文,发现使用xml的配置方式比properties文件的配置方式好用很多,因为使用xml配置,可以同时让不同级别的日志信息,输出到不同的位置,也可以根据不同的配置,选择不同的日志对象来输出到自己想要的位置。

举个例子,你希望在程序中有一个LogoutLogger对象,在用户注销的时候信息输出到控制台,与此同时,你还希望有一个LoginLogger对象在用户登录的时候能把日志信息输出到login.log这个文件中。我们可以通过xml配置来实现这个需求。
以下是我针对上面的例子做出的配置。

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration debug="true"
    xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <!-- ========================== 自定义输出格式说明================================ -->
    <!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL -->
    <!-- %r 输出自应用启动到输出该log信息耗费的毫秒数 -->
    <!-- %c 输出所属的类目,通常就是所在类的全名 -->
    <!-- %t 输出产生该日志事件的线程名 -->
    <!-- %n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” -->
    <!-- %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 
        22:10:28,921 -->
    <!-- %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlo4.main(TestLog4.java:10) -->
    <!-- ========================================================================== -->

    <!-- ========================== 输出方式说明================================ -->
    <!-- Log4j提供的appender有以下几种: -->
    <!-- org.apache.log4j.ConsoleAppender(控制台), -->
    <!-- org.apache.log4j.FileAppender(文件), -->
    <!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), -->
    <!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), -->
    <!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) -->
    <!-- ========================================================================== -->

     <appender name="LogoutLogger" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="DEBUG"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
        </layout>
    </appender>

    <appender name="LoginLogger" class="org.apache.log4j.FileAppender">
        <param name="File" value="logs/login.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
        </layout>
    </appender>

    <!-- 這個logger标签是用来配置:在类中可以根据appender的名称获取指定日志输出方式       -->
    <!-- 如果在类中获取LogoutLog,那么通过LogoutLog这个logger输出的日志只会出现在控制台 -->
    <logger name="LogoutLogger">
        <appender-ref ref="LogoutLogger"/>
    </logger>
    <logger name="LoginLogger">
        <appender-ref ref="LoginLogger"/>
    </logger>

</log4j:configuration>

四、在程序中应用

1.Customer.java

模拟用户

package log4j;

import org.apache.log4j.Logger;

public class Customer {
    private String name;
    public Customer(String name) {
        super();
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void login() {
        Logger logger = Logger.getLogger("LoginLogger");
        logger.info("用户"+this.name+"登陆啦");
    }
    public void logout() {
        Logger logger = Logger.getLogger("LogoutLogger");
        logger.info("用户"+this.name+"注销啦");
    }
}
2.Test.java

模拟用户登录注销操作

package log4j;

public class Test {
    public static void main(String[] args) {

        Customer c1 = new Customer("Tom");
        Customer c2 = new Customer("Jerry");

        c1.login();
        c2.login();

        c1.logout();
        c2.logout();
    }
}

五、结果

1.在控制台的日志

这里写图片描述

2.在文件中的日志

这里写图片描述

最后

还有一些配置,像日志达到一定大小了之后生成另外一个文件,每天生成不同的文件,都可以通过配置文件来设置,因为暂时没有使用过其他的生成日志的方式,待以后慢慢补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值