每周一技:日志
Taigoo 发表于 July 30, 2009 7:13 pm
版权信息 :严禁转载, 若想推荐或收藏,请用链接的形式.
网址:http://www.inblackberry.com/web/development/week-tech/logger-to-blackberr.html
因为工作的原因,发现日志是必不可少的,这在以后的使用中,对调试,对技术支持起到非常重要的作用。
因为Blackberry的特殊性,一般人不会选在设备上调试,大多数人都选择在模拟器上开发。所以开发的程序一旦部署在设备上时,已经很难知道运行的状态。这个时候,好的日志就变得那么重要,如果好的话,可以减少几个round。
那么,如何写日志呢?
首先,需要熟悉Blackberry的日志API。还记得alt+lglg吗?这是一个不错的选择。
其次,该记录那些内容呢?答案也很简单,记录一些有用的信息,一般来说包括:
- 记录程序执行的顺序
- 记录程序执行的环境
- 记录一些重要的条件
- 记录一些警告,错误等信息
好的,接下来就是实现了,我们现在介绍如何将日志写到Blackberry的日志平台上。
直接贴代码:
/*
2 * BlackberryLogger.java
3 *
4 * Copyright (C) Taiguo Zhang
5 *
6 * Author: Taigoo Zhang
7 * Email: confach(#—)gmail.com
8 */
9
10
11
12 import net.rim.device.api.system.EventLogger;
13 import java.io.UnsupportedEncodingException;
14
15
16 /**
17 * The BlackberryLoggerto log all events
18 */
19 public class BlackberryLogger{
20 /**
21 * The event logger guid
22 */
23 private long event_guid_id=0x4c9d3452d88022f2L;
24
25 /**
26 * The BlackberryLogger
27 * To log all information..
28 */
29 public BlackberryLogger() {
30 EventLogger.register(event_guid_id,"yourlogger",EventLogger.VIEWER_STRING);
31 }
32
33 /**
34 * Get an instance of BlackberryLogger
35 * @return return an BlackberryLoggerobject.
36 */
37 public static BlackberryLogger getInstance()
38 {
39 return new BlackberryLogger();
40 }
41
42 /**
43 * Log the information.
44 * @param message The message you will log
45 */
46 public void log(String message)
47 {
48 String SEPERATOR_CHAR=" ";
49 if(message==null||message.trim().equals("")) return;
50 String new_str=DateUtils.now()+SEPERATOR_CHAR+"app:"+SEPERATOR_CHAR+message;
51 System.out.println(new_str);
52 try
53 {
54 new_str=new String(new_str.getBytes(),"UTF-8");
55 byte[] msg_bytes =new_str.getBytes();
56 EventLogger.logEvent(event_guid_id,msg_bytes);
57 }
58 catch(Exception ex)
59 {
60 System.err.println(ex);
61 }
62 }
63 }
是不是发现上面代码很简单呢?
调用也很简单:
BlackberryLogger.getInstance().log("hello);
再介绍一个小技巧,在抛出exeption时,为了定位到源代码的每一行,我们可以对exception打印一下,代码如下:
public static String getExceptionStackTrackMessage(Exception ex) {
StringBuffer sb = new StringBuffer();
sb.append(ex.getMessage()).append("\r\n");
StackTraceElement[] elems = ex.getStackTrace();
for(StackTraceElement st : elems) {
sb.append(st.toString()).append("\r\n");
}
return sb.toString();
}
上面的技术非常简单,别看是小技术,但是用好了,对咱们的开发起到事半功倍的效果。
相关文章:

1. coffie 发表于 August 5,2009 16:01:35
请帮个忙。我的黑莓9530机器用着中国移动的全球通卡,包月里含WAP与NET。但是我这个机器不能用GOOGLEMAP。 但却可以用自带浏览器上网,UCWEB,QQ2008. 乐图也能用。service book用过网上的那个ServiceBook_Net_Wap_Email.ipd和serverbook-Garfiled_china mobile.ipd都不能用googlemap.我想可能是这个service book不能上net的原因。但是用ServiceBook_Net_Wap_Email.ipd后调到NETBROWSER上不了网。请帮个忙。QQ:270901106.