您的位置:首页 > 其它

Log4j2使用简介

2017-12-28 10:38 471 查看

1 Log4J2相关包

log4j-api.jar(Apache Log4j 2 API)

提供统一接口

 

log4j-core.jar(Apache Log4j 2 Implementation)

提供接口的具体实现

 

log4j-web(Apache Log4j 2 Web)

包含一些Web应用相关的类,例如:Log4jServletContextListener等。

在Servlet 3.0及以后版本中,Servlet提供了ServletContainerInitializer接口,在Servlet容器初始化阶段执行该接口。

在log4j-web.jar中,通过Log4jServletContainerInitializer实现了该接口。

在接口实现中对ServletContext添加了Log4jServletContextListener,log4jConfigLocation默认为/WEB-INF/log4j2.xml。

因此,不在web.xml进行上述配置,即可自动完成监听及加载操作。

详细内容参考官网:http://logging.apache.org/log4j/2.x/manual/webapp.html

 

log4j-jcl.jar(Apache Log4j 2 Commons Logging Bridge)

应用中使用Commons Logging API日志框架,绑定log4j2作为接口的具体实现

 

log4j-slf4j-impl.jar(Apache Log4j 2 SLF4J Binding)

应用中使用slf4j日志框架,绑定log4j2作为接口的具体实现。

 

log4j-to-slf4j.jar(Apache Log4j 2 to SLF4J Adapter)

应用中使用log4j2日志框架,通过适配器,实现log4j2底层转调slf4j接口。

 

log4j-slf4j-impl.jar与log4j-to-slf4j.jar不可共存,否则会产生冲突。

 

2 配置步骤

(1)添加依赖项:log4j-core.jar、log4j-api.jar、log4j-web.jar

<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-web</artifactId>
<version>${log4j.version}</version>
</dependency>


(2)配置log4j2.xml文件:/src/main/resources/log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- status : Log4j2自身日志输出级别 | OFF 表示关闭Log4j2自身日志输出 -->
<!-- monitorInterval : 动态加载配置文件间隔(单位:秒) -->
<Configuration status="WARN" monitorInterval="60">

<!-- 自定义参数 -->
<Properties>

<!-- ${date:yyyy-MM-dd} : 系统时间 -->
<Property name="filename">${date:yyyy-MM-dd}</Property>

<!--
%d{yyyy-MM-dd HH:mm:ss, SSS} : 日志记录时间
%t : 线程名称
%-5level : 日志级别,-表示左对齐,5表示固定长度为5
%l : 执行位置
%m : 日志内容,即 logger.info("message")
%n : 换行符
-->
<Property name="pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5level] - %l - %msg%n</Property>
</Properties>

<!-- 输出源 -->
<Appenders>

<!-- 控制台 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5level] %logger{36} - %l - %msg%n"/>
</Console>

<!-- 日志文件 -->
<!-- append : 是否追加 | true 追加内容 | false 覆盖文件 -->
<File name="MyFile" fileName="app.log" append="true">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>

<!-- 滚动日志文件 -->
<!-- 通常设置三个RollingFile输出源:Info, Error, Fatal -->
<RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/${filename}-info.log"
filePattern="${sys:user.home}/logs/$${date:yyyy-MM-dd}/info-%d{yyyy-MM-dd}-%i.log">
<!-- level : 输出级别控制 -->
<!-- onMatch : 满足级别操作(ACCEPT输出) -->
<!-- onMismatch : 不满足级别操作(DENY忽略) -->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<!-- 输出格式 -->
<PatternLayout pattern="${pattern}"/>
<Policies>
<!-- 更新时间策略 : 每间隔24小时创建一个新日志文件 -->
<TimeBasedTriggeringPolicy modulate="true" interval="24"/>
<!-- 文件大小策略 : 当前日志文件操作10MB时创建一个新日志文件 -->
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<!-- 最大文件数量 -->
<DefaultRolloverStrategy max="2"/>
</RollingFile>
</Appenders>

<!-- 记录器 -->
<Loggers>

<!-- 默认记录器 -->
<!-- level : 日志级别限制 -->
<Root level="info">
<!-- ref : 输出源绑定 -->
<Appender-ref ref="Console"/>
</Root>

<!-- 监控记录器 -->
<!-- name : 指定监控对象名(包名或类名) -->
<!-- level : 日志输出级别 -->
<!-- additivity : 是否生效 -->
<Logger name="org.springframework" level="FATAL" additivity="false">
<!-- 输出源 -->
<Appender-ref ref="RollingFileInfo"/>
</Logger>
</Loggers>
</Configuration>


3 使用示例

private static final Logger logger =LogManager.getLogger(Xxxx.class);
logger.info(“Message”);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息