MavenWeb项目配置Log4j2

学习Maven,学习别人的经验,做个备忘录,希望可以帮到您

在pom文件里配置log4j的依赖
   <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.10.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.10.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>2.10.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.lmax/disruptor -->
        <dependency>
            <groupId>com.lmax</groupId>
            <artifactId>disruptor</artifactId>
            <version>3.4.1</version>
        </dependency>

配置log4j.xml并且放到src目录

<?xml version='1.0' encoding='UTF-8'?>
<!-- status="OFF",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF -->
<configuration status="OFF" monitorInterval="60">
    <Properties>
        <!-- (*必须,各应用需要修改) 部署应用的名称,命名规则 :全部小写字母、中短横线、数字,与微服务命名,disconf中命名一致 -->
        <property name="APPNAME">member-info-rest</property>
        <!-- (各应用需要修改)部署应用的端口号,用于一台服务器部署多台应用的情况,如果不需要,保持默认 -->
        <property name="PORT">${sys:crtServerPort:-8080}</property>
        <!-- (各应用需要修改)日志文件本地存放目录路径 建议各个环境跟生产环境统一起来,方便维护 -->
        <property name="logBaseFolder">D:/app/member-info-rest/logs</property>


        <!-- 日志文件名称的前缀部分,以下为建议值 -->
        <property name="logFileNamePrefix">${APPNAME}</property>
        <!-- 日志文件最小切割单位 值不做强制要求,建议300MB -->
        <property name="every_file_size">300MB</property>
        <!-- *必须并强制遵守 日志文件的编码 -->
        <property name="log_charset">UTF-8</property>
        <!-- *必须并强制遵守 日志格式说明: |日志时间|线程id|端口号|应用名称|类名|方法名|日志级别|traceId |输入参数|输出参数|耗时|任意多个扩展字段|具体打印的msg内容然后换行 -->
        <property name="log_pattern">|%d{yyyy-MM-dd HH:mm:ss.SSS}|%t|${PORT}|${APPNAME}%logger%M|%p|%X{MDCCRT_GUID_TRACEID}###+%X{MDCCRT_EXTENTS}-###|##+%X{MDCCRT_INPUT_PARAM}-##|##+%X{MDCCRT_OUTPUT_PARAM}-##|%X{MDCCRT_COST_TIME}|%m%n</property>
    </Properties>


    <appenders>
        <!-- 用来控制台输出 -->
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="${log_pattern}" />
        </Console>


        <!-- 以下是建议的日志压缩包目录的格式名称 -->
        <!-- all File Config -->
        <RollingRandomAccessFile name="all"
                                 filePattern="${logBaseFolder}/%d{yyyy-MM-dd}/${logFileNamePrefix}-all-%d{yyyyMMdd-HH}.%i.log.gz"
                                 fileName="${logBaseFolder}/${logFileNamePrefix}-all.log"
                                 immediateFlush="false">
            <!-- 日志输出格式 -->
            <PatternLayout charset="${log_charset}" pattern="${log_pattern}" />
            <!-- 以下是日志压缩包目录的建议格式名称 建议1天归档依次,压缩文件上线建议为200,这里预估每个磁盘存储空间200G左右,每个压缩包最大值200MB -->
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1" />
                <SizeBaseDTriggeringPolicy size="${every_file_size}" />
            </Policies>
            <DefaultRolloverStrategy max="1000" />
            <Filters>
                <!-- 显示所有信息 -->
                <ThresholdFilter onMismatch="DENY" onMatch="ACCEPT" level="TRACE" />
            </Filters>
        </RollingRandomAccessFile>


        <!-- error File Config -->
        <RollingRandomAccessFile name="errorLog"
                                 filePattern="${logBaseFolder}/%d{yyyy-MM-dd}/${logFileNamePrefix}-error-%d{yyyyMMdd-HH}.%i.log.gz"
                                 fileName="${logBaseFolder}/${logFileNamePrefix}-error.log"
                                 immediateFlush="false">
            <PatternLayout charset="${log_charset}" pattern="${log_pattern}" />
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1" />
                <SizeBaseDTriggeringPolicy size="${every_file_size}" />
            </Policies>
            <Filters>
                <!-- 只显示error信息 -->
                <ThresholdFilter onMismatch="DENY" onMatch="ACCEPT" level="ERROR" />
            </Filters>
        </RollingRandomAccessFile>
    </appenders>


    <loggers>
        <!-- 各应用按实际情况自行定义相关类的输出级别 -->
        <AsyncLogger name="com.crn.member" level="DEBUG" />


        <AsyncLogger name="com.apache" level="WARN" />
        <AsyncLogger name="com.ibm.sc" level="WARN" />
        <AsyncLogger name="org.apache.ibatis.jdbc" level="WARN" />


        <AsyncLogger name="org.apache.zookeeper.ClientCnxn" level="WARN" />
        <AsyncLogger name="org.apache.zookeeper.ZooKeeper" level="WARN" />
        <AsyncLogger name="org.apache.commons.httpclient.util.IdleConnectionHandler" level="WARN" />


        <AsyncLogger name="org.apache.http.client.protocol.RequestAddCookies" level="WARN" />


        <AsyncLogger name="org.apache.http.client.protocol.RequestAuthCache" level="WARN" />
        <AsyncLogger name="org.apache.http.impl.conn.PoolingHttpClientConnectionManager" level="WARN" />
        <AsyncLogger name="org.apache.http.impl.execchain.MainClientExec" level="WARN" />
        <AsyncLogger name="org.apache.http.headers" level="WARN" />
        <AsyncLogger name="org.apache.http.wire" level="WARN" />


        <AsyncLogger name="org.apache.activemq.transport.AbstractInactivityMonitor" level="WARN" />


        <AsyncLogger name="com.alibaba.dubbo.remoting.transport.DecodeHandler" level="WARN" />
        <AsyncLogger name="com.alibaba.dubbo.monitor.dubbo.DubboMonitor" level="OFF" />
        <AsyncLogger name="com.alibaba.dubbo.remoting.exchange.support.header.HeartbeatHandler" level="WARN" />
        <AsyncLogger name="com.alibaba.dubbo.remoting.exchange.support.header.HeartBeatTask" level="WARN" />
        <AsyncLogger name="com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry" level="WARN" />
        <AsyncLogger name="com.alibaba.dubbo.config.AbstractConfig" level="WARN" />


        <AsyncLogger name="com.baidu.disconf.client.config.inner.DisInnerConfigHelper" level="WARN" />
        <AsyncLogger name="com.baidu.disconf.client.config.ConfigMgr" level="WARN" />
        <AsyncLogger name="com.baidu.disconf.core.common.utils.ClassLoaderUtil" level="WARN" />
        <AsyncLogger name="com.baidu.disconf.core.common.utils.http.HttpClientUtil" level="WARN" />


        <AsyncLogger name="org.springframework" level="WARN" />
        <AsyncLogger name="RocketmqRemoting" level="WARN" />
        <AsyncLogger name="RocketmqClient" level="WARN" />
        <AsyncLogger name="org.apache.kafka" level="WARN" />


        <asyncRoot level="INFO">
            <!-- 各应用自行调整,日志输出至文件,自动按时间、按文件大小进行归档 ,生产环境调默认为INFO,如有特殊需求,在disconf动态调级 -->
            <appender-ref level="DEBUG" ref="all" />


            <!-- 日志输出至Console,仅在IDE开发时打开方便开发人员,部署到服务器之后必须置为OFF,level设置为OFF表示禁用Console控制台日志输出 -->
            <appender-ref level="TRACE" ref="console" />


            <!-- 异常日志,不用改动 -->
            <appender-ref level="ERROR" ref="errorLog" />
        </asyncRoot>
    </loggers>
</configuration>

maven 只会扫描java的文件和resources文件下的文件,需要配置扫描路径,在maven <build></buid>下新增resources节点

<resources>
    <resource>
	<directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
			</resource>
			<!--扫描配置文件所在的目录-->            
			<resource>
                <directory>src/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
           <filtering>false</filtering>
       </resource>      
</resources>

web.xm配置listener

   <!-- log4j2-begin -->
    <listener>
        <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
    </listener>
    <filter>
        <filter-name>log4jServletFilter</filter-name>
        <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>log4jServletFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>

配置 ServletContextListener做测试


测试


结果


如以上配置不能完成运行,请联系我!

如有错误,敬请包含,请帮忙指出,大家一起共勉!不胜感激





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值