使用maven的profiles自动设置log4j线上环境和测试环境区别
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 如果你已经有十次输入同样的Ant targets来编译你的代码、jar或者war、生成javadocs,你一定会自问,是否有一个重复性更少却能同样完成该工作的方法。Maven便提 供了这样一种选择,将你的注意力从作业层转移到项目管理层。Maven项目已经能够知道如何构建和捆绑代码,运行测试,生成文档并宿主项目网页.
项目的主页地址为:http://maven.apache.org/
深入
Profiles是maven的一个很关键的术语:profile是用来定义一些在build lifecycle中使用的environmental variations,profile可以设置成在不同的环境下激活不同的profile(例如:不同的OS激活不同的profile,不同的JVM激活不同的profile,不同的dabase激活不同的profile等等)。
实例
测试机环境,搞一个文件,比如说/data/test。
线上环境,不搞这个文件。
然后pom在project下如下写法:
<profiles>
<profile>
<id>produce</id>
<activation>
<activeByDefault>false</activeByDefault>
<file>
<missing>/data/test</missing>
</file>
</activation>
<properties>
<log4j.log.path>/opt/logs/xxx.log</log4j.log.path>
<log4j.debug.level>error</log4j.debug.level>
</properties>
</profile>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<log4j.log.path>/opt/logs/xxx.log</log4j.log.path>
<log4j.debug.level>debug</log4j.debug.level>
</properties>
</profile>
</profiles>
log4j.xml文件设置
为了配合maven的设置属性,需要将log4j中使用的声明用成变量,片段举例:
<logger name=”com.xx.xx.xx.xx” additivity=”false”>
<level value=”${log4j.debug.level}”/>
<appender-ref ref=”dao”/>
</logger><root>
<level value=”${log4j.debug.level}”/>
<appender-ref ref=”service”/>
</root>
解释
这样,在运行mvn进行build项目的时候,如果线上环境,测试到/data/test文件是missing的,则会激活对应的设置,以此来达到线上环境改成error级别,而测试环境为debug级别
建议继续学习:
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:54chen 来源: 五四陈科学院-坚信科学,分享技术
- 标签: log4j maven
- 发布时间:2010-08-04 22:56:56
- [56] Oracle MTS模式下 进程地址与会话信
- [56] IOS安全–浅谈关于IOS加固的几种方法
- [55] 如何拿下简短的域名
- [54] 图书馆的世界纪录
- [52] android 开发入门
- [52] Go Reflect 性能
- [50] 读书笔记-壹百度:百度十年千倍的29条法则
- [49] 【社会化设计】自我(self)部分――欢迎区
- [38] 程序员技术练级攻略
- [33] 视觉调整-设计师 vs. 逻辑