java打日志

1.为什么要用日志?system.out.println()不好吗?
system.out.println()只能用在控制台,在开发环境可以这样,但是项目上线到生产环境后,是没有控制台的。如果生产上出现问题,我们该怎么来找问题呢?数据该怎样恢复呢?
这时候就需要用到日志。

2.日志目的?
记录关键操作的轨迹。记录具体时间具体数据具体操作。万一生产出错方便排查。

3.日志门面框架(相当于日志框架的父类)?
很多时候我们做项目都是从简单到复杂,也就是我们很可能一开始使用的是 JDKLog,之后业务复杂了需要使用 Log4J,这时候我们如何将原来写好的日志用新的日志框架输出呢?


一个最死板的方法就是一行行代码修改,把之前用 JDKLog 的日志代码全部修改成 Log4J 的日志接口。
但是这种方式不仅效率低下,而且做的工作都是重复性的工作,这怎么能忍呢。

在实际的项目应用中,有时候可能会从一个日志框架切换到另外一个日志框架的需求,这时候往往需要在代码上进行很大的改动。为了避免切换日志组件时要改动代码,这时候一个叫做 SLF4J(Simple Logging Facade for Java,即Java简单日志记录接口集)的东西出现了。commons-loggin、slf4j 只是一种日志抽象门面,不是具体的日志框架。

4.日志框架?
用日志门面----->面向接口编程。代码中使用接口类,需要换日志框架时不用换代码。
日志框架实现了日志门面的吗?----->实现了的,如日志框架LOG4J,LOGBACK,是根据SLF4J门面来设计的

5.日志代码?
表面上用的日志门面框架的类,实际实现是日志框架。


6.日志框架的配置文件(比如说logback)?

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_HOME" value="/home" />
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %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}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>

        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>


7.日志测试
注意:Logger,LoggerFactory为日志门面的类。

  private final static Logger logger = LoggerFactory.getLogger(SpringbootStudyLoggerApplicationTests.class);
    @Test
    public void log() {
        logger.info("==============================================");
        logger.error("==============================================");
        logger.debug("==============================================");
    }
发布了56 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40726316/article/details/102835284