log4j2.xml解析

1.log4j 是apache下的一款开源日志记录工具.之前有粗略的看过框架中有关log4j的部分,今天抽出时间 看下log4j在框架中的配置.

2.由于项目的框架搭建工作之前是有项目经理完成的,虽然可以用,但是有些问题还是没有办法理解,比如log4j的配置文件有2个,web配置文件中log4配置写的位置不对,log4j添加日志的方式与apache官网上看到的不一样,所以本着进一步了解的目的,特此记录下.
log4j需要 core以及api 2个jar包,log4j2放在resources下即可,配置log4j2的日志记录级别以及相关日志记录位置即可.
在这里插入图片描述
在这里插入图片描述
3.现在主要让我疑惑的问题有几点
P:主要是log4j2.xml配置文件是否需要配置到web.xml的问题?
S:web.xml文件中log4j配置信息 classpath*:config/log4j2.xml, 不论配置的地址对不对,log4j2都能够生效**.结论:log4j2.xml不需要在web.xml文件中配置**

P:代码中Log日志添加的方式?log4j开源示例的日志添加方式 是
private static LOGGER logger=LogManger.getLogger(ClassName.getName());
而我们项目中的日志记录 使用的是

private  static  Logger logger=LoggerFactory.getLogger(ClassName.class);

S:第一种使用的apache中的log4j包,第二种使用的org.slf4j.Logger,2者使用的jar不同 但是都能够发挥log4j2的作用.这点就很奇怪.

P:log4j2中配置文件的Configuration中 status主要是起着 控制log4j自身日志记录级别,从低到高 ALL<TRACE<DEBUG<INFO<WARN<ERROR<FACTL<OFF,log4j2.xml中默认配置的是off,也就是关闭.该级别以下的日志信息都不显示.而实际上日志信息都是显示的.
S:出现上面问题可能是由于Logger日志添加时候采用的LoggerFactory,而不是使用LogManager.具体的错误原因 位置还不清楚.

最后来看一下log4j2.xml配置文件中各部分的作用:

<?xml version="1.0" encoding="UTF-8"?>
<!--  log4j2.xml配置文件 off表示日志显示级别在off之下的都不显示,1800s内重新生效 -->
<Configuration status="off" monitorInterval="1800">
<!-- 公用属性 配置文件的磁盘地址及文件位置  -->
    <properties>
        <property name="LOG_HOME">D:\\logs</property>
        <property name="FILE_NAME">pv_webT</property>
    </properties>
   <!-- appenders日志追加器,主要包含3点 控制台日志,错误日志,随机访问日志 -->
    <Appenders>
    	<!--  IDE编辑器控制台日志 -->
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <!-- 磁盘error.log 错误日志文件信息,error以上的显示-->
		<File name="Error" fileName="${LOG_HOME}/error.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>
        <!--  随机访问日志 记录磁盘位置-->
        <RollingRandomAccessFile name="running-log"
                                 fileName="${LOG_HOME}/${FILE_NAME}.log"
                                 filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout
                    pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n"/>
            <Policies>
            <!-- 重新生成log文件的触发条件 超过一天或者大于10MB -->
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="10 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="20"/>
        </RollingRandomAccessFile>
    </Appenders>

    <Loggers>
		<!-- 记录应用系统中的日志信息 -->
        <!--<Logger name="com.bxd" level="DEBUG" additivity="true">
        	<AppenderRef ref="running-log"/>
            <AppenderRef ref="Console"/>
        </Logger>-->
        <!-- 第三方日志系统 -->
        <!--<Logger name="org.springframework.core" level="error"/>
        <Logger name="org.springframework.beans" level="error"/>
        <Logger name="org.springframework.context" level="error"/>
        <Logger name="org.springframework.web" level="error"/>-->

		<Logger name="org.springframework" level="error"/>
        <Logger name="org.apache" level="error"/>

        
        
        <!-- 日志记录根节点,只有在此下面的日志才会被记录-->
        <Root level="info">
            <AppenderRef ref="Console"/> 
            <AppenderRef ref="Error"/>
            <AppenderRef ref="running-log"/>
        </Root>
    </Loggers>
</Configuration>

总结来看:log4j2.xml配置文件 如何配置,主要包含3个日志记录位置,系统控制台,错误日志,随机访问文件, 生成文件的地址 ,名称,随机访问文件重新生成的触发条件,以及日志记录根节点位置, 同时最重要的是在上面的配置文件生效后在相关代码 添加日志记录,自低而高分别是ALL<TRACE<DEBUG<INFO<WARN<ERROR<FACTL<OFF 8个级别.同时针对学习过程出现的几个问题,暂时不影响使用,等着自己搭建框架的时候 单独弄一套能发挥作用的,省得被误导.

同时参考的学习资料如下主要:主要是apache下log4java 部分配置文件的示例在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值