当前位置: 首页 > news >正文

spring整合LOG4J2日志

POM文件


       <!-- Log Begin -->
       <slf4j.version>1.7.24</slf4j.version>
       <log4j2.version>2.8.2</log4j2.version>
       <jcl.over.version>1.7.6</jcl.over.version>
       <jul.over.version>1.7.6</jul.over.version>
       <log4j12.api.version>2.8.2</log4j12.api.version>
       <!-- Log End -->

<!-- Logger start -->

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>${log4j2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j2.version}</version>
        </dependency>
        <dependency> <!-- 桥接:告诉Slf4j使用Log4j2 -->
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>${log4j2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>${log4j2.version}</version>
        </dependency>

        <dependency> <!-- 桥接:jcl,不是升级不需要 -->
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${jcl.over.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId><!-- 桥接:jul,不是升级不需要 -->
            <artifactId>jul-to-slf4j</artifactId>
            <version>${jul.over.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency><!--适配log4j 1.x,不是升级不需要 -->
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-1.2-api</artifactId>
            <version>${log4j12.api.version}</version>
        </dependency>

        <!-- Logger end -->

配置文件 log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF" monitorInterval="30">
    <properties>
        <property name="appName">XXXXX</property>
        <property name="LOG_HOME">${sys:catalina.home}/logs/XXXXX/${appName}</property>
        <!--<property name="LOG_HOME">d:/test/logs/XXXXX/${appName}</property>-->
        <property name="errorfilepath">${LOG_HOME}/error.log</property>
        <property name="layout">%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5p %c{1.} %l %F - %m%n</property>
        <property name="layout2">%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level %c{3.} %L %M - %msg%xEx%n</property>
        <property name="layout3">%d{yyyy/MM/dd HH:mm:ss.sss} %-5level %class{36} %L %M - %msg%xEx%n</property>
    </properties>
    <!--  定义所有的appenders (输出目的地) -->
    <appenders>
        <!-- 控制台输出的配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!-- 控制台只输出level级别及以上的信息(onMatch),其他的直接拒绝(onMismatch) ,设置后可屏蔽具体logger的设定-->
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${layout2}"/>
        </Console>
        <!-- 文件打印所有信息,适合临时测试使用 ,append="true" 指定追加内容到文件 -->
        <File name="log" fileName="${LOG_HOME}/test-temp.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

        <!--fileName:当前日期文件的位置和名称
        filePattern:指定当发生rolling时,文件的转移和重命名规则
        SizeBasedTriggeringPlicy:指定文件体积大于size,出发rolling
        DefaultRolloverStrategy:指定最多保存的文件数,默认每个文件夹7个
        TimeBasedTriggeringPolicy:该配置需要和filePattern使用%d{yyyy-MM-dd HH-mm}-%i,最小粒度是分钟,则单位为分钟,表示每分钟生成一个新文件
        注意:可以通过ThresholdFilter过滤日志级别,可以实现按照不同的日志级别保存到不同的文件中
         -->
        <RollingFile name="RollingFile" fileName="${LOG_HOME}/app.log"
            filePattern="${LOG_HOME}/app.log.%d{yyyy-MM-dd-HH}-%i.log.gz">
            <!--filePattern="${errorfilepath}/$${date:yyyy-MM}/app-%d{yyyy-MM-dd HH-mm}-%i.log.gz" -->
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${layout}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="10MB"/>
                <!-- 每小时文件rollover -->
                <CronTriggeringPolicy schedule="0 0 * * * ?"/>
                <!--TimeBasedTriggeringPolicy表示按照时间间隔来进行日志文件的滚动,间隔单位可以是分钟、小时,具体需要根据filePattern的格式来进行判别;-->
                <!--例如filePattern="e:/app-%d{yyyy-MM-dd_HH-mm}-%i.out",则表示mm(分钟)为单位;-->
                <!--<TimeBasedTriggeringPolicy interval="1" modulate="true"/>-->


            </Policies>

            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
            <DefaultRolloverStrategy max="20">
                <!-- 删除策略,basePath表示根文件夹,maxDepth表示路径深度,0表示根目录自身,默认1,仅仅根目录下的文件可访问,删除无法恢复请慎重-->
                <Delete basePath="${LOG_HOME}" maxDepth="0">
                    <IfFileName glob="app.log*.log.gz"/>
                    <!-- 删除30天前的数据-->
                    <ifLastModified age="30d"/>
                    <!-- 访问文件数,保留最新10个文件 exceeds表示删除的文件数量阈值-->
                    <IfAccumulatedFileCount exceeds="10"/>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>

    </appenders>
    <loggers>

        <root level="INFO">
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingFile"/>
        </root>

        <logger name="org.springframework" level="ERROR" additivity="false" >
            <appender-ref ref="Console"/>
        </logger>

        <logger name="com.baomidou.mybatisplus" level="INFO" additivity="false" >
            <appender-ref ref="Console"/>
        </logger>
        <logger name="log4j.logger.com.ibatis" level="DEBUG" additivity="false" >
            <appender-ref ref="Console"/>
        </logger>
        <logger name="com.XXXXX" level="DEBUG" additivity="false" >
            <appender-ref ref="Console"/>
        </logger>
        <logger name="com.XXXXX.XXXXXX" level="DEBUG" additivity="false" >
            <appender-ref ref="Console"/>
        </logger>
        <logger name="com.XXXXX.XXXXX.XXXXX" level="DEBUG" additivity="false" >
            <appender-ref ref="Console"/>
        </logger>

        <!--additivity=false 表示不往上继承root,因此没有打印root策略的日志-->
        <!--<logger name="org.springframework.core" level="INFO" additivity="false">-->
            <!--<appender-ref ref="Console"/>-->
        <!--</logger>-->
    </loggers>
</configuration>

转载于:https://www.cnblogs.com/LingCoder/p/11263735.html

相关文章:

  • redis 详细讲解
  • 安装SQL-SERVER提示重启计算机
  • C++学习笔记-2-数组
  • 强化VB.NET编程多线程句柄技巧(转载)
  • Ansible 自动化运维部署
  • IdHTTP处理HTTP 302遇到的问题
  • 如何进行数据库,比如ORACLE,SQL SERVER的逆向工程,将数据库导入到PowerDesigner中...
  • 微软首次针对Windows 7推杀毒软件 年内将推出
  • leetcode-02 两数相加
  • Converter Standalone 4.3问题解决方式
  • 概率论
  • 使用MASM08 - Win32汇编语言016
  • javascript压缩图片
  • Silver“.NET研究”light 游戏开发小技巧:透明背景的Silverlight程序
  • 在C#中,如何将一个int转换成一个byte array,又如何将一个byte array转换成一个int...
  • 【Amaple教程】5. 插件
  • C++11: atomic 头文件
  • CentOS7 安装JDK
  • Cumulo 的 ClojureScript 模块已经成型
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Vim Clutch | 面向脚踏板编程……
  • Web设计流程优化:网页效果图设计新思路
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 如何设计一个比特币钱包服务
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 世界上最简单的无等待算法(getAndIncrement)
  • 算法系列——算法入门之递归分而治之思想的实现
  • 详解移动APP与web APP的区别
  • 小程序开发之路(一)
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (12)Linux 常见的三种进程状态
  • (arch)linux 转换文件编码格式
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (windows2012共享文件夹和防火墙设置
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (一)Thymeleaf用法——Thymeleaf简介
  • (原創) 未来三学期想要修的课 (日記)
  • (转载)(官方)UE4--图像编程----着色器开发
  • (转载)CentOS查看系统信息|CentOS查看命令
  • ****Linux下Mysql的安装和配置
  • *上位机的定义
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)