log4j2的基本配置和实现

Log4j 2 contains next-generation Asynchronous Loggers based on the LMAX Disruptor library. In multi-threaded scenarios Asynchronous Loggers have 18 times higher throughput and orders of magnitude lower latency than Log4j 1.x and Logback. See Asynchronous Logging Performance for details. Otherwise, Log4j 2 performs faster than Log4j 1.x in critical areas and similarly to Logback under most circumstances. See Performance for more information.

这是官网给予log4j2的高度的评价,其性能是之前的log4j的18倍,其异步性的操作更是得到了优化,对于新技术的使用和开发是我们程序员必备的知识储备,以下是自己折腾并从网络上面收集的一点小的东西:

一、不多说:网站下载log4j的新的版本,我下载的是截止目前的最新版本2.0.2
二、下载完毕以后其中有好多的jar包,但是其中的好多都是为了兼容性等存在的,初步认识的时候,只需要关注的两个jar包:

log4j-api-2.0.2.jar
    log4j-core-2.0.2.jar

三、把上述的两个jar包导入我们自己的项目中,编写我们的测试用例:

package com.fww.log;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class LogTest
{
    private static Logger log = LogManager.getLogger(LogTest.class.getName());
    public static void main(String[] args)
    {
        log.info("你好啊");
        log.debug("我是debug");
        log.error("错了");
        log.trace("这是什么");
    }
}

四、运行程序就可以实现默认的配置信息下的log4j,但是在实际的开发中我们一定是需要自己按照项目的需求进行文件的配置操作的。以上的配置信息,只会使得error的信息输出到默认的文件中。

五、手动的进行文件的配置操作:

<properties>
    <!-- 基本的文件的输出信息的配置 -->
    <property name="LOG_HOME">log/test</property>
    <!-- 日志备份目录 -->
    <property name="BACKUP_HOME">{LOG_HOME}/backup</property>
    <property name="STAT_NAME">stat</property>
    <property name="SERVER_NAME">global</property>
</properties>
<appenders>
    <!-- 定义控制台输出 -->
    <Console name="Console" target="SYSTEM_OUT" follow="true">
        <PatternLayout
            pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />
    </Console>
    <!-- 程序员调试日志 -->
    <RollingRandomAccessFile name="DevLog"
        fileName="${LOG_HOME}/${SERVER_NAME}" filePattern="${LOG_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH}.log">
        <PatternLayout
            pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />
        <Policies>
            <TimeBasedTriggeringPolicy interval="1"
                modulate="true" />
        </Policies>
    </RollingRandomAccessFile>
</appenders>
<loggers>
    <!-- 3rdparty Loggers -->
    <logger name="org.springframework.core" level="info">
    </logger>
    <logger name="org.springframework.beans" level="info">
    </logger>
    <logger name="org.springframework.context" level="info">
    </logger>
    <logger name="org.springframework.web" level="info">
    </logger>
    <logger name="org.jboss.netty" level="warn">
    </logger>
    <logger name="org.apache.http" level="warn">
    </logger>
    <logger name="com.mchange.v2" level="warn">
    </logger>
    <!-- Root Logger -->
    <root level="DEBUG">
        <appender-ref ref="DevLog" />
        <appender-ref ref="Console" />
    </root>
</loggers>

(以上的配置信息搜集于网络)

六、在其中配置信息中,我们可以手动的进行文件位置的配置。

七、其他的说明:

log4j2相对于之前的配置信息的操作,少了properties的文件的配置操作,现在的配置文件只有json或者是xml形式的文件配置。
log4j2的配置文件的放置路径比较的随意,只要自己建立的项目工程可以把配置信息读取就可以了。

八、继续……

时间: 2024-08-08 21:58:04

log4j2的基本配置和实现的相关文章

Spring Boot + Log4j2 日志框架配置 (Maven)

参考Spring Boot官方文档 日志部分 Spring Boot默认情况下,当使用"Starters" 使用Logback输出日志, 还包括适当的Logback路由, 确保其他的日志框架(Java Util Logging, Commons Logging, Log4j, SLF4J)都能正常使用 Sping Boot文档的 26.5 Custom Log Configuration 章节,说明了自定义日志配置方法 多样的日志系统可以通过 添加适当的日志框架库到classpath

log4j2.xml完美配置

配置文件 <?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --> <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部

IDEA整合日志框架Log4j2+Slf4j详细配置过程

日志框架这么多,他们之间到底是什么关系呢?笼统的讲就是slf4j是一系列的日志接口,而log4j2.logback是具体实现了接口功能的日志框架.现在的主流日志接口都使用slf4j,而日志的实现就见仁见智了,至于他们的关系请自行百度,此处选择log4j2作为实现框架.网上看到的教程要么对代码没有解释,对新手不友好:要么时间比较久远,跟不上时代.这里使用新版本并结合大量注释,力求简洁明了,有什么问题欢迎留言交流. 运行环境: log4j2 2.8.1 + slf4j 1.7.25 IntelliJ

Log4j2+spring+maven配置

1,在项目pom.xml下,配置 <dependency>        <groupId>org.apache.logging.log4j</groupId>       <artifactId>log4j-api</artifactId>      <version>2.0.2</version>  </dependency>  <dependency>     <groupId>o

log4j2用asyncRoot配置异步日志是如何使用disruptor

用asyncRoot配置对应的对接disruptor类是AsyncLoggerConfigDisruptor,用Log4jContextSelector启动参数配置全局异步的对应的对接disruptor类是AsyncLoggerDisruptor.下面分析的是AsyncLoggerConfigDisruptor disruptor的创建与启动需要的部件实现 AsyncLoggerConfigDisruptor.start方法用来创建并启动disruptor实例 创建disruptor需要Even

log4j2配置实例[按小时记录日志文件]

log4j2.xml文件配置实例: <?xml version="1.0" encoding="UTF-8"?> <configuration status="off">     <properties>         <!-- File base path -->         <property name="LOG_HOME">/logs</proper

Log4j2 配置笔记(Eclipse+maven+SpringMVC)

Log4j2相关介绍可以百度看下,这里只注重配置Log4j2 能够马上跑起来: 1.pom.xml文件中添加Log4j2的相关Maven配置信息 <!-- log4j2 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.1</version> &l

log4j2用Log4jContextSelector启动参数配置全局异步日志是如何使用disruptor

与 log4j2用asyncRoot配置异步日志是如何使用disruptor差异有几个: 给disruptor实例的EventFactory不同 此处EventFactory采用的是RingBufferLogEvent.FACTORY,newInstance逻辑大致是: public RingBufferLogEvent newInstance() { final RingBufferLogEvent result = new RingBufferLogEvent(); if (Constant

Log4J1升级Log4J2

近期,碰到需要将项目中的Log4J1升级到Log4J2,现进行下总结.交代下技术背景:web项目,基于Java + Maven 1. 依赖 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.3</version> <scope>compile</sco