logback springboot 相对路径
时间: 2023-07-05 17:31:50 浏览: 151
在Spring Boot项目中使用logback时,可以通过指定相对路径来配置logback.xml文件的位置。相对路径是相对于项目根目录的。
例如,如果您的项目根目录是"/opt/project",并且您的logback.xml文件位于"/opt/project/src/main/resources"目录下,则可以通过以下方式指定相对路径:
```xml
<configuration>
<property name="LOG_HOME" value="./logs"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/myapp.log</file>
...
</appender>
...
</configuration>
```
在上面的配置中,我们通过定义一个名为"LOG_HOME"的属性来指定日志文件的存储路径。这个属性的值是"./logs",它表示日志文件存储在项目根目录下的"logs"目录中。
注意:在Windows系统中,相对路径的分隔符为"\",而不是"/"。因此,在Windows系统中,您需要将相对路径中的"/"替换为"\"。
相关问题
springboot logback.xml配
置示例:
1. 在src/main/resources下创建logback.xml文件
2. 添加以下配置:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="/var/log/" />
<!--控制台输出-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!--按照每天生成日志文件-->
<appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}spring-boot-log-%d{yyyy-MM-dd}.log</fileNamePattern>
<!--日志保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!--定义日志输出级别-->
<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="dailyRollingFileAppender" />
</root>
</configuration>
```
这里我们定义了两个输出目标,一个是控制台输出,一个是按照每天生成日志文件。其中,日志文件会保存在`/var/log/`目录下,文件名为`spring-boot-log-%d{yyyy-MM-dd}.log`,其中`%d{yyyy-MM-dd}`表示按照每天生成日志文件。
在代码中使用日志:
```java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DemoController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
public void demoMethod() {
logger.debug("debug log");
logger.info("info log");
logger.warn("warn log");
logger.error("error log");
}
}
```
这里我们通过`LoggerFactory.getLogger(this.getClass())`获取到了日志对象,然后通过`logger.debug/info/warn/error("log message")`输出不同级别的日志。
注意:在使用`LoggerFactory.getLogger(this.getClass())`获取日志对象时,要传入当前类的class对象,这样才能正确显示出日志信息所在的类。
springboot2整合logback-spring.xml
1. 添加logback-spring.xml文件
在src/main/resources目录下创建一个名为logback-spring.xml的文件,将下面的代码复制并粘贴进去。
```
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- 确定打印的日志级别 -->
<timestamp key="byDay" datePattern="yyyyMMdd" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} -%msg%n</pattern>
</encoder>
</appender>
<!-- 输出到本地文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/springboot2.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/springboot2.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} -%msg%n</pattern>
</encoder>
</appender>
<!-- root级别日志处理器 -->
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
<!-- 配置包日级别日志处理器 -->
<logger name="com.example" level="debug" additivity="false">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</logger>
</configuration>
```
2. 配置文件参数
在application.properties或application.yml文件中添加以下参数:
- logging.config:指定logback-spring.xml配置文件路径,如果不指定将使用默认的日志配置。
- logging.path:指定日志文件存放路径,必须是一个相对目录。例如:logging.path=log 相当于在项目根目录下创建了一个log文件夹,日志将输出到该文件夹中。如果没有设置该参数,则日志将输出到控制台。
```
#以配置文件的方式加载日志框架,默认使用logback-spring.xml作为配置文件
logging.config=classpath:logback-spring.xml
#指定日志存放的相对路径
logging.path=log
```
3. 在代码中使用日志输出
在需要输出日志的类中使用注入方式加载日志,在方法中使用对应的日志级别输出日志。
```
@Component
public class TestController {
private static final Logger logger = LoggerFactory.getLogger(TestController.class);
@RequestMapping("/test")
public String test() {
logger.debug("这是一条debug日志");
logger.info("这是一条info日志");
logger.warn("这是一条warn日志");
logger.error("这是一条error日志");
return "test";
}
}
```
运行项目,打开控制台或者查看日志文件,可以看到日志已经输出成功。
阅读全文