spring boot 项目指定 日志配置文件
在Spring Boot项目中,可以通过在application.properties
或application.yml
文件中指定日志配置文件来配置日志。
1. 使用application.properties
文件:
在application.properties
中,您可以使用以下属性来指定日志配置文件:
logging.config=classpath:custom-logback.xml
上述配置将告诉Spring Boot使用位于类路径下的custom-logback.xml
文件作为日志配置文件。您可以将文件路径更改为您自己的日志配置文件的路径。
2. 使用application.yml
文件:
在application.yml
中,您可以使用以下属性来指定日志配置文件:
logging:
config: classpath:custom-logback.xml
与上述application.properties
的配置相同,此配置将告诉Spring Boot使用位于类路径下的custom-logback.xml
文件作为日志配置文件。
请确保日志配置文件位于类路径下,或者根据需要指定正确的文件路径。
使用上述配置,您可以在Spring Boot项目中指定自定义的日志配置文件,以覆盖默认的日志配置。
logback-spring.xml 和 logback.xml 区别
方案一
在使用 Logback 作为日志框架时,logback-spring.xml
和 logback.xml
是两个常用的配置文件,它们在加载和处理配置方面略有不同。
-
logback-spring.xml:
logback-spring.xml
是专为 Spring Boot 项目准备的 Logback 配置文件。- 当使用 Spring Boot 时,如果存在
logback-spring.xml
文件,Spring Boot 会自动加载并替换默认的 Logback 配置。 logback-spring.xml
支持 Spring Boot 的特性和扩展,例如可以使用 Spring 的属性占位符${}
进行动态配置。- Spring Boot 在加载
logback-spring.xml
时,还会进行日志级别的自动配置,根据应用程序的application.properties
或application.yml
中的logging.level.*
配置来设置日志级别。 logback-spring.xml
的加载顺序优先于logback.xml
。
-
logback.xml:
logback.xml
是通用的 Logback 配置文件,适用于非 Spring Boot 项目或不需要 Spring Boot 特性的项目。- 如果存在
logback.xml
文件,它会被加载和使用,而忽略任何logback-spring.xml
。 logback.xml
配置中无法使用 Spring 的属性占位符,因为它不会经过 Spring 的处理。logback.xml
需要手动配置日志级别和其他相关设置,不会自动受到应用程序的其他配置文件影响。
总结:
- 如果使用 Spring Boot 项目,建议使用
logback-spring.xml
配置文件,以便享受 Spring Boot 的自动配置和属性占位符的特性。 - 对于非 Spring Boot 项目或不需要 Spring Boot 特性的项目,使用
logback.xml
配置文件即可。
需要注意的是,无论是 logback-spring.xml
还是 logback.xml
,它们的配置语法和元素都是相同的,可以根据具体需求进行配置。
方案二
logback-spring.xml
和 logback.xml
是用于配置 Logback 日志框架的文件,它们在使用方式和加载机制上有一些区别。
logback-spring.xml
是针对 Spring Framework 应用程序特定的 Logback 配置文件,它与 Spring 的集成提供了一些额外的功能和特性。当存在 logback-spring.xml
文件时,Spring Boot 应用程序会优先加载它。这个特定的文件名是为了利用 Spring Boot 的自动配置机制,可以通过在 logback-spring.xml
中使用 Spring 属性占位符,从应用程序的 application.properties
或 application.yml
文件中动态配置日志。这意味着您可以在运行时通过 Spring 的属性配置来更改 Logback 日志的行为。
相比之下,logback.xml
是通用的 Logback 配置文件,用于非 Spring 应用程序或不需要与 Spring 集成的应用程序。当不存在 logback-spring.xml
文件时,Logback 会尝试加载 logback.xml
文件。这个文件通常用于独立的 Java 应用程序或其他非 Spring 环境下的应用程序。
如果您使用的是 Spring Boot 框架,建议优先使用 logback-spring.xml
文件来配置 Logback,以获得更好的集成和动态配置的能力。如果您不使用 Spring Boot,或者不需要与 Spring 集成,那么可以使用 logback.xml
来配置 Logback。
spring boot 项目日志配置文件指定日志输入目录
在Spring Boot项目中,要指定日志文件的输出目录,您可以使用以下方法:
1. 使用application.properties
配置文件:
在application.properties
中,您可以使用以下属性来指定日志文件的输出目录:
logging.file.path=/path/to/logs
将/path/to/logs
替换为您希望日志文件输出的目录路径。
2. 使用application.yml
配置文件:
在application.yml
中,您可以使用以下属性来指定日志文件的输出目录:
logging:
file:
path: /path/to/logs
同样,将/path/to/logs
替换为您希望日志文件输出的目录路径。
请确保指定的目录具有适当的权限,以便应用程序能够在该目录中创建和写入日志文件。
通过上述配置,您可以将日志文件输出到指定的目录,而不是默认的日志目录。
日志文件配置案例
案例一
配置文件 logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>logback</contextName>
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!--按天生成日志-->
<appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Prudent>true</Prudent>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
applog/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.log
</FileNamePattern>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} -%msg%n
</Pattern>
</layout>
</appender>
<!-- logger节点,可选节点,作用是指明具体的包或类的日志输出级别,以及要使用的<appender>(可以把<appender>理解为一个日志模板)。addtivity:非必写属性,是否向上级loger传递打印信息。默认是true-->
<logger name="com.leshangju.project" additivity="false">
<appender-ref ref="console"/>
<appender-ref ref="logFile"/>
</logger>
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="logFile"/>
</root>
</configuration>
日志生成目录展示
案例二
配置文件 logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false" scanPeriod="60 seconds" debug="false">
<springProperty scope="context" name="logPath" source="gjsp.logs.path" defaultValue="${user.home}/data/app/cars-gjsp/logs"/>
<property name="APP_NAME" value="cars-gjsp"/>
<property name="LOG_HOME" value="data/app/gjsp/logs/${APP_NAME}"/>
<springProfile name="prod">
<property name="LOG_HOME" value="/${logPath}/${APP_NAME}"/>
</springProfile>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</layout>
</appender>
<appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${APP_NAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<MaxHistory>30</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
</layout>
</appender>
<logger name="org.springframework" level="info" additivity="false"/>
<logger name="io.swagger" level="OFF"/>
<logger name="springfox.documentation" level="OFF"/>
<logger name="io.lettuce" level="info" additivity="false"/>
<logger name="io.netty" level="info" additivity="false"/>
<logger name="org.apache.http.wire" level="info" additivity="false"/>
<logger name="jdbc.connection" level="OFF"/>
<logger name="jdbc.resultset" level="OFF"/>
<logger name="jdbc.resultsettable" level="OFF"/>
<logger name="jdbc.audit" level="OFF"/>
<logger name="jdbc.sqltiming" level="INFO"/>
<logger name="jdbc.sqlonly" level="OFF"/>
<logger name="org.hibernate.SQL" additivity="false">
<level value="info"/>
<appender-ref ref="console"/>
<appender-ref ref="appLogAppender"/>
</logger>
<!-- 2. 输出SQL 的参数到控制台和文件-->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" additivity="false">
<level value="info"/>
<appender-ref ref="console"/>
<appender-ref ref="appLogAppender"/>
</logger>
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="appLogAppender"/>
</root>
</configuration>
日志生成目录展示