风在路上 风在路上
首页
导航站
  • Java-Se

    • Java基础
  • Java-Se进阶-多线程

    • 多线程
  • Java-Se进阶-java8新特性

    • java8新特性
  • Java-ee

    • JavaWeb
  • Java虚拟机

    • JVM
  • golang基础

    • golang基础
  • golang框架

    • gin
  • SQL 数据库

    • MySQL
  • NoSQL 数据库

    • Redis
    • ElasticSearch
    • MongoDB
  • ORM

    • MyBatis
    • MyBatis-Plus
  • Spring

    • Spring
  • SpringMVC

    • SpringMVC1
    • SpringMVC2
  • SpringCloud

    • SpringCloud
  • 中间件

    • RabbitMQ
    • Dubbo
  • 秒杀项目
  • Git
  • Linux
  • Docker
  • JWT
  • 面试
  • 刷题
开发问题😈
设计模式
关于💕
归档🕛
GitHub (opens new window)

风

摸鱼
首页
导航站
  • Java-Se

    • Java基础
  • Java-Se进阶-多线程

    • 多线程
  • Java-Se进阶-java8新特性

    • java8新特性
  • Java-ee

    • JavaWeb
  • Java虚拟机

    • JVM
  • golang基础

    • golang基础
  • golang框架

    • gin
  • SQL 数据库

    • MySQL
  • NoSQL 数据库

    • Redis
    • ElasticSearch
    • MongoDB
  • ORM

    • MyBatis
    • MyBatis-Plus
  • Spring

    • Spring
  • SpringMVC

    • SpringMVC1
    • SpringMVC2
  • SpringCloud

    • SpringCloud
  • 中间件

    • RabbitMQ
    • Dubbo
  • 秒杀项目
  • Git
  • Linux
  • Docker
  • JWT
  • 面试
  • 刷题
