Software_programming_log4j2

2019-10-02

1 slf4j 抽象日志框架 与 log4j2 的 组合

SLF4J 并不是一个日志框架,是一个允许用户在部署时以插件形式嵌入任何日志系统的抽象层。需要目标日志框架的核心库。

Log4j2 是一个日志框架。

1) slf4j 桥接  log4j-slf4j-impl

2)  log4j-api, log4j-core

 

reference : https://www.cnblogs.com/jiyukai/p/9418463.html

 

 

 

 

 

 

 

 

 

<!-- log -->
<!-- 导入slf4j接口包以及对应的 log4j2 日志框架的驱动包 -->
<!-- slf4j interface -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log4j - slf4j driver -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.12.1</version>
</dependency>

<!-- log framework core and api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>${log4j.version}</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-taglib</artifactId>
<version>${log4j.version}</version>
</dependency>

<!-- 解决web 环境下关闭服务器时可能出现的 log4j线程无法及时关闭的 warn, web工程需要包含 log4j-web jar, 非web工程不需要-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>${log4j.version}</version>
</dependency>

<!-- log4j AsyncLogger 需要 disruptor -->
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.2</version>
</dependency>

<!--log framework dependencies,end -->

 

Java 项目中的 classpath 指的是

ans: lib 和 classes 同属 classpath, 优先级 lib > classes

1. src 不是 classpath,

  WEB-INF/classes, lib 才是 classpath, 

  Web-INF 是资源目录,客户端不能直接访问

2. WEB-INF/Classes 目录存放 src 目录 java 文件编译之后的 class 文件, xml, properties 等资源配置文件, 这是一个定位资源的入口。

 

  

1 xml output path 的 设定

 

 note:

注意 import 时看准

因为没注意导入依赖引发的 error

 

 

 

 

 log4j2.xml config demo

<?xml version="1.0" encoding="UTF-8" ?>
<!-- config LoggerConfig -->
<configuration status="error">
    <Properties>
        <property name="fileName">src/main/resource/log/Automation.log</property>
        <property name="rollingLog">src/main/resource/log/rollingFile/app.log</property>
    </Properties>
    <!-- Appenders , output log target -->
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %l %M - %msg%xEx%n"/>
        </Console>
        <File name="log" fileName="${fileName}" append="false">
            <PatternLayout pattern="%d{dd-MM-yyyy HH:mm} %-5level %class{36} %l %M - %msg%xEx%n"/>
        </File>
        <RollingFile name="RollingFile" filename="${rollingLog}"
                     filePattern="src/main/resource/log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.zip">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %5-level %class{36} %L %M - %msg%xEx%n "/>
            <SizeBasedTriggeringPolicy size="10 kB"/>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
    </appenders>
    <!-- Loggers -->
    <Loggers>
        <Root level="trace">
            <appender-ref ref="log"/>
            <appender-ref ref="Console"/>
        </Root>
    </Loggers>
</configuration>

 

posted @ 2019-10-02 21:07  君子之行  阅读(8)  评论(0编辑  收藏  举报