Spring Boot项目相关日志文件输出(配置文件为application.properties)

本文介绍了如何在Spring Boot项目中配置日志文件输出,包括在`application.properties`中设置日志级别和路径,以及使用logback.xml进行详细配置。通过示例展示了在代码中创建日志对象并使用`logger.info()`和`logger.error()`进行日志打印。日志文件将被保存在指定的logs目录下。

一.日志打印的使用

1.日志对象初创建,在类中创建日志打印对象,类似在类中定义全局变量,如图1:

     /**
     * 日志
     */
    private static final Log logger = LogFactory.getLog(_className);

图1

 2.日志对象使用,在方法里面正常运行的代码块使用logger.info();,在try-catch捕获异常的catch模块使用logger.error();如图2。

图2

二.日志文件的生成输出

1.在application.properties配置文件下设置,如图3:

#打印日志文件

#logging.level.shortMessageService=debug

#日志生成方式效果配置文件

logging.config=classpath:logback.xml

# 默认该目录下会生成spring.log logging.file.path 和 logging.file.name 2选1,如果都配置,以后者为准

logging.file.path=logs

#日志文件路径(默认在项目根目录)

#logging.file.name=./logs/my-project.logs

 

图3

2.在resources目录下放logback.xml日志生成文件,如图 4:

图 4

logback.xml内容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <logger name="org.springframework.web" level="debug"/>

    <!-- 定义日志文件 输入位置 -->
    <property name="logDir" value="logs" />
    <!-- 日志最大的历史 30天 -->
    <property name="maxHistory" value="30"/>

    <!-- 控制台输出日志 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -%msg%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>

    <!-- ERROR级别日志 -->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}\%d{yyyyMMdd}\error.log</fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
        <append>false</append>
        <prudent>false</prudent>
    </appender>

    <!-- WARN级别日志 -->
    <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}\%d{yyyyMMdd}\warn.log</fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
        <append>false</append>
        <prudent>false</prudent>
    </appender>

    <!-- INFO级别日志 -->
    <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}\%d{yyyyMMdd}\info.log</fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
        <append>false</append>
        <prudent>false</prudent>
    </appender>

    <!-- DEBUG级别日志 -->
    <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}\%d{yyyyMMdd}\debug.log</fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
        <append>false</append>
        <prudent>false</prudent>
    </appender>

    <!-- root级别  DEBUG -->
    <root level="INFO">
        <!-- 控制台输出 -->
        <appender-ref ref="STDOUT" />
        <!-- 文件输出 -->
        <appender-ref ref="ERROR" />
        <appender-ref ref="INFO" />
        <appender-ref ref="WARN" />
        <appender-ref ref="DEBUG" />
    </root>
</configuration>

在我们项目启动后,我们就可以看到日志文件生成的位置,如图5:

图5 

最后,本文记录博主的开发历程,也供大家参考,有何不足之处请大家批评指正,谢谢大家(狗头保命)。

### 配置Spring Boot中的`application.properties`文件Spring Boot项目中,`application.properties`文件用于定义应用程序的配置属性。该文件通常位于`src/main/resources`目录下,并且默认情况下,Spring Boot会自动加载名为`application.properties`的配置文件[^1]。 #### 1. 基本配置示例 以下是一个典型的`application.properties`文件配置内容,涵盖了服务器端口、应用程序名称、日志级别等常见设置: ```properties # 设置服务器端口 server.port=8080 # 设置应用程序名称 spring.application.name=my-springboot-app # 配置日志级别 logging.level.org.springframework=INFO logging.level.com.example=DEBUG # 配置数据源 spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=secret spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 配置JPA spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect ``` 这些配置项可以控制Spring Boot应用的行为,例如数据库连接、日志输出、服务器端口等。 #### 2. 自定义配置文件名称 如果希望使用非默认名称的配置文件(如`config.properties`),可以通过设置`spring.config.name`属性来指定配置文件名称。例如,在命令行启动时添加如下参数: ```bash --spring.config.name=config ``` 或者在代码中通过`SpringApplication`进行设置: ```java SpringApplication app = new SpringApplication(MyApplication.class); app.setDefaultProperties(Collections.singletonMap("spring.config.name", "config")); app.run(args); ``` 这种方式允许使用自定义的配置文件名,而不依赖于默认的`application.properties`文件名[^2]。 #### 3. 多环境配置 Spring Boot支持多环境配置,可以通过`spring.profiles.active`属性指定当前激活的配置文件。例如,可以在`resources`目录下创建多个配置文件: - `application-dev.properties`(开发环境) - `application-prod.properties`(生产环境) 然后在主配置文件`application.properties`中指定当前激活的环境: ```properties spring.profiles.active=dev ``` 这样,Spring Boot会自动加载`application-dev.properties`中的配置,实现不同环境下的差异化配置[^1]。 #### 4. 自定义属性 除了使用Spring Boot内置的配置项外,还可以在`application.properties`中定义自定义属性。例如: ```properties myapp.title=My Spring Boot Application myapp.description=This is a sample application ``` 然后在Java代码中通过`@Value`注解或`Environment`对象读取这些属性: ```java @Value("${myapp.title}") private String title; @Value("${myapp.description}") private String description; ``` 这种方式允许开发者在配置文件中定义业务相关的自定义参数,并在代码中灵活使用[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值