博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异常及日志使用与项目打包
阅读量:4599 次
发布时间:2019-06-09

本文共 2772 字,大约阅读时间需要 9 分钟。

你会捕捉异常吗?

异常简要信息(仅有出错原因):

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这意味着你的应用程序有为更好的吞吐量和性能。

slf4j巧妙的解决了这个问题:先传入带有占位符的字符串,同时把其他参数传入,在slf4j的内容部实现中,
如果级别合适再去用传入的参数去替换字符串中的占位符,否则不用执行
 例如:
logger.info("{} is {}", new String[]{“x",“y"});
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,你不仅需要包含SLF4J的API jar包,例如 slf4j-api-1.6.1.jar,还需要相关Jar包,这取决于你在后台使用的日志类库。
如果你想要使用和Log4J 一起使用SLF4J  ,你需要包含以下的Jar包在你的classpath中,取决于哪个SLF4J和你在使用的Log4J的版本。例如:
  • 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
 如果使用Maven去管理你的项目依赖,你只需要包含SLF4J JAR包,maven会包含它的依赖的相关包。
 SLF4J 1.7的版本及以上支持使用变量参数
引用:
 

 

你会项目打包吗?

 

 

打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信息。

引用:

 

歪门邪道的打包方法:

 

 

 

转载于:https://www.cnblogs.com/zhaojinxin/p/7423410.html

你可能感兴趣的文章
Dojo入门:DOM操作
查看>>
vue 数组/对象的深拷贝
查看>>
jquery基础2
查看>>
一大波编程视频资料赠送(亲自整理)
查看>>
(转载)周鸿祎在360新员工入职培训上的讲话
查看>>
MySQL要导出成excel的方法
查看>>
jQuery后代元素和子元素的区别
查看>>
vm中安装win2012并安装hyper-V不支持嵌套
查看>>
CSS编码规范
查看>>
c# 异步
查看>>
OpenCV图像旋转算法
查看>>
函数对象
查看>>
运算符
查看>>
c++内存模型,变量和函数
查看>>
前端的焦虑
查看>>
Java程序设计第二次作业
查看>>
HDU 1004 MAP【STL__map_的应用】
查看>>
ChartCtrl源码剖析之——CChartGrid类
查看>>
关于JUnit的测试
查看>>
CF1142A The Beatles
查看>>