• java项目log4j2单独为某个类配置日志文件


    在项目中,一般都是把日志记录到一个日志文件中。

    对应的log4j2.xml内容如下图所示:只有一个RollingFile节点,整个系统只会生成一个log日志文件

    生成的日志文件如下图:

    当系统不断扩大,业务越来越复杂,所有接口或者方法的日志内容都放在一个文件中,内容比较乱,不方便查看。

    这时候就考虑把日志拆分成多个文件,不同的业务内容放到不同的日志文件中。

    修改后的log4j2.xml内容如下:

    1. "1.0" encoding="UTF-8"?>
    2. xml>
    3. <configuration status="DEBUG" monitorInterval="600">
    4. <properties>
    5. <property name="LOG_HOME">D:/webbase/logsproperty>
    6. <property name="LOG_BACK_HOME">${LOG_HOME}/backupproperty>
    7. properties>
    8. <Appenders>
    9. <Console name="Console" target="SYSTEM_OUT">
    10. <PatternLayout
    11. pattern="%d{HH:mm:ss.SSS} {%t} %-5level %logger{36} - %msg%n" />
    12. Console>
    13. <RollingFile name="AllLog"
    14. fileName="${LOG_HOME}/Web/Log-${date:yyyy-MM-dd}-newest.log"
    15. filePattern="${LOG_HOME}/Web/backup/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}-%i-newest.log"
    16. append="true">
    17. <PatternLayout
    18. pattern="%r %d [%t] %-5p %c - %m%n%n" />
    19. <Policies>
    20. <SizeBasedTriggeringPolicy size="20MB" />
    21. <TimeBasedTriggeringPolicy interval="1"
    22. modulate="true" />
    23. Policies>
    24. <Filters>
    25. <ThresholdFilter level="ALL" onMatch="ACCEPT"
    26. onMismatch="DENY" />
    27. Filters>
    28. <DefaultRolloverStrategy max="100" />
    29. RollingFile>
    30. <RollingFile name="InvoiceRollingFile"
    31. fileName="${LOG_HOME}/Invoice/Log-${date:yyyy-MM-dd}-invoice.log"
    32. filePattern="${LOG_HOME}/Invoice/backup/invoice/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}-%i-invoice.log"
    33. append="true">
    34. <PatternLayout
    35. pattern="%r %d [%t] %-5p %c - %m%n%n" />
    36. <Policies>
    37. <SizeBasedTriggeringPolicy size="20MB" />
    38. <TimeBasedTriggeringPolicy interval="1"
    39. modulate="true" />
    40. Policies>
    41. <Filters>
    42. <ThresholdFilter level="ALL" onMatch="ACCEPT"
    43. onMismatch="DENY" />
    44. Filters>
    45. <DefaultRolloverStrategy max="100" />
    46. RollingFile>
    47. Appenders>
    48. <Loggers>
    49. <Root level="debug">
    50. <AppenderRef ref="AllLog" />
    51. <AppenderRef ref="Console" />
    52. Root>
    53. <Logger name="InvoiceLogger" additivity="false" level="debug">
    54. <appender-ref ref="InvoiceRollingFile" level="debug" />
    55. Logger>
    56. Loggers>
    57. configuration>

    文件内容解读:

    以上配置表达的是,系统整体日志使用一个文件记录,发票接口使用一个文件记录。同时发票接口日志的信息不会记录到整体的日志里面,这是由Logger节点的additivity属性决定的(additivity 属性配置为 false,则这个logger不会将日志流反馈到root中)。

    如果有其他接口或者类,仿照InvoiceRollingFile,单独添加对应的RollingFile节点和Logger节点。这两个节点是一 一对应的,只要新加了RollingFile,就需要在下面配上Logger,同时Logger节点的 appender-ref属性中ref的值需要与RollingFile节点的name属性值保持一致。

    记录log信息的代码示例:

    1. import org.apache.logging.log4j.LogManager;
    2. import org.apache.logging.log4j.Logger;
    3. private static final Logger logger = LogManager.getLogger("InvoiceLogger");
    4. logger.info("我是info级别的日志信息");

    InvoiceLogger对应的是log4j2.xml配置文件中,Logger节点name属性值。

    按照以上方式配置后,生成的日志文件就会是下面这个样子的

    如果要找发票接口相关的日志,就在Invoice文件夹中找对应日期的文件。查找其他日志内容,在Web文件夹中查找(Invoice、Web,是在log4j2.xml配置文件中fileName节点进行配置的)。

  • 相关阅读:
    每日5题Day14 - LeetCode 66 - 70
    文法与正规式
    蓝桥杯双周赛算法心得——数树数(dfs)
    springboot之二:整合junit进行单元测试+整合redis(本机、远程)+整合mybatis
    MFC Windows 程序设计[114]之多样下拉列表框
    servlet的生命周期
    聚焦采购全方位风险管理,全面提升工程企业采购效率与效益
    做测试8年,33岁前只想追求大厂高薪,今年只求稳定收入
    k8s核心组件
    数据结构与算法之堆: Leetcode 451. 根据字符出现频率排序 (Typescript版)
  • 原文地址:https://blog.csdn.net/liangmengbk/article/details/133591332