log4j:WARN Please initialize the log4j system properly的解决办法

背景:很多次创建新项目log4j都出现以下2个警告:

log4j:WARN No appenders could be found for logger (org.springframework.boot.ApplicationServletEnvironment).
log4j:WARN Please initialize the log4j system properly

网上查询都是在说缺少以下jar包,要么缺少logback-core 要么缺少 logback-classic要么缺少slf4j-log4j12,结果全加了都无效

最终解决办法:把以上3个jar包都干掉,根本不需要,只需配置一个xml:

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 监听器,指定日志文件存放目录 -->
    <contextName>logback</contextName>

    <!--控制台输出内容的颜色转换以及格式-->
    <substitutionProperty name="logging.pattern.console"
                          value="%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
    <!--日志文件输出内容的格式-->
    <substitutionProperty name="logging.pattern.file"
                          value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>

    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>

    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!--控制台使用layout节点-->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
                ${logging.pattern.console}
            </pattern>
        </layout>
        <!--输出哪个类第几行-->
        <encoder>  <!-- 日志格式 -->
     	 	<pattern>%date-%level-[%F:%L]-[%thread]-%msg%n</pattern> ##F 类名 L 行数
        </encoder>
    </appender>

    <!--按天生成日志-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <Prudent>true</Prudent>
        <!--滚动策略,我配置了按天生成日志文件-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--相对路径,生成的文件就在项目根目录下--> <!--不添加 D:/就不会在d盘下生成,就会在jar包同盘下生成-->
            <FileNamePattern>/项目名Log/%d{yyyy-MM}/%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--注意超过30天的日志文件会被删除,即使已经按天分开也会删除-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <!--日志文件里只保存ERROR及以上级别的日志-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <!--文件使用encoder节点-->
        <encoder>
            <Pattern>
                ${logging.pattern.file}
            </Pattern>
        </encoder>
    </appender>

    <!--这个logger里的配置相当于之前yml里的logging.level.com.xxx: trace-->
    <!--additivity的作用true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出-->
    <!--而这个logger里没配置appender,所以得交给root打印-->
    <!--所以com.xxx 包里的日志从TRACE级别开始-->
    <!--其他包里的日志根据root的配置从INFO级别开始打印-->
    <logger name="com.xxx" level="TRACE" additivity="true"></logger>

<!--com.xxx的xxx记得改成自己实际项目根路径 -->

    <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </root>

</configuration>

如果使用了mybatis,就在application.properties或yml中加上个:

XML 复制代码
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

如果是mybatis-plus就改为:

XML 复制代码
mybatis-plus:
    mapper-locations: classpath:mapper/*.xml
#打印sql
    configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

再次启动项目发现警告信息没了

相关推荐
灯澜忆梦12 分钟前
【Linux】#5 | 文件与目录基础操作命令
java·linux·运维
字节跳动的猫15 分钟前
LikeShop 搜索功能优化二开:中文分词、商品权重排序与搜索热词管理
android·java·中文分词
计算机毕设定制辅导-无忧学长15 分钟前
《基于微信小程序的校园文化活动报名与管理系统》
java·spring boot·微信小程序·uniapp·校园文化活动报名与管理小程序
靠沿19 分钟前
MySQL数据库基础——索引的使用&alter、explain关键字
java·数据库·mysql
96245620 分钟前
餐饮 SaaS 优惠券系统架构演进(七)营销定价引擎设计:活动、会员价、优惠券、买赠如何在同一 PriceQuote 中可解释地组合
java·运维·算法
码匠许师傅25 分钟前
【C++三方组件】redis-plus-plus:现代 Redis C++ 客户端
java·c++·redis
ab12376826 分钟前
MQTT笔记
java·笔记·mqtt·学习
二宝哥31 分钟前
【问题】代理转发到后端使用request.getRequestURL()地址没有端口
java
霸道流氓气质36 分钟前
HashiCorp Vault 与云 KMS 入门实战:动态密钥、SecretLeaseContainer 与 Java 集成完整指南
java·开发语言
wuminyu39 分钟前
stackChunkOop内部结构与GC屏障的配合工作原理剖析
java·linux·c语言·jvm·c++