<property scope="context" name="logHome" value="templogs"/>
<springProperty scope="context" name="logHome"
source="log.home"
defaultValue="E:\\data-main-api"/>
先定义一个 property 变量,
再 定义 springProperty , property 必须在 springProperty 上方!!!! 否则会出现 undefined!
例如下面的:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!--获取配置中的参数信息--> <property scope="context" name="logHome" value="templogs"/> <springProperty scope="context" name="logHome" source="log.home" defaultValue="E:\\data-main-api"/> <!-- 日志的文件名字,请注意修改 --> <property scope="context" name="logname" value="data-main.log"/> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <target>System.out</target> <encoder> <!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>--> <pattern> %date{yyyy-MM-dd HH:mm:ss} | %msg | %boldYellow(%thread) | %highlight(%-5level) | %boldGreen(%logger) %n </pattern> </encoder> </appender> <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--如果只是想要 Error 级别的日志,那么需要过滤一下,默认是 info 级别的,ThresholdFilter--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则 如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天的日志改名为今天的日期。即,<File> 的日志都是当天的。 --> <File>${logHome}/logs/${logname}-info.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间--> <fileNamePattern>${logHome}/logs/info/${logname}-info-%d{yyyy-MM-dd}.log</fileNamePattern> <!--只保留最近30天的日志--> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <charset>UTF-8</charset> <pattern>%date{yyyy-MM-dd HH:mm:ss} | %-5level | %thread | %msg | %logger %n</pattern> </encoder> </appender> <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--如果只是想要 Error 级别的日志,那么需要过滤一下,默认是 info 级别的,ThresholdFilter--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>Error</level> </filter> <!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则 如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天的日志改名为今天的日期。即,<File> 的日志都是当天的。 --> <File>${logHome}/logs/${logname}-error.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间--> <fileNamePattern>${logHome}/logs/error/${logname}-error-%d{yyyy-MM-dd}.log</fileNamePattern> <!--只保留最近30天的日志--> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <charset>UTF-8</charset> <pattern>%date{yyyy-MM-dd HH:mm:ss} | %-5level | %thread | %msg | %logger %n%n%n</pattern> </encoder> </appender> <!-- 异步输出 --> <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --> <discardingThreshold>0</discardingThreshold> <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --> <queueSize>256</queueSize> <!-- 添加附加的appender,最多只能添加一个 --> <appender-ref ref="FILE_ERROR"/> </appender> <root level="INFO"> <appender-ref ref="CONSOLE"/> <!-- <appender-ref ref="FILE_ERROR"/>--> <appender-ref ref="FILE_INFO"/> <appender-ref ref="ASYNC"/> <!--<appender-ref ref="EMAIL"/>--> </root> </configuration>