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

2.首先看一下log4j 在项目架构中有关的配置文件信息,现在项目中涉及到log4j的配置文件由2个,一个是log4j, 另外一个是log4j2. 通过网上资料查询可以知道,log4j2 是log4j的升级版. log4j2相比log4j 部署起来更加方便,直接放到resouerces文件夹下即可,而log4j.xml相比log4j2则侵入性更强,需要配置到web.xml容器里面.
log4j2.xml解析
log4j2.xml解析
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 部分配置文件的示例log4j2.xml解析

相关文章:

  • 2021-06-13
  • 2021-08-20
  • 2022-12-23
  • 2022-01-20
  • 2021-12-27
  • 2021-08-14
  • 2022-12-23
猜你喜欢
  • 2022-02-08
  • 2022-12-23
  • 2021-07-24
  • 2021-12-26
相关资源
相似解决方案