异常及日志使用与项目打包
你会捕捉异常吗?
异常简要信息(仅有出错原因):
Exception.getMessage() 或 Exception.toString ()
异常详细信息(有具体出错的行号):
Exception.printStackTrace()方法
Exception.getStackTrace()方法返回一个StackTraceElement对象的集合
1 /** 2 * 获取详细的异常信息的工具方法 3 */ 4 public static String getTrace(Throwable t) { 5 StringWriter stringWriter = new StringWriter(); 6 PrintWriter writer = new PrintWriter(stringWriter); 7 t.printStackTrace(writer); 8 StringBuffer buffer = stringWriter.getBuffer(); 9 return buffer.toString(); 10 } 11 12 13 public String getExceptionDetail(Exception e) { 14 StringBuffer stringBuffer = new StringBuffer(e.toString() + "\n"); 15 StackTraceElement[] messages = e.getStackTrace(); 16 int length = messages.length; 17 for (int i = 0; i < length; i++) { 18 stringBuffer.append("\t"+messages[i].toString()+"\n"); 19 } 20 return stringBuffer.toString(); 21 }
你会使用日志打印功能吗?
SLF4J(Simple logging Facade for Java):不是一个真正的日志实现,而是一个抽象层 。
1.它允许你在后台使用任意一个日志类库。使得你的程序独立于任意特定的日志类库,依赖于特定类可能需要不同与你已有的配置,并且导致更多维护的麻烦。
2.SLF4J提供了基于占位符的日志方法
(1)不再需要冗长的级别判断,提高了代码可读性。
(2)通过使用SLF4J,你可以在运行时延迟字符串的建立,这意味着只有需要的String对象才被建立。这不仅降低了你代码中字符串连接次数,而且还节省了新建的String对象。更少的暂时的字符串意味着GC这意味着你的应用程序有为更好的吞吐量和性能。
logger.debug(
"Processing trade with id: {} and symbol : {} "
,
id
, symbol);
public
void
debug(String format, Object arg1, Object arg2) {
if
(logger.isDebugEnabled()) {
FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());
}
}
- slf4j-api-1.6.1.jar – JAR for SLF4J API
- log4j-1.2.16.jar – JAR for Log4J API
- slf4j-log4j12-1.6.1.jar – Log4J Adapter for SLF4J
你会项目打包吗?
打jar包:mvn package mvn clean package(推荐)
运行jar包:java -jar jar文件的名字
使用maven打包:mvn package mvn clean package?
如果其他方式修改jar包中的内容而不修改源代码,mvn package将不能得到最新的jar或其他包
但最保险还是用 mvn clean install 生成最新的jar包或其他包
若不想用mvn clean又想保证jar包最新, 建议使用命令mvn package -Djar.forceCreation
,这个参数应该是强制创建新的jar包;
通过看源码中:如果满足以下任一情况,会认为jar包不是最新的:
1. jar包不存在(其实就是mvn clean的效果)
2. 传入比较的文件资源不存在
3. Resource with unknown modification date found,资源的修改时间未知
4. Resource with newer modification date found,jar包的最后修改时间比资源的最后修改时间早
注:
mvn package 会调用 maven-jar-plugin 这个插件进行打包。
mvn clean package -X
就能看到非常丰富的DEBUG信息。
引用:http://blog.csdn.net/abc86319253/article/details/44019881
歪门邪道的打包方法:
http://www.cnblogs.com/dayou123123/p/6845432.html