SpringMVC下logback配置环境分离
来源:互联网 发布:华腾软件 编辑:程序博客网 时间:2024/06/05 19:24
摘要
最近开发过程中,使用Spring Profiles进行了开发环境与测试环境的分离,由于开发环境和测试环境之间需要使用不同的配置,例如开发环境和测试环境的日志级别,日志文件存储的路径极有可能是不同的,所以需要将开发环境和测试环境分离开来,我们首先想到的可能是把logback.xml文件拷贝成两份,不同环境使用不同的logback.xml文件不就可以了吗?其实这样是有问题的,一个是两个logback.xml文件进行管理是很头疼的,另一个很重要的问题是logback.xml文件会在web.xml文件里面配置,而web.xml文件很难去判断读取哪一个logback.xml文件。
解决方案
我们使用logback的一个特性,它提供<property resource=''>
来读取我们的配置文件,我们只需要在resource里面配置好我们对应logback.properties的文件路径就可以了,例如这些:
<property resource="properties/${spring.profiles.active}/logback.properties"/>
这样我们直接使用${spring.profiles.active}来获取对应环境的目录就可以了,非常方便。
实现代码
具体的实现代码如下:
- logback.xml基础配置:
下面这段配置中主要配置的含义可以通过查看logback文档去了解,不做过多的阐述,有两个地方可以相应了解下,一个是日志写入文件时,会同时按照日期和最大文件大小生存新文件,另一个是statusListener和debug=’false’可以不打印logback自身的日志信息。除了${spring.profiles.active}
,其他的${}
包裹的变量都是从logback.properties文件中进行读取的,所以我们需要在开发环境和生产环境分别定义一套logback.properties文件:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE xml><configuration scan="true" debug="false"> <property resource="properties/${spring.profiles.active}/logback.properties"/> <!-- 清除logback状态日志 --> <statusListener class="ch.qos.logback.core.status.NopStatusListener" /> <appender name="FILE-ALL" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${_log.path}/${_file_name}.log</file> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>${_file_level}</level> <!-- 过滤级别一下日志 --> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每天滚动--> <fileNamePattern>${_log.path}/${_file_name}.%d{yyyy-MM-dd}.%i.log </fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- 文件超过20M时产生新文件,这里设置小于20M是因为logback存在缓冲区--> <maxFileSize>${_max_file_size}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!-- 每30天清除一次历史 --> <maxHistory>${_max_history}</maxHistory> </rollingPolicy> <!-- <layout class="ch.qos.logback.classic.html.HTMLLayout"> 可以按HTML格式输出 --> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <charset>UTF-8</charset> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>${_file_pattern}</pattern> </layout> </encoder> </appender> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>${_stdout_level}</level> </filter> <encoder> <pattern>${_stdout_pattern}</pattern> </encoder> </appender> <root level="${_root_level}"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE-ALL"/> </root> <logger name="org.apache" level="WARN"></logger> <logger name="org.apache.ibatis" level="DEBUG"></logger> <logger name="org.springframework" level="WARN"></logger> <logger name="org.quartz" level="WARN"></logger> <logger name="com.alibaba.druid" level="ERROR"></logger></configuration>
- logback.properties基础配置:
普通的properties配置文件,没什么好说的,类似的配置如下:
#日志文件路径_log.path=/Logs/backend#输出到日志文件级别,_file_level=INFO#输出到日志文件名称,此时生成日志文件路径类似于/Logs/backend/backend.log_file_name=backend#输出到日志文件最大大小,超过20000KB时会产生新文件_max_file_size=20000KB#日志文件允许存在最大天数_max_history=60#日志文件输出格式_file_pattern=%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{56}.%method:%L - %msg%n#控制台输出级别,例如本地测试如果想打印sql,只需要把INFO修改成DEBUG级别_stdout_level=ERROR#控制台输出格式_stdout_pattern=%date{HH:mm:ss.SSS} %-5level [%thread] %logger{56}.%method:%L - %msg%n#根级别_root_level=DEBUG
总结
logback进行环境分离时可以使用上面的写法进行配置,当然如果我们自己开发的测试项目,不需要进行环境的分离,使用上面这种配置也是可以的,而且在修改上面也会更加方便和清晰一些,有问题的地方也欢迎一起进行讨论。
阅读全文
0 0
- SpringMVC下logback配置环境分离
- 【LogBack】logback日志配置及日志分离
- logback日志配置及日志分离
- Maven项目中springMVC配置logback日记
- spring+springMVC+Mybatis下的logback日志
- spring boot 中logback多环境配置
- logback 日志分离技术
- SSM报错(一)Logback+Springmvc的配置 logback配置
- windows环境下 springMVC+jdbc+redis整合配置
- maven springmvc环境配置
- maven springmvc环境配置
- springmvc+ibatis配置环境
- SpringMVC之环境配置
- SpringMVC环境配置
- SpringMVC 的环境配置
- maven springmvc环境配置
- SpringMVC开发环境配置
- Springmvc maven环境配置
- uLua对于unity的例子理解 一
- POJ1077 Eight —— 双向BFS
- hexo搭建个人博客
- 图像标记
- MongDB简单介绍
- SpringMVC下logback配置环境分离
- POJ1077 Eight —— A*算法
- HDU 6188 贪心
- Objective-c从零开始(一)
- Docker的简单介绍
- 在LaTeX中,使用argmin,argmax时,设置下标的方法
- kindeditor在方法中动态创建在线文本编辑器
- kuangbin 简单搜索 A 棋盘问题
- andriod解析XML文件,超级简单!