log4j入门

1 篇文章 0 订阅

下载地址:

https://mvnrepository.com/artifact/log4j/log4j

log4j第一个测试

1.创建java项目

2.新建lib,导入log4j-1.2.17.jar包,添加库

3.新建log4jText测试类:

package log4j;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

/**
 * @author lenovo
 */
public class Log4jTest {
    /**
     *  基于类的名称获取日志对象
     *
     */
    static Logger logger = Logger.getLogger(Log4jTest.class);
    public static void main(String[] args) throws InterruptedException {
//        进行默认配置
        BasicConfigurator.configure();
//        设置日志输出级别
        logger.setLevel(Level.DEBUG);
//         进行不同级别的日志输出
        logger.trace("跟踪信息");
        logger.debug("调试信息");
        logger.info("输出信息");
        Thread.sleep(1000);
        logger.warn("警告信息");
        logger.error("错误信息");
        logger.fatal("致命信息");
    }
}

 

4.测试结果:


0 [main] DEBUG log4j.Log4jTest  - 调试信息
2 [main] INFO log4j.Log4jTest  - 输出信息
1003 [main] WARN log4j.Log4jTest  - 警告信息
1003 [main] ERROR log4j.Log4jTest  - 错误信息
1003 [main] FATAL log4j.Log4jTest  - 致命信息

进程已结束,退出代码 0

5.在src目录下,配置log4j.properties

log4j.rootLogger=debug, stdout, R

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=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=5

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

 

6.运行测试类:

package log4j;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

/**
 * @author lenovo
 */
public class Log4jTest {
    /**
     *  基于类的名称获取日志对象
     *
     */
    static Logger logger = Logger.getLogger(Log4jTest.class);
    public static void main(String[] args) throws InterruptedException {
//        进行默认配置
        BasicConfigurator.configure();
//        设置日志输出级别
        logger.setLevel(Level.DEBUG);
//         进行不同级别的日志输出
        logger.trace("跟踪信息");
        logger.debug("调试信息");
        logger.info("输出信息");
        Thread.sleep(1000);
        logger.warn("警告信息");
        logger.error("错误信息");
        logger.fatal("致命信息");
    }
}

7.结果输出:

DEBUG [main] (Log4jTest.java:23) - 调试信息
0 [main] DEBUG log4j.Log4jTest  - 调试信息
 INFO [main] (Log4jTest.java:24) - 输出信息
4 [main] INFO log4j.Log4jTest  - 输出信息
 WARN [main] (Log4jTest.java:26) - 警告信息
1005 [main] WARN log4j.Log4jTest  - 警告信息
ERROR [main] (Log4jTest.java:27) - 错误信息
1005 [main] ERROR log4j.Log4jTest  - 错误信息
FATAL [main] (Log4jTest.java:28) - 致命信息
1005 [main] FATAL log4j.Log4jTest  - 致命信息

进程已结束,退出代码 0

 

log4j:配制详解

.配置log4j.properties

1.配置log4j.properties

#设置日志输出的等级为debug,低于debug就不会输出了
#设置日志输出到两种地方,分别叫做 stdout和 R
log4j.rootLogger=debug, stdout, R

#第一个地方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.
#stdout输出格式是 %5p [%t] (%F:%L) - %m%n
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

#第二个地方R, 以滚动的方式输出到文件,文件名是example.log,文件最大100k, 最多滚动5个文件
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=5

#输出格式是 %p %t %c - %m%n
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

#log4j日志输出格式一览:
#%c 输出日志信息所属的类的全名
#%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },
# 输出类似:2002-10-18- 22:10:28
#%f 输出日志信息所属的类的类名
#%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
#%m 输出代码中指定的信息,如log(message)中的message
#%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
#%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
#%r 输出自应用启动到输出该日志信息所耗费的毫秒数
#%t 输出产生该日志事件的线程名
#
#所以:%5p [%t] (%F:%L) - %m%n 就表示
##宽度是5的优先等级 线程名称 (文件名:行号) - 信息 回车换行

2.创建测试类:TestLog4j

package log4j;

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

/**
 * @author lenovo
 */
public class TestLog4j {
    static Logger logger = Logger.getLogger(TestLog4j.class);
    public static void main(String[] args) throws InterruptedException {
//        采用指定配置文件
        PropertyConfigurator.configure("D:\\java-spring学习\\log4j\\src\\log4j.properties");
        for (int i = 0; i < 5; i++) {
            logger.trace("跟踪信息");
            logger.debug("调试信息");
            logger.info("输出信息");
            logger.warn("警告信息");
            logger.error("错误信息");
            logger.fatal("致命信息");
        }
    }
}

3.测试类输出:

结果:

DEBUG [main] (TestLog4j.java:16) - 调试信息
 INFO [main] (TestLog4j.java:17) - 输出信息
 WARN [main] (TestLog4j.java:18) - 警告信息
ERROR [main] (TestLog4j.java:19) - 错误信息
FATAL [main] (TestLog4j.java:20) - 致命信息
DEBUG [main] (TestLog4j.java:16) - 调试信息
 INFO [main] (TestLog4j.java:17) - 输出信息
 WARN [main] (TestLog4j.java:18) - 警告信息
ERROR [main] (TestLog4j.java:19) - 错误信息
FATAL [main] (TestLog4j.java:20) - 致命信息
DEBUG [main] (TestLog4j.java:16) - 调试信息
 INFO [main] (TestLog4j.java:17) - 输出信息
 WARN [main] (TestLog4j.java:18) - 警告信息
