异常及日志使用与项目打包

你会捕捉异常吗?

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

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的版本及以上支持使用变量参数

引用:http://www.importnew.com/7450.html

你会项目打包吗?

使用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

时间: 2024-10-11 18:12:26

异常及日志使用与项目打包的相关文章

java项目打包成可执行jar用log4j将日志写在jar所在目录

开发一个demo时想将日志输出到最终打包的jar所在目录,从网上学习实验整理之后的配置如下, log4j.properties log4j.rootLogger = INFO,console,logFile log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Threshold=INFO log4j.appender.console.ImmediateFlush=true log4j.app

eclipse将项目打包成jar在linux中运行

最近因为项目需要,做了几个外挂程序做数据传输,涉及到项目打包操作,在此记录一下打包步骤和其中出现的问题. 1.首先右键项目文件夹,点击export,弹出如下选择框,在其中输入jar搜索,并选择JAR flie点击next. 2.勾选要打包的文件夹,这里只要勾选需要编译的java文件就可以了,下面的JAR file为打包后的保存路径和jar名称,选择好后点击next. 3.如下图,点击next. 4.如下图,Main class为项目入口路径,点击后面的按钮可以选择项目入口路径,选择好后点击fin

SVN操作异常解决日志

1 svn locked某个目录-无法进行更新 产生这种情况大多是因为上次svn命令执行失败且被锁定了.如果cleanup没有效果的话只好手动删除锁定文件. 在命令提示符下cd 到svn项目出现问题的文件所在目录下,然后执行如下命令 del lock /q/s 就把锁删掉了.如图所示: 2.svn remains in conflict错误解决 情形:当有人在对某文件进行修改,假设为A文件,并提交至svn服务器,如果此时你正在修改A页面,并对其进行更新.会出现一些残余文件信息.如果在未删除这些文

(转)python自动化测试之异常及日志

为了保持自动化测试用例的健壮性,异常的捕获及处理,日志的记录对掌握自动化测试执行情况尤为重要,这里便详细的介绍下在自动化测试中使用到的异常及日志,并介绍其详细的用法. 一.日志 打印日志是很多程序的重要需求,良好的日志输出可以帮我们更方便的检测程序运行状态.Python标准库提供了logging模块,切记Logger从来不直接实例化,其好处不言而喻,接下来慢慢讲解Logging模块提供了两种记录日志的方式. 1.logging之模块级别的函数方式记录日志: import logging #设置日

C#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标

#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标 2012-08-25 09:11匿名 | 浏览 3286 次 C#编程 C#项目用vs2005自带的工具打包后安装的桌面快捷方式图标怎么设置成自己想要的图标,就想QQ安装之后在桌面的快捷方式一样 2012-08-25 09:21网友采纳 在创建快捷方式的时候是可以指定图标的啊.当然你最好把那图标文件(扩展名是ico)放在打包的文件夹中,不然你是不能指定的.

IBM规则引擎(ODM)入门系列二(2):规则项目打包、发布及服务端测试

上一篇博文介绍了如何搭建安装res服务,这次一起来看看如何在Rule Designer中创建RuleApp并将其发布到Res服务上. 打开Rule Designer,查看一下我们的规则项目: 以PersonRule规则项目为例,如上图中,在“规则项目图”视图中,点击“创建RuleApp项目”: 输入项目名“PersonRuleApp”,点击下一步: 因为点击的是PersonRule规则集项目的“创建RuleApp”导航链接,所以这里选择规则集项目默认为“PersonRule”,点击完成. 此时在

Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法

方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下: Manifest-Version: 1.0 Class-Path: lib/commons-codec.jar lib/commons-httpclient-3.1.jar lib/commons-logging-1.1.jar lib/log4j-1.

iOS开发如何把项目打包为ipa文件

最近自己做的一个项目,由于app store发布流程比较复杂,且审核周期较长,客户希望提前能看到产品,所以我先给自己的项目打包成一个ipa文件(类似Android的apk安装包),然后发布在"蒲公英 平台",该平台会自动生成一个二维码方便用户扫码下载,体验还是不错的. 具体流程如下: 先点击如图按钮,选择Edit Scheme,同时运行设备一定要选择真机,不能选择模拟器. 选择了编辑按钮之后,选择运行模式为release模式. 选择完成之后,command+B编译一次,此时在Produ

Grunt-Kmc基于KISSY项目打包

1. Grunt-Kmc 是基于nodejs开发的,所以未安装nodeJS,先需要安装nodejs.安装步骤如下:        1. 下载安装文件,下载地址:http://www.nodejs.org/download/ 如下: 根据操作系统的多少位 下载那个版本.下载完成后,双击: 执行相应的安装,完成后,在终端命令下,做如下操作: Node 和 npm的版本号,说明都已经安装成功了(注:新版本的node安装文件已经包含了npm,所以现在只需要安装这个node版本的文件就ok). 2. Gr