首页 > 其他分享 >SpringBoot中日志的使用

SpringBoot中日志的使用

时间:2023-04-09 13:33:34浏览次数:46  
标签:logging SpringBoot spring boot file 使用 日志


springboot 默认就是使用SLF4J作为日志门面,logback作为日志实现来记录日志的

文章目录

  • 1. SpringBoot 中的日志设计
  • 2. SpringBoot 日志使用

1. SpringBoot 中的日志设计

  • springboot中的日志
<dependency>
	<artifactId>spring-boot-starter-logging</artifactId>
	<groupId>org.springframework.boot</groupId>
</dependency>
  • 依赖关系图:

总结:

  1. springboot 底层默认使用 logback 作为日志实现
  2. 使用了 SLF4J 作为日志门面
  3. 将 JUL 也转换成 slf4j
  4. 也可以使用 log4j2 作为日志门面,但是最终也是通过slf4j 调用 logback

2. SpringBoot 日志使用

  1. 在 SpringBoot 中测试打印日志
@SpringBootTest
class SpringbootLogApplicationTests {

    public static final Logger LOGGER = LoggerFactory.getLogger(SpringbootLogApplicationTests.class);

    @Test
    void contextLoads() {
        // 打印日志信息
        LOGGER.error("error");
        LOGGER.warn("warn");
        LOGGER.info("info"); //默认日志级别
        LOGGER.debug("debug");
        LOGGER.trace("trace");

        // log4j 使用桥接器切换为 slf4j 门面 和 logback 日志实现
        org.apache.logging.log4j.Logger logger = LogManager.getLogger(SpringbootLogApplicationTests.class);
        logger.info("log4j2 info");
    }

}
  1. 修改默认的日志配置

logging.file.path 和 logging.file.name 的区别:

  1. logging.file.path:可以指定日志文件的路径,而不能指定名字,最后输出的文件名字默认为 spring.log
  2. logging.file.name:可以指定日志文件的路径与名称,最后日志会输出到你命名的文件中

配置文件中二者同时存在不能同时生效,在配置了两者的情况下,以 logging.file.name 的配置为准

# 指定自定义 logger 对象日志级别
logging.level.com.xdr630=trace

# 指定控制台输出消息的格式
logging.pattern.console=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread] %msg %n

# 指定日志文件存放的目录,不能指定文件名,默认的文件名为 spring.log
#logging.file.path=E:/logs

# 指定日志文件存放的路径和文件名
logging.file.name=E:/logs/xdr.log

# 指定日志文件的消息格式
logging.pattern.file=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread] %msg %n

SpringBoot中日志的使用_spring boot


SpringBoot中日志的使用_spring boot_02

  1. 指定配置
  • 给类路径下放上每个日志框架自己的配置文件,SpringBoot 就不使用默认的配置了

日志框架

日志框架

Logback

logback-spring.xml , logback.xml

Log4j2

log4j2-spring.xml , log4j2.xml

JUL

logging.properties

  1. 使用SpringBoot解析日志配置
  • logback-spring.xml:由SpringBoot解析日志配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L %thread --- %m %n"></property>

    <!--控制台日志输出的 appender-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!--控制台输出流对象:默认 System.out 改为 system.err-->
        <target>System.err</target>
        <!--日志消息格式配置-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <springProfile name="dev">
                <pattern>${pattern}</pattern>
            </springProfile>
            <springProfile name="pro">
                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L %thread - %m %n</pattern>
            </springProfile>
        </encoder>
    </appender>


    <!--自定义 logger 对象,additivity="false" 自定义logger对象是否继承 root logger-->
    <logger name="com.xdr630" level="info" additivity="false">
        <appender-ref ref="console"></appender-ref>
    </logger>

</configuration>
  • application.properties
# 指定项目使用的具体环境
spring.profiles.active=dev

SpringBoot中日志的使用_spring_03

5、将日志切换为 log4j2

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <!--排除logback-->
        <exclusion>
            <artifactId>spring-boot-starter-logging</artifactId>
            <groupId>org.springframework.boot</groupId>
        </exclusion>
    </exclusions>