开发问题😈
设计模式
关于💕
归档🕛
GitHub (opens new window)
  • 问题
  • SpringBoot相关
  • java基础相关
  • log4j日志配置
    • SpringBoot封装starter并上传到maven仓库
    • SpringBoot整合Validation
    • 开发问题
    zdk
    2022-01-06
    目录

    log4j日志配置

    Table of Contents generated with DocToc (opens new window)

    • 项目开发日志配置(log4j2)
      • 所需maven依赖
      • 解决打成jar包后不打印日志问题的插件
      • 模板log4j2.xml配置文件

    # 项目开发日志配置(log4j2)

    # 所需maven依赖

    <!--        日志所需 start-->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.25</version>
            </dependency>
            <!--用于解决web环境下关闭服务器时可能出现的log4j线程无法及时关闭的warn,web工程需要包含log4j-web,非web工程不需要 -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-web</artifactId>
                <scope>runtime</scope>
                <version>2.9.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
                <version>2.9.1</version>
                <exclusions>
                    <exclusion>
                        <artifactId>slf4j-api</artifactId>
                        <groupId>org.slf4j</groupId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
                <version>2.9.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.9.1</version>
            </dependency>
    <!--        日志所需 end-->
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35

    # 解决打成jar包后不打印日志问题的插件

    在pom.xml的plugins标签下添加如下plugin

    <!--log4j2问题解决start-->
                <!-- Maven Shade Plugin -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>2.4.3</version>
    
                    <configuration>
                        <createDependencyReducedPom>true</createDependencyReducedPom>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <transformers>
                                    <transformer
                                            implementation="com.github.edwgiz.mavenShadePlugin.log4j2CacheTransformer.PluginsCacheFileTransformer"/>
                                </transformers>
                                <filters>
                                    <filter>
                                        <artifact>*:*</artifact>
    
                                        <excludes>
                                            <exclude>META-INF/*.SF</exclude>
                                            <exclude>META-INF/*.DSA</exclude>
                                            <exclude>META-INF/*.RSA</exclude>
                                            <exclude>**/Log4j2Plugins.dat</exclude>
                                        </excludes>
    
                                    </filter>
                                </filters>
                            </configuration>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>com.github.edwgiz</groupId>
                            <artifactId>maven-shade-plugin.log4j2-cachefile-transformer</artifactId>
                            <version>2.6.1</version>
                        </dependency>
                    </dependencies>
                </plugin>
    <!--log4j2问题解决end-->
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46

    # 模板log4j2.xml配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration status="OFF">
        <appenders>
            <Console name="DruidSqlConsole" target="SYSTEM_OUT">
                <!--只接受程序中DEBUG级别的日志进行处理-->
                <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="[qjapi Sql Log:[%level]:%d{yyyy-MM-dd HH:mm:ss.SSS}]%msg%n%xEx"/>
            </Console>
            <Console name="qjapiConsole" target="SYSTEM_OUT">
                <!--只接受程序中DEBUG级别的日志进行处理-->
                <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="[qjapi System Log:[%level]:%d{yyyy-MM-dd HH:mm:ss.SSS}]%msg%n%xEx%C.%M(%F:%L) %n"/>
            </Console>
            <Console name="Console" target="SYSTEM_OUT">
                <!--只接受程序中DEBUG级别的日志进行处理-->
                <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="[qjapi Log:[%level]:%d{yyyy-MM-dd HH:mm:ss.SSS}]%msg%n%xEx%C.%M(%F:%L) %n"/>
            </Console>
    
    
            <!-- JBolt中的JBoltApiConsole Debug 控制台输出LOG -->
            <Console name="JBoltApiConsole" target="SYSTEM_OUT">
                <!--只接受程序中DEBUG级别的日志进行处理-->
                <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="[qjapi Api Log:[%level]:%d{yyyy-MM-dd HH:mm:ss.SSS}]%msg%n%xEx%C.%M(%F:%L) %n"/>
            </Console>
            <!-- JBolt中的JBoltControllerConsole Debug 控制台输出LOG -->
            <Console name="JBoltControllerConsole" target="SYSTEM_OUT">
                <!--只接受程序中DEBUG级别的日志进行处理-->
                <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="[qjapi Controller Log:[%level]:%d{yyyy-MM-dd HH:mm:ss.SSS}]%msg%n%xEx%C.%M(%F:%L) %n"/>
            </Console>
    
            <!--处理DEBUG级别的日志,并把该日志放到logs/debug.log文件中-->
            <!--打印出DEBUG级别日志,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
            <RollingFile name="RollingFileDebug" fileName="./logs/debug.log"
                         filePattern="logs/$${date:yyyy-MM}/debug-%d{yyyy-MM-dd}-%i.log.gz">
                <Filters>
                    <ThresholdFilter level="DEBUG"/>
                    <ThresholdFilter level="INFO" onMatch="DENY" onMismatch="NEUTRAL"/>
                </Filters>
                <PatternLayout
                        pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] (%class{36}.java:%L) %M - %msg%n%xEx"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="10 MB"/>
                    <TimeBasedTriggeringPolicy/>
                </Policies>
            </RollingFile>
    
            <!--处理INFO级别的日志,并把该日志放到logs/info.log文件中-->
            <RollingFile name="RollingFileInfo" fileName="./logs/info.log"
                         filePattern="logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz">
                <Filters>
                    <!--只接受INFO级别的日志,其余的全部拒绝处理-->
                    <ThresholdFilter level="INFO"/>
                    <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
                </Filters>
                <PatternLayout
                        pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] (%class{36}.java:%L) %M - %msg%n%xEx"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="10 MB"/>
                    <TimeBasedTriggeringPolicy/>
                </Policies>
            </RollingFile>
    
            <!--处理WARN级别的日志,并把该日志放到logs/warn.log文件中-->
            <RollingFile name="RollingFileWarn" fileName="./logs/warn.log"
                         filePattern="logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz">
                <Filters>
                    <ThresholdFilter level="WARN"/>
                    <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
                </Filters>
                <PatternLayout
                        pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] (%class{36}.java:%L) %M - %msg%n%xEx"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="10 MB"/>
                    <TimeBasedTriggeringPolicy/>
                </Policies>
            </RollingFile>
    
            <!--处理error级别的日志,并把该日志放到logs/error.log文件中-->
            <RollingFile name="RollingFileError" fileName="./logs/error.log"
                         filePattern="logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz">
                <ThresholdFilter level="ERROR"/>
                <PatternLayout
                        pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] (%class{36}.java:%L) %M - %msg%n%xEx"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="10 MB"/>
                    <TimeBasedTriggeringPolicy/>
                </Policies>
            </RollingFile>
    
        </appenders>
    
        <loggers>
            <root level="DEBUG">
                <appender-ref ref="Console"/>
                <appender-ref ref="RollingFileInfo"/>
                <appender-ref ref="RollingFileWarn"/>
                <appender-ref ref="RollingFileError"/>
                <appender-ref ref="RollingFileDebug"/>
            </root>
    
            <logger name="qjapi" level="DEBUG" additivity="false">
                <appender-ref ref="qjapiConsole"/>
                <appender-ref ref="RollingFileInfo"/>
                <appender-ref ref="RollingFileWarn"/>
                <appender-ref ref="RollingFileError"/>
                <appender-ref ref="RollingFileDebug"/>
            </logger>
    
            <!--log4j2 自带过滤日志-->
            <Logger name="net.sf.ehcache" level="error" />
            <Logger name="cn.hutool" level="error" />
            <Logger name="org.xnio" level="error" />
            <Logger name="io.undertow" level="error" />
            <Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
            <Logger name="org.apache.catalina.util.LifecycleBase" level="error" />
            <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
            <logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
            <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
            <Logger name="org.crsh.plugin" level="warn" />
            <logger name="org.crsh.ssh" level="warn"/>
            <Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />
            <Logger name="org.eclipse.jetty" level="error" />
            <Logger name="spark" level="error" />
            <logger name="org.apache.http" level="error"/>
        </loggers>
    </configuration>
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    在 GitHub 上编辑此页 (opens new window)
    #question#日志#log4j#log4j2
    最后更新: 2022/10/04, 16:10:00
    java基础相关
    SpringBoot封装starter并上传到maven仓库

    ← java基础相关 SpringBoot封装starter并上传到maven仓库→

    Theme by Vdoing | Copyright © 2022-2025 zdk | notes
    湘ICP备2022001117号-1
    川公网安备 51142102511562号
    本网站由 提供CDN加速/云存储服务
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式