Log4j2.xml 不同包配置输出不同的文件夹

IDEA 里的测试类,三个不同的包,每个包不同的测试类

 

 控制台如果出现以下错误就是log4j2的存放位置错误,我是web项目放在resources编译路径下就好了

 以下是xml里的代码

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<Configuration status="WARN" monitorInterval="500">
<!--定义日志储存文件目录-->
<properties>
    <property name="LOG_HOME">E:/Java-courseware/mysql/java_jsp_SERVLETT/log4j/log4j2</property>
</properties>
<Appenders>
    <!--控制台输出所有日志-->
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    </Console>
    <!--Info级别日志输出  filname 是路径 log_home 是上面的变量名 -->
    <RollingRandomAccessFile name="serverInfoFile"
                             fileName="${LOG_HOME}/server/serverinfo/info.log"
                             filePattern="${LOG_HOME}/info-%d{yyyy-MM-dd}-%i.log"><!-- 新建文件名称格式和路径 -->
        <Filters>
            <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
        </Filters>
<!--        <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level %F[%thread][%file:%line] - %msg%n" />-->
        <PatternLayout pattern="%d [%t] %-5level [%c:%L] %M -【traceId:%X{traceId}】 - %msg%n" />
        <Policies>
            <TimeBasedTriggeringPolicy />
            <SizeBasedTriggeringPolicy size="10 MB" />
        </Policies>
        <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
        <DefaultRolloverStrategy max="20" />
    </RollingRandomAccessFile>
    <!--warn级别日志输出-->
    <RollingRandomAccessFile name="serverWarnFile"
                             fileName="${LOG_HOME}/server/serverwarn/warn.log"
                             filePattern="${LOG_HOME}/warn-%d{yyyy-MM-dd}-%i.log">
        <Filters>
            <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
        </Filters>
        <PatternLayout pattern="%d [%t] %-5level [%c:%L] %M -【traceId:%X{traceId}】 - %msg%n" />
        <Policies>
            <TimeBasedTriggeringPolicy />
            <SizeBasedTriggeringPolicy size="10 MB" />
        </Policies>
        <DefaultRolloverStrategy max="20" />
    </RollingRandomAccessFile>

    <!--Error级别日志输出-->
    <RollingRandomAccessFile name="serverErrorFile"
                             fileName="${LOG_HOME}/server/servererror/error.log"
                             filePattern="${LOG_HOME}/error-%d{yyyy-MM-dd}-%i.log">
        <Filters>
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
        </Filters>
        <PatternLayout pattern="%d [%t] %-5level [%c:%L] %M -【traceId:%X{traceId}】 - %msg%n" />
        <Policies>
            <TimeBasedTriggeringPolicy />
            <SizeBasedTriggeringPolicy size="10 MB" />
        </Policies>
        <DefaultRolloverStrategy max="20" />
    </RollingRandomAccessFile>



    <!-- servlet 包下的info leven -->
    <RollingRandomAccessFile name="servletInfoFile"
                             fileName="${LOG_HOME}/servlet/servletinfo/info.log"
                             filePattern="${LOG_HOME}/info-%d{yyyy-MM-dd}-%i.log"><!-- 新建文件名称格式和路径 -->
        <Filters>
            <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
        </Filters>
        <!--        <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level %F[%thread][%file:%line] - %msg%n" />-->
        <PatternLayout pattern="%d [%t] %-5level [%c:%L] %M -【traceId:%X{traceId}】 - %msg%n" />
        <Policies>
            <TimeBasedTriggeringPolicy />
            <SizeBasedTriggeringPolicy size="10 MB" />
        </Policies>
        <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
        <DefaultRolloverStrategy max="20" />
    </RollingRandomAccessFile>
    <!-- servlet 包下的warn leven-->
    <RollingRandomAccessFile name="servletWarnFile"
                             fileName="${LOG_HOME}/servlet/servletwarn/warn.log"
                             filePattern="${LOG_HOME}/warn-%d{yyyy-MM-dd}-%i.log">
        <Filters>
            <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
        </Filters>
        <PatternLayout pattern="%d [%t] %-5level [%c:%L] %M -【traceId:%X{traceId}】 - %msg%n" />
        <Policies>
            <TimeBasedTriggeringPolicy />
            <SizeBasedTriggeringPolicy size="10 MB" />
        </Policies>
        <DefaultRolloverStrategy max="20" />
    </RollingRandomAccessFile>

    <!--servlet 包下的error leven-->
    <RollingRandomAccessFile name="servletErrorFile"
                             fileName="${LOG_HOME}/servlet/servleterror/error.log"
                             filePattern="${LOG_HOME}/error-%d{yyyy-MM-dd}-%i.log">
        <Filters>
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
        </Filters>
        <PatternLayout pattern="%d [%t] %-5level [%c:%L] %M -【traceId:%X{traceId}】 - %msg%n" />
        <Policies>
            <TimeBasedTriggeringPolicy />
            <SizeBasedTriggeringPolicy size="10 MB" />
        </Policies>
        <DefaultRolloverStrategy max="20" />
    </RollingRandomAccessFile>






    <!-- dao 包下的info leven-->
    <RollingRandomAccessFile name="daoInfoFile"
                             fileName="${LOG_HOME}/dao/daoinfo/info.log"
                             filePattern="${LOG_HOME}/info-%d{yyyy-MM-dd}-%i.log"><!-- 新建文件名称格式和路径 -->
        <Filters>
            <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
        </Filters>
        <!--        <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level %F[%thread][%file:%line] - %msg%n" />-->
        <PatternLayout pattern="%d [%t] %-5level [%c:%L] %M -【traceId:%X{traceId}】 - %msg%n" />
        <Policies>
            <TimeBasedTriggeringPolicy />
            <SizeBasedTriggeringPolicy size="10 MB" />
        </Policies>
        <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
        <DefaultRolloverStrategy max="20" />
    </RollingRandomAccessFile>

    <!-- dao 包下的warn leven-->
    <RollingRandomAccessFile name="daoWarnFile"
                             fileName="${LOG_HOME}/dao/daowarn/warn.log"
                             filePattern="${LOG_HOME}/warn-%d{yyyy-MM-dd}-%i.log">
        <Filters>
            <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
        </Filters>
        <PatternLayout pattern="%d [%t] %-5level [%c:%L] %M -【traceId:%X{traceId}】 - %msg%n" />
        <Policies>
            <TimeBasedTriggeringPolicy />
            <SizeBasedTriggeringPolicy size="10 MB" />
        </Policies>
        <DefaultRolloverStrategy max="20" />
    </RollingRandomAccessFile>

    <!--dao 包下的error leven-->
    <RollingRandomAccessFile name="daoErrorFile"
                             fileName="${LOG_HOME}/dao/daoerror/error.log"
                             filePattern="${LOG_HOME}/error-%d{yyyy-MM-dd}-%i.log">
        <Filters>
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
        </Filters>
        <PatternLayout pattern="%d [%t] %-5level [%c:%L] %M -【traceId:%X{traceId}】 - %msg%n" />
        <Policies>
            <TimeBasedTriggeringPolicy />
            <SizeBasedTriggeringPolicy size="10 MB" />
        </Policies>
        <DefaultRolloverStrategy max="20" />
    </RollingRandomAccessFile>

