接着上篇的代碼,日志在不同環境下的配置也不一樣,所以要分開配置,主要使用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了