SpringBoot成长笔记(二)配置文件及日志

目录

一、配置文件

二、日志配置


一、配置文件

  • 多个配置文件

#修改tomcat的配置
server.port=8089
server.tomcat.uri-encoding=utf-8

#多个配置文件
spring.profiles.active=dev
  • 自定义文件

SpringBoot新建工程的时候默认生成了application.properties文件,此文件可以自定义一些我们需要使用的配置参数,也可以用来修改springboot默认的参数。还有一种是已yml为后缀的配置文件。

#自定义属性
tcp.switch=true

 新建RestController,实现restful接口,然后浏览器中验证自定义的参数

package com.mhm.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 *
 * Created by MHm on 2018/8/7.
 */
@RestController
public class AlarmController {
    @Value("${tcp.switch}")
    private String tswitch;

    @RequestMapping(value = "/alarmSwitch")
    public String isSwitch(){
        return tswitch;
    }
}

运行java程序, 浏览器中输入restful接口的地址http://localhost:8089/alarmswitch

  •  

二、日志配置

  • 默认日志配置

SpringBoot默认使用的是logback的日志

#日志配置
logging.level.root=debug

代码中增加日志

 上面的代码中总是需要增加这样的代码,可以使用注解的方式替换,需要安装lombok插件

private final static Logger logger = LoggerFactory.getLogger(AlarmController.class);

 增加lombok的依赖,Reimport。

                <!--日志注解-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.16.20</version>
			<optional>true</optional>
		</dependency>
  •  自定义日志配置

日常的项目中为了好扩展,基本上使用自定义的日志配置文件去配置

logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy

log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml

log4j2:log4j2-spring.xml, log4j2.xml

推荐使用*-spring.*的配置方式,如果是springboot制定的文件名则不需要初始化,其他的需要初始化

  1. logback-spring.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="60 seconds" debug="true">
    <contextName>springbootdemo1</contextName>
    <property name="log.path" value="./logs/" />
    <substitutionProperty name="log.proj" value="${project.artifactId}" />
    <substitutionProperty name="log.base" value="logs/${log.proj}" />
    <substitutionProperty name="max.size" value="100MB" />
    <substitutionProperty name="total.size" value="100MB" />

    <jmxConfigurator />
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg [%thread] %n</pattern>
        </encoder>
       <!-- <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
        </layout>-->
    </appender>

    <!--输出到文件-->
    <appender name="infoFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/${log.proj}_info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <totalSizeCap>${total.size}</totalSizeCap>
        </rollingPolicy>
        <!--<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${log.base}/${log.proj}_info.%i.gz</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>20</maxIndex>
        </rollingPolicy>-->

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>${max.size}</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg [%thread] %n</pattern>
        </encoder>
    </appender>

    <appender name="errorFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/${log.proj}_error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <totalSizeCap>${total.size}</totalSizeCap>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>${max.size}</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg [%thread] %n</pattern>
        </encoder>
    </appender>

    <logger name="com.mhm.dao.mapper" level="debug" additivity="true">
        <appender-ref ref="console"/>
    </logger>

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

</configuration>

log4j2的配置,需要去掉spring-boot-starter-logging的依赖,增加log4j2的依赖。

                <!--去除 spring-boot-starter-logging -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- 添加log4j2 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-log4j2</artifactId>
		</dependency>

