ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 日志跟踪工具for x64

日志跟踪工具for x64

原创 Linux操作系统 作者:chengdsc 时间:2011-08-21 19:16:11 0 删除 编辑

       当系统出现问题时候我们首先想到的是什么——查看系统日志,通过查看系统日志获取详细的错误信息。当我们遇到问题在论坛中提问时经常被要求提供log信息。然而系统日志日积月累轻松上百M甚至超G,这时候打开日志似乎不是件容易的事情,即便是通过通过EAS这样的客户端查看Essbase日志也不是件容易的事情,滚动条拖来拖去的感觉有点恶心(往往我们只关系最后几行)。在32位win环境下可以用tail.exe 程序。去http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17657下载。

使用:
C:\DOS>tail/? 一成不变的方法,/?来查看使用帮助
usage: TAIL [switches] [filename]*
   switches: [-?] display this message
             [-n] display last n lines of each file (default 10)
             [-f filename] keep checking filename for new lines
示例:
tail xxx.log 查看文件,默认显示最后的10行
tail -100 xxx.log 显示最后的100行
tail -f xxx.log 一直查看文件的变化

在x64环境下tail不能运行,只能开发类似小程序了,慢慢来,

1、将下面文件存为FromEndRF.java文件。

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class FromEndRF {
  public static void read(String filename,int rowcount) {
    read(filename,rowcount, "GBK");
  }

  public static void read(String filename,int rowcount, String charset) {

    RandomAccessFile rf = null;
    try {
      rf = new RandomAccessFile(filename, "r");
      long len = rf.length();
      long start = rf.getFilePointer();
      long nextend = start + len - 1;
      int rt=rowcount;
      String line;
      rf.seek(nextend);
      int c = -1;
      while ((nextend > start) && (rt>0)) {
        c = rf.read();
        if (c == '\n' || c == '\r') {
          line = rf.readLine();
          if (line != null) {
            System.out.println(new String(line.getBytes("ISO-8859-1"), charset));
            rt--;
          }/*else {
            System.out.println(line);
          }*/
         
          nextend--;
        }
        nextend--;
        rf.seek(nextend);
       
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      try {
        if (rf != null)
          rf.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }

 

  public static void main(String[] args) {
    if (args.length < 2){
    System.out.println("usege: java FromEndRF filename Rowcount");}
    else{
    String fn = args[0];
    String row = args[1];
    try {
      int ln = Integer.parseInt(row);
      /*"E:/Oracle/Middleware/user_projects/epmsystem1/diagnostics/logs/essbase/essbase_0/qESSBASE_ODL.log"*/
      read(fn,ln, "gbk");
    } catch (Exception e){
        System.out.println("usege: java FromEndRF filename Rowcount");
      }
    }
  }
}

2、用java编译并打包

在命令行键入:javac   FromEndRF.java

这时候系统将生产FromEndRF.class文件。

在命令行键入:jar  cvf  FromEndRF.jar  FromEndRF.class

这时候系统将生产FromEndRF.jar 文件。用winRAR之类的压缩软件打开FromEndRF.jar文件,编辑META-INF路径下的MANIFEST.MF用notepad 之类的文字编辑工具,在最后加入一行Main-Class:  FromEndRF,将修改后的文件保存回jar文件。

3、调用

在命令行键入: java -jar  FromEndRF.jar    filename  rowcount

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7477027/viewspace-705502/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-05-13

  • 博文量
    138
  • 访问量
    238436