</dependency>

<!--使用 log4j2 的日志启动器-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
  • 再添加对应的 log4j-spring.xml 配置文件即可


标签:logging,SpringBoot,spring,boot,file,使用,日志
From: https://blog.51cto.com/xdr630/6178804

相关文章

  • 【Java】FileInputStream和FileOutputStream基本使用
    文章目录InputStream-字节输入流1.FileInputStream介绍2.FileOutputStream介绍3.文件的拷贝IO流-体系图文件VS流InputStream-字节输入流InputStream抽象类是所有类字节输入流的超类InputStream常用的子类FileInputStream:文件输入流BufferedInputStream:缓冲字节输入流O......
  • 【Java】FileReader和FileWrite基本使用
    文章目录1.FileReader和FileWriter是字符流,即按照字符来操作IO2.FileWriter常用方法3.案例演示1.FileReader和FileWriter是字符流,即按照字符来操作IOFileReader相关方法:newFileReader(File/String)read:每次读取单个字符,返回该字符,如果到文件末尾返回-13)read(char[):批量......
  • GitHub Actions:从使用action操作到自定义action操作
    (目录)1、使用action操作文档https://docs.github.com/zh/actions/quickstart.github/workflows/github-actions-demo.ymlname:GitHubActionsDemorun-name:${{github.actor}}istestingoutGitHubActions......
  • CommunityToolkit.Mvvm8.1 viewmodel使用-旧式写法(2)
     本系列文章导航https://www.cnblogs.com/aierong/p/17300066.htmlhttps://github.com/aierong/WpfDemo(自我Demo地址)  0.说明CommunityToolkit.Mvvm8.1有一个重大更新的功能:源生成器功能,它极大简化我们的mvvm代码但是本篇先总结一下原写法,下篇再总结源生成器......
  • 开源.NetCore通用工具库Xmtool使用连载 - 加密解密篇
    【Github源码】《上一篇》详细介绍了Xmtool工具库中的正则表达式类库,今天我们继续为大家介绍其中的加密解密类库。在开发过程中我们经常会遇到需要对数据进行加密和解密的需求,例如密码的加密、接口传输数据的加密等;当前类库中只封装了Base64、AES两种加密解密方法,因为C#提供了几......
  • PLECS参数扫描使用
    程序运行输出窗口: 脚本程序窗口: 点击+号即可新建脚本,点击run即可运行脚本,在程序运行输出窗口即可观察程序运行结果。脚本程序如下:modelFileName=plecs('get','','CurrentCircuit')%获取仿真电路文件名plecs('get',[modelFileName'/pwm'])%获取当前模块参数fs=200e3:5......
  • html页面里面的button标签使用@click属性时,无法定位到Vue的method里面
    问题解决就很离谱,都是按照网上的教程来的,一直无法定位,之后跟着加上了div标签,加上了id属性,方法还是灰白色,调用不了;后来直接将el属性名称更改掉了,没想到这样就成功识别到了,反正就是逻辑没有出问题,最后也达到期望值了。......
  • 卡饭 双拼 输入法的使用
    指法练习双拼使用中,需要盲打训练指法的字词(用二码输入,熟练再熟练!)对知道报道菜板到家代表从不必须不再才行凑合下次产生生成新现在对这爆发存在着音乐轴心社会每个成员不断吓着总统进一步下周瑕......
  • Git 新手使用学习手册
    目录一、Git概述1.Git介绍2.Git安装二、Git分区1.三大分区和三大状态(1)存储三大分区(2)文件三大状态2.分区转换指令2.分区对比指令三、Git配置1.用户配置2.远程仓库配置(1)生成SSHkey(2)GitHub上添加SSHkey四、Git本地操作1.创建本地仓库2.版本回退(1)以版本号实现(2)以标签实现3.......
  • .net7使用aot
    1.升级VSvs2022社区版本17.5.3后可用2.vs安装C++   3.添加aot配置<PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net7.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nu......