接着上篇的代码,日志在不同环境下的配置也不一样,所以要分开配置,主要使用maven的profile
1.1 在pom.xml中添加
<profiles> <profile> <!-- 开发环境 --> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <env>dev</env> <jar-scope>compile</jar-scope><!--provided--> <!--<log-home>D:/gs-spring-boot-log</log-home>--> </properties> </profile> </profiles>
build下添加
<resources> <resource> <filtering>true</filtering> <directory>src/main/resources</directory> <includes> <include>${env}/*.properties</include> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> </resources>
1.2 之后在src/main/resources下面添加日志文件logback-spring.xml、config.properties配置:
其中,logback-spring.xml内容:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <property resource="@env@/config.properties" /> <timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss" /> <!-- 存放日志文件的要路径 --> <substitutionProperty name="LOG_HOME" value="${log-home}/@env@" /> <!--日志文件存入路径 --> <substitutionProperty name="PROJECT_NAME" value="${project-name}" /> <substitutionProperty name="LOG_HOME_SERVICE" value="${LOG_HOME}/${PROJECT_NAME}/service" /> <substitutionProperty name="LOG_HOME_ERROR" value="${LOG_HOME}/${PROJECT_NAME}/error" /> <substitutionProperty name="LOG_HOME_COMMON" value="${LOG_HOME}/${PROJECT_NAME}/common" /> <!-- ch.qos.logback.core.ConsoleAppender 控制台输出 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- service --> <appender name="serviceRolling" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME_SERVICE}.txt</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME_SERVICE}-%d{yyyy-MM-dd}.%i.log </fileNamePattern> <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <MaxFileSize>100MB</MaxFileSize> </TimeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- common --> <appender name="commonRolling" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME_COMMON}.txt</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME_COMMON}-%d{yyyy-MM-dd}.%i.log </fileNamePattern> <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <MaxFileSize>100MB</MaxFileSize> </TimeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- integration --> <appender name="errorRolling" 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> <file>${LOG_HOME_ERROR}.txt</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME_ERROR}-%d{yyyy-MM-dd}.%i.log </fileNamePattern> <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <MaxFileSize>100MB</MaxFileSize> </TimeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n</pattern> </encoder> </appender> <logger name="hello" level="INFO"> <appender-ref ref="serviceRolling" /> </logger> <!--<logger name="hello" level="INFO"> <appender-ref ref="commonRolling" /> </logger> <logger name="dao" level="DEBUG"> <appender-ref ref="serviceRolling" /> </logger>--> <!-- 日志级别 --> <root level="INFO"> <!--<appender-ref ref="console" />--> <appender-ref ref="errorRolling" /> </root> </configuration>
config.properties内容:
project-name=gs-spring-boot
log-home=D:/gs-spring-boot-log
经过以上步骤,配置已经好了,如果直接运行main方法是不行的,logback-spring.xml中的@env@是找不到的,因此要先执行maven命令
clean package -P dev
这样做是不是很麻烦呢?嗯。
idea执行main方法,会自动生成一个类似MyApplication(main方法所在类)的运行配置,edit configurations...编辑这个配置
运行之前执行maven命令,之后就可以直接运行main了