ERROR [main] (TestLog4j.java:19) - 错误信息
FATAL [main] (TestLog4j.java:20) - 致命信息
DEBUG [main] (TestLog4j.java:16) - 调试信息
 INFO [main] (TestLog4j.java:17) - 输出信息
 WARN [main] (TestLog4j.java:18) - 警告信息
ERROR [main] (TestLog4j.java:19) - 错误信息
FATAL [main] (TestLog4j.java:20) - 致命信息
DEBUG [main] (TestLog4j.java:16) - 调试信息
 INFO [main] (TestLog4j.java:17) - 输出信息
 WARN [main] (TestLog4j.java:18) - 警告信息
ERROR [main] (TestLog4j.java:19) - 错误信息
FATAL [main] (TestLog4j.java:20) - 致命信息

进程已结束,退出代码 0

 

配制log4j.xml

1.配制log4j.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">

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

    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/>
        </layout>
    </appender>

    <!-- specify the logging level for loggers from other libraries -->
    <logger name="com.opensymphony">
        <level value="ERROR" />
    </logger>

    <logger name="org.apache">
        <level value="ERROR" />
    </logger>
    <logger name="org.hibernate">
        <level value="ERROR" />
    </logger>

    <!-- for all other loggers log only debug and above log messages -->
    <root>
        <priority value="ERROR"/>
        <appender-ref ref="STDOUT" />
    </root>

</log4j:configuration>

2.创建测试类: Log4jXmlTest

package log4j;

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

/**
 * @author lenovo
 */
public class Log4jXmlTest {
    static Logger logger = Logger.getLogger(TestLog4j.class);
    public static void main(String[] args) throws InterruptedException {
        PropertyConfigurator.configure("D:\\java-spring学习\\log4j\\src\\log4j.xml");
        for (int i = 0; i < 5; i++) {
            logger.trace("跟踪信息");
            logger.debug("调试信息");
            logger.info("输出信息");
            logger.warn("警告信息");
            logger.error("错误信息");
            logger.fatal("致命信息");
        }
    }
}

3.测试类输出:

结果:

2020-05-10 18:27:23,937 ERROR log4j.TestLog4j.main:18 - 错误信息
2020-05-10 18:27:23,939 FATAL log4j.TestLog4j.main:19 - 致命信息
2020-05-10 18:27:23,939 ERROR log4j.TestLog4j.main:18 - 错误信息
2020-05-10 18:27:23,939 FATAL log4j.TestLog4j.main:19 - 致命信息
2020-05-10 18:27:23,940 ERROR log4j.TestLog4j.main:18 - 错误信息
2020-05-10 18:27:23,940 FATAL log4j.TestLog4j.main:19 - 致命信息
2020-05-10 18:27:23,940 ERROR log4j.TestLog4j.main:18 - 错误信息
2020-05-10 18:27:23,940 FATAL log4j.TestLog4j.main:19 - 致命信息
2020-05-10 18:27:23,942 ERROR log4j.TestLog4j.main:18 - 错误信息
2020-05-10 18:27:23,942 FATAL log4j.TestLog4j.main:19 - 致命信息

 

 

log4j.rootLogger=DEBUG, stdout” 指的是日志输出级别,一共有 7 个级别(OFF、 FATAL、 ERROR、 WARN、 INFO、 DEBUG、 ALL)。

一般常用的日志输出级别分别为 DEBUG、 INFO、 ERROR 以及 WARN,分别表示 “调试级别”、 “标准信息级别”、 “错误级别”、 “异常级别”。如果需要查看程序运行的详细步骤信息,一般选择 “DEBUG” 级别,因为该级别在程序运行期间,会在控制台才打印出底层的运行信息,以及在程序中使用 Log 对象打印出调试信息。
如果是日常的运行,选择 “INFO” 级别,该级别会在控制台打印出程序运行的主要步骤信息。“ERROR” 和 “WARN” 级别分别代表 “不影响程序运行的错误事件” 和 “潜在的错误情形”。
文件中 “stdout” 这段配置的意思就是将 DEBUG 的日志信息输出到 stdout 参数所指定的输出载体中。

“log4j.appender.stdout=org.apache.log4j.ConsoleAppender” 的含义是,设置名为 stdout 的输出端载体是哪种类型。

目前输出载体有
ConsoleAppender(控制台)
FileAppender(文件)
DailyRollingFileAppender(每天产生一个日志文件)
RollingFileAppender(文件大小到达指定大小时产生一个新的文件)
WriterAppender(将日志信息以流格式发送到任意指定的地方)
这里要将日志打印到 IDEA 的控制台,所以选择 ConsoleAppender

“log4j.appender.stdout.layout=org.apache.log4j.PatternLayout” 的含义是,名为 stdout 的输出载体的 layout(即界面布局)是哪种类型。

目前输出端的界面类型分为
HTMLLayout(以 HTML 表格形式布局)
PatternLayout(可以灵活地指定布局模式)
SimpleLayout(包含日志信息的级别和信息字符串)
TTCCLayout(包含日志产生的时间、线程、类别等信息)
这里选择灵活指定其布局类型,即自己去配置布局。

“log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n” 的含义是,如果 layout 界面布局选择了 PatternLayout 灵活布局类型,要指定的打印信息的具体格式。

格式信息配置元素大致如下:
%m 输出代码中的指定的信息
%p 输出优先级,即 DEBUG、 INFO、 WARN、 ERROR 和 FATAL
%r 输出自应用启动到输出该 log 信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows 平台为 “rn”,UNIX 平台为 “n”
%d 输出日志时的时间或日期,默认个事为 ISO8601,也可以在其后指定格式,比如 %d{yyy MMM dd HH:mm:ss},输出类似:2018 年 4 月18 日 10:32:00
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数

 

 

总结:log4j日志配置:有2中方式,xml和properties2中方式.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值