java的异常捕捉好像就作你所说的这种事吧。只不过我们一般不是记录到log文件中,而是打印到屏幕上。不过我想也应该可以记录到文件中。

解决方案 »

  1.   

    试试这个:
    String filename = this.getClass().getName();
      

  2.   

    怎么用apache的开源项目啊,说详细点可以吗?
      

  3.   

    ft,这个需要这么复杂地处理吗?
    我想你的目的是想知道,如果出了错,错在哪里,最好指定到文件行把(如果不是这个意思,抱歉,别往下看了),
    JAVA的错误处理机制是都可以搞定的啊,要记录到文件也很容易的,
    首先在需要的地方捕捉错误异常,
    然后,
    打开一个文件流(你可以事先准备好这个),把这个文件流作为参数传递给
    捕获的异常的printStackTrace方法,就可以了。如果直接点,就直接访问这个方法,
    把错误信息输出到控制台就可以了。
      

  4.   

    我觉得还是说的不清楚,另外我仅仅是输出一个String,但并不发生异常,只是一条log信息,表示我的程序走到这里了,这也要用异常我觉得不太合适
      

  5.   

    如果是这样的话,你使用JDK1.4吗?如果是,
    请查阅java.util.logging 
    包,
    应该是够满足你的了。
    我想你没有什么特殊需求不能使用JDK1.4吧。呵呵
      

  6.   

    更一般的,你可以自己实现一个简单的LOG,
    只有一个方法:
    public static void log(String msg) {
        System.out.println(msg);
    }
    在完成调试以后把里面的输出语句注释掉就可以去掉所有调试信息,
    并在需要的时候打开它。
      

  7.   

    logging包我还没有研究过,我怎样得到调用它的方法时所在的文件名和行数呢?
      

  8.   

    引用:
    回复人: sam79(剑舞飘飘) ( ) 信誉:100  2003-09-12 21:28:00  得分:0 
     
     
      试试这个:
    String filename = this.getClass().getName();
      
     引用:
    这个可以获得所在类的名字,但并不是文件名啊,我想得到所在文件的文件名怎么办呢?你难道大多数时间都是一堆类放在一个文件里的吗?
    建议你改掉这个习惯,一般情况类名和文件名完全相同,而且一个文件一个类就可以了,
    除非考虑设计,才使用内嵌类。所以一个类名对应文件名是最正常的。
    至于行号,为什么要呢?
    引用:
    另外我仅仅是输出一个String,但并不发生异常,只是一条log信息,表示我的程序走到这里了所有的已经满足你的了,你记录行数没有任何意义,因为这根本不是一个错误,没有必要这么精确,还有,既然是输出了,你看到输出结果当然应该知道执行到哪里了,单看行数你能知道自己跑到哪里了?不可能吧。如果只输出行数我恐怕你找起来更麻烦,输出特殊字符串的话只要简单的查询就立刻可以定位。