手动添加log4j2的依赖,如果有springboot版本的冲突,可以直接饮用log4j2的jar包。

                <!-- log4j2 start -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-api</artifactId>
			<version>2.8.2</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>2.8.2</version>
		</dependency>
		<!-- log4j2 end -->
  • log4j2-spring.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="error" monitorInterval="30">
    <properties>
        <property name="fileName">./log</property>
        <property name="fileSize">50MB</property>
    </properties>

    <!--先定义所有的appender -->
    <appenders>
        <!--这个输出控制台的配置 -->
        <Console name="stdout" target="SYSTEM_OUT">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
            <!--这个都知道是输出日志的格式 -->
            <PatternLayout pattern="%-d{yyyy-MM-dd HH:mm:ss} %5p - %m - %class{36}.%M(%F:%L) [%t:%r]%n"/>
        </Console>
        <!--Debug 日志配置 -->
        <RollingFile name="D" fileName="${fileName}/log111_debug.log"
                     filePattern="${fileName}/$${date:yyyy-MM}/log_debug-%d{MM-dd-yyyy}-%i.log.gz">
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%-d{yyyy-MM-dd HH:mm:ss} %5p - %m (%class{36}.%M:%L) [%t:%r]%n"/>
            <SizeBasedTriggeringPolicy size="${fileSize}"/>
        </RollingFile>
        <!--INFO 日志配置 -->
        <RollingFile name="I" fileName="${fileName}/log111_info.log"
                     filePattern="${fileName}/$${date:yyyy-MM}/log_info-%d{MM-dd-yyyy}-%i.log.gz">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%-d{yyyy-MM-dd HH:mm:ss} %5p - %m (%class{36}.%M:%L) [%t:%r]%n"/>
            <SizeBasedTriggeringPolicy size="${fileSize}"/>
        </RollingFile>
        <!--ERROR 日志配置 -->
        <RollingFile name="E" fileName="${fileName}/log111_error.log"
                     filePattern="${fileName}/$${date:yyyy-MM}/log_error-%d{MM-dd-yyyy}-%i.log.gz">
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%-d{yyyy-MM-dd HH:mm:ss} %5p - %m (%class{36}.%M:%L) [%t:%r]%n"/>
            <SizeBasedTriggeringPolicy size="${fileSize}"/>
        </RollingFile>

    </appenders>
    <loggers>
        <logger name="org" level="error" additivity="false">
            <appender-ref ref="E"/>
        </logger>
        <logger name="freemarker" level="error" additivity="false">
            <appender-ref ref="E"/>
        </logger>
        <logger name="com.opensymphony" level="error" additivity="false">
            <appender-ref ref="E"/>
        </logger>
       <!-- <logger name="org.springframework" level="error" additivity="false">
            <appender-ref ref="E"/>
        </logger>
        <logger name="o.a.k.clients" level="error" additivity="false">
            <appender-ref ref="E"/>
        </logger>
        <logger name="o.apache.catalina" level="error" additivity="false">
            <appender-ref ref="E"/>
        </logger>
        <logger name="o.a.c.c.C" level="error" additivity="false">
            <appender-ref ref="E"/>
        </logger>-->
        <root level="debug" includeLocation="true">
            <appender-ref ref="D"/>
            <appender-ref ref="stdout"/>
            <appender-ref ref="I"/>
            <appender-ref ref="E"/>
        </root>
    </loggers>
</configuration>

代码演示

package com.mhm.controller;

import lombok.extern.log4j.Log4j2;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by MHm on 2018/8/7.
 */
@Log4j2
@RestController
public class CarController {
    @RequestMapping(value = "/car")
    public String isSwitch(){
        log.trace("log4j2 trace");
        log.debug("log4j2 debug");
        log.info("log4j2 info");
        log.warn("log4j2 warn");
        log.error("log4j2 error");
        return "";
    }
}

 原因结果

 

三、小结

思考问题:

1、springboot配置文件的加载顺序。

2、源码下载

https://github.com/289562326/springbootdemo2

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以和你分享一些关于Spring Boot的学习笔记。 1. Spring Boot是什么? Spring Boot是一个基于Spring框架的快速开发框架,它能够帮助开发者快速搭建Spring项目,简化了Spring应用开发的繁琐过程,提高了开发效率。 2. Spring Boot的优点有哪些? Spring Boot的优点有很多,其中包括: - 简化了Spring应用的开发,提高了开发效率; - 集成了很多常用的第三方库,减少了依赖管理的工作; - 自动化配置,减少了配置文件的编写工作; - 内嵌了Tomcat等Web容器,使得应用的部署更加便捷; - 提供了Actuator等模块,使得应用的监控和管理更加便捷。 3. Spring Boot的核心注解有哪些? Spring Boot的核心注解包括: - @SpringBootApplication:标注在启动类上,代表这是一个Spring Boot应用; - @Controller:标注在控制器类上,处理HTTP请求; - @Service:标注在服务类上,用于处理业务逻辑; - @Repository:标注在数据访问类上,用于数据库访问; - @Configuration:标注在配置类上,用于配置Spring应用上下文。 4. Spring Boot配置文件有哪些? Spring Boot配置文件包括: - application.properties:基于Key-Value的属性文件; - application.yml:基于YAML语法的配置文件。 5. 如何使用Spring Boot集成数据库? 使用Spring Boot集成数据库需要完成以下几个步骤: - 在pom.xml中添加相关数据库依赖; - 配置数据源和JPA/Hibernate等相关配置; - 编写实体类和DAO层代码。 以上就是一些关于Spring Boot的学习笔记,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值