一、日志框架:

           JUL、JCL、Jboss-logging、logback、log4j、log4j、log4j2、slf4j

日志抽象层 日志实现
JCL、SLF4J、jboos-logging Log4J、JUL、Log4j2、Logback

          springBoot 底层是spring框架 spring框架默认是用jcl,springBoot选用 SLF4j和logback

 

二、SLF4J使用

         在开发的时候,日志记录方法调用的应该是抽象层而不是具体实现层 ,在实际观察到代码实现中开发也是这么做的

         每个日志的实现框架 都有自己的配置文件 使用slf4j以后 配置文件还是做成日志实现框架的配置文件

三、遗留问题

       例如a系统使用 slf4j+logback,spring(commons-logging)、Hibernate(jboss-logging) 、MyBatis、xxx

       统一日志记录,即使是别的框架统一使用 slf4j 进行输出

       jcl-over-slf4j 又做了一层适配

       

 

 

 

     

      如何让系统中所有的日志 都统一到slf4j

        1、将系统中其他日志框架先排除出去

        2、用中间包来替换原有的日志框架

        3、我们导入slf4j其他的实现

        创建springboot项目 根据maven的依赖关系,springboot已经自动引入了中间的适配层

 

 

 

   四、如果我们要引入其他框架

          一定要把这个框架的默认日志依赖移除掉

 

 

  五、配置

           1、properties文件

   

server.port=17777
logging.level.com.example = trace

# 指定日志文件输入 路径 如果不指定路径则在当前项目下生成 springboot.log日志

#logging.file.path=/logs

#logging.file.name=springBootLog

## 在控制台输出的日志格式
#logging.pattern.console=%d{yyyy-MM-dd}  [%thread%]  %-5level  %logger{50} - %msg%m
#
## 指定文件汇总日志输入的格式
#logging.pattern.file=%d{yyyy-MM-dd} === [%thread%] === %-5level === %logger{50} === %msg%m

    

 

        2、使用 logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">

<contextName>logback</contextName>

<property name="log.path" value="/Users/yuanxu/IdeaProjects/slf4j-demo/logs/sit.log" />



<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- <filter class="com.example.logback.filter.MyFilter" /> -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!-- <level>ERROR</level> 可以省略不写 -->
<!-- <level>ERROR</level>-->
</filter>
<encoder>
<!--          
日志输出格式
%d 表示日期时间
%thread 表示线程名
%-5level 级别从左显示5个字符宽度
%logger{50} 标识logger名字最长50个长度 否则按照句点分割
%msg 日志消息
%n 换行符

-->

<pattern>%d{yyyy-MM-dd} %contextName [%thread] %-5level %logger{36} ---> [%file : %line]- %msg%n
</pattern>
</encoder>
</appender>

<appender name="file"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}</file>

<!-- rollingPolicy 指定文件是滚动的-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>
%date %level [%thread] %logger{36} [%file : %line]- %msg%n
</pattern>
<!-- <pattern>-->
<!-- ${log.path}.[%file : %line]-->
<!-- </pattern>-->
</encoder>
</appender>

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

<logger name="com.example.slf4j-demo" level="warn" />

</configuration>

   logback-spring.xml  则变成由spring识别 可以使用spring配置文件(yml)中的profiles

     

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">

    <contextName>logback</contextName>

    <property name="log.path" value="/Users/yuanxu/IdeaProjects/slf4j-demo/logs/sit.log" />



    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- <filter class="com.example.logback.filter.MyFilter" /> -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!--     <level>ERROR</level>  可以省略不写       -->
<!--            <level>ERROR</level>-->
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd} %contextName [%thread] %-5level %logger{36} ---> [%file : %line]- %msg%n
            </pattern>
        </encoder>
    </appender>

    <appender name="file"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}</file>

<!--        rollingPolicy 指定文件是滚动的-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <springProfile name="dev">
                
            <pattern>
                %date %level [%thread] %logger{36} [%file : %line]- %msg%n
            </pattern>
<!--            <pattern>-->
<!--               ${log.path}.[%file : %line]-->
<!--            </pattern>-->
        </springProfile>>

            <springProfile name="!dev">

                <pattern>
                    %date *** %level *** [%thread] %logger{36} [%file : %line]- %msg%n
                </pattern>
            </springProfile>>
        </encoder>
    </appender>

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

    <logger name="com.example.slf4j-demo" level="warn" />

</configuration>

  

 

原文地址:http://www.cnblogs.com/yuan-x/p/16928929.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性