专注于blackberry » 每周一技:日志

      专注于Blackberry

每周一技:日志

Taigoo 发表于 July 30, 2009 7:13 pm

版权信息 :严禁转载, 若想推荐或收藏,请用链接的形式.

网址:http://www.36sign.com/bb/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. 每周一技: ServiceBook初探
  2. 在Blackberry编写邮件的窗体中加入控件:编写自定义控件
  3. Blackberry HomeScreen上滑动应用程序时修改其图标
  4. 每周一技:从BES服务器上lookup联系人
  5. 在Blackberry编写邮件的窗体中加入控件



3 个评论 »

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.

2.   pennyg 发表于 August 31,2009 12:07:45

我将option-advanced-tcp 中的apn改为cmnet后,全部解决。

3.   无花 发表于 December 10,2009 14:00:39

Hi, 你好, 我叫无花, 看了你的几篇文章发现对我学习很有帮助, 能加你联系方式吗, 我的qq是616833302, 这年头开发黑莓不容易啊. 我最近也在学习黑莓的开发,并且要完成一些项目

本文评论的RSS · TrackBack URI

发表评论