idea中配置Lombok + Logback + Slf4j打印日志(附所有踩坑记录)

本文介绍非spring项目中利用Lombok + Logback + Slf4j记录日志,并附上所有的踩坑记录

本文环境

  • macos
  • Idea2019.2

配置过程

  • 首先在idea中下载lombok插件

    idea中配置Lombok + Logback + Slf4j打印日志(附所有踩坑记录)_第1张图片

  • 在pom.xml文件中引入Lombok,Logback,Slf4j依赖

    				<dependency>
                <groupId>org.slf4jgroupId>
                <artifactId>slf4j-apiartifactId>
                <version>1.7.25version>
            dependency>
    
            
            <dependency>
                <groupId>org.projectlombokgroupId>
                <artifactId>lombokartifactId>
                <version>1.18.12version>
                <scope>providedscope>
            dependency>
    
            <dependency>
                <groupId>ch.qos.logbackgroupId>
                <artifactId>logback-classicartifactId>
                <version>1.2.3version>
            dependency>
    
  • 在项目中的resources文件夹中添加logback,xml配置文件

    
    <configuration debug="false">
        
        <property name="LOG_HOME" value="/logs" />
        
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                
    
                <pattern>%d{yyyy-MM-dd HH:mm:ss:SS} %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{50}) - %cyan(%msg%n)pattern>
            encoder>
        appender>
        
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                
                <FileNamePattern>${LOG_HOME}/provider.log.%d{yyyy-MM-dd}.logFileNamePattern>
                
                <MaxHistory>30MaxHistory>
            rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
            encoder>
            
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>10MBMaxFileSize>
            triggeringPolicy>
        appender>
    
        
        <root level="INFO">
            <appender-ref ref="STDOUT" />
        root>
    configuration>
    
  • 编写代码测试

    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j
    public class ProviderStart {
    
        public static void main(String[] args) {
    
            log.debug("输出DEBUG级别日志");
            log.info("输出INFO级别日志");
            log.warn("输出WARN级别日志");
            log.error("输出ERROR级别日志");
    
        }
    }
    

    输出为

踩过的坑

看上去简简单单几步就完成了,然后并不是,接下来附上踩过的坑以及解决方法

idea中plugins的marketplace直接打不开

​ 在idea中使用lombok需要在plugins中的marketplace中下载插件,然而我下载时marketplace迟迟无法连接上

​ 我们需要在设置中的Appearance & Behavior --> System Settings --> Http Proxy中选择Auto-detect proxy settings勾选Automatic proxy configuration URL选项并填写url为http://127.0.0.1:1080,重启idea

idea中配置Lombok + Logback + Slf4j打印日志(附所有踩坑记录)_第2张图片

代码运行成功,但是不显示日志信息

​ 也是很邪门的一种情况,代码没错,但是不显示log打印的信息。

​ 解决方案为,在Build,Execution,Deployment–>compiler–>Annotation Processors中勾选Enable annotation processing,重启idea

idea中配置Lombok + Logback + Slf4j打印日志(附所有踩坑记录)_第3张图片

多个Slf4j冲突

报错信息如下

SLF4J Warning: Class Path Contains Multiple SLF4J Bindings
.....

​ 说明是jar包冲突了,maven仓库中可能同时包含了log4j,logback,然后slf4j在程序运行时,不知道binding哪一个jar包。

解决方案为:在maven仓库中删除其中一个jar包,只保留一个即可。

你可能感兴趣的:(解决错误,环境搭建)