java打日志

mac2024-04-07  32

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("=============================================="); }

 

最新回复(0)