</Appenders>

<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
<Loggers>
    <!-- 自定义 logger 对象    levels -  OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL
            additivity="false" 不再继承 rootlogger对象
            level 等级 只会去找等级高的或者相等的等级目的地

         选择包 然后给日志等级配一个目的地-->
    <Logger name="com.log4j2.server" level="Debug" additivity="false"><!-- server 包下指定的level 日志-->
        <AppenderRef ref="serverInfoFile" />
        <AppenderRef ref="serverWarnFile" />
        <AppenderRef ref="serverErrorFile" />
    </Logger>

    <Logger name="com.log4j2.servlet" level="Debug" additivity="false"><!-- servlet 包下指定的level 日志-->
        <AppenderRef ref="servletInfoFile" />
        <AppenderRef ref="servletWarnFile" />
        <AppenderRef ref="servletErrorFile" />
    </Logger>

    <Logger name="com.log4j2.dao" level="Debug" additivity="false"><!-- servlet 包下指定的level 日志-->
        <AppenderRef ref="daoInfoFile" />
        <AppenderRef ref="daoWarnFile" />
        <AppenderRef ref="daoErrorFile" />
    </Logger>


    <Root level="Debug">
    </Root>
</Loggers>

</Configuration>

三个包里的文件回去找对应的Logger

刚学log4j2 做的笔记,如果有些不足,希望有大佬来补充,不喜勿喷

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值