侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130555 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

日志框架

2023-09-21 星期四 / 0 评论 / 0 点赞 / 26 阅读 / 4440 字

什么是日志框架 是一套能实现日志输出的工具包 能够描述系统运行状态的所以时间都可以算作日志 比如用户下线,接口超时,数据库SQL操作。 日志框架能力: 定制输出目标 定制输出格式 携带上下文信

什么是日志框架

是一套能实现日志输出的工具包
能够描述系统运行状态的所以时间都可以算作日志 比如用户下线,接口超时,数据库SQL操作。

日志框架能力:

  1. 定制输出目标
  2. 定制输出格式
  3. 携带上下文信息
  4. 运行时选择性输出
  5. 灵活的配置
  6. 优异的性能

日志框架的选择

日志门面:JCL、SLF4J、jboos-logging
日志实现: log4j 、log4j2 、logback 、 JUL

使用

import org.junit.Test;import org.junit.runner.RunWith;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)@SpringBootTestpublic class LoggerTest {    private final static Logger loggger = LoggerFactory.getLogger(LoggerTest.class);    @Test    public void test1(){        loggger.info("info....");        loggger.debug("debug....");        loggger.error("error....");    }}

引入lombok,可以让我们在日志的使用上更便捷,直接使用注解@Slf4j 不必在每个类创建一个日志对象; intelliJ 注解@SlF4J后找不到log解决方法:引入lombok的pom文件,在pulgins里面下载lombok插件;

import lombok.extern.slf4j.Slf4j;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)@SpringBootTest@Slf4jpublic class LoggerTest {    @Test    public void test1() {        String name = "xxxx";        String password = "123456";        log.debug("debug...");        log.info("name: " + name + " ,password: " + password);        log.info("name: {}, password: {}", name, password);        log.error("error...");        log.warn("warn...");    }}

Logback的使用和配置

有2种,application.yml 或者logbook-spring.xml 比如我有下面的需求,区分error和info ,每天产生一个文件

logging:  pattern:    console: "%d - %msg%n"  path: /var/log/tomcat/  file: /var/log/tomcat/sell.log  level:    com.imooc.LoggerTest: debug
<?xml version="1.0" encoding="UTF-8" ?><configuration>    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">        <layout class="ch.qos.logback.classic.PatternLayout">            <pattern>                %d - %msg%n            </pattern>        </layout>    </appender>    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>ERROR</level>            <onMatch>DENY</onMatch>            <onMismatch>ACCEPT</onMismatch>        </filter>        <encoder>            <pattern>                %msg%n            </pattern>        </encoder>        <!--滚动策略-->        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <!--路径-->            <fileNamePattern>/var/log/tomcat/sell/info.%d.log</fileNamePattern>        </rollingPolicy>    </appender>    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">            <level>ERROR</level>        </filter>        <encoder>            <pattern>                %msg%n            </pattern>        </encoder>        <!--滚动策略-->        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <!--路径-->            <fileNamePattern>/var/log/tomcat/sell/error.%d.log</fileNamePattern>        </rollingPolicy>    </appender>    <root level="info">        <appender-ref ref="consoleLog" />        <appender-ref ref="fileInfoLog" />        <appender-ref ref="fileErrorLog" />    </root></configuration>

广告 广告

评论区