boss让我检查一个java程序的健壮性,该程序原理是每10分钟执行一条命令,输出到一个文本上,现在的问题是程序运行一段时间就输出不了了,隔段时间就罢工,时间长短在几天到一个月。我做系统集成的,对开发比较不感冒,希望高手赐教。下面是程序的介绍以及源代码,谢谢!/////////////////////////////////////////////////////////////////////////////////
1 介绍
Aws日志分析程序可以从aws日志aws.log中分析出所需内容后生成文件aws.txt供监控程序再次分析用。
2 环境说明
2.1 使用环境
根据用户的需求和实际使用情况,确定该系统的使用环境如下所示:类 别 使用软件 备 注
操作系统 Windows
Java运行环境 Sun JRE 1.4.2 2.2 开发环境
•Java开发环境采用Jbuilder
•面向对象设计工具采用Borland Together
•采用迭代型软件开发模型来开发本软件
•Java源代码必须遵循《编码规范》3 系统结构设计
程序采用java编写,作为一个系统服务在windows系统中。程序有一个定时任务,每十分钟运行。该任务运行时会创建批处理文件run.bat。该文件中调用aws中faultutil命令。然后将该命令结果输入到程序内进行分析。查找每行中 “Time Detected”,” Severity”和” Meaning”字样后的文字,随后以Time Detected+Severity+Meaning的格式输出到aws.txt中。
4 类设计
4.1 Aws日志分析程序
awslogv2.java
public static final void main() 主函数。该函数复杂创建type.bat,分析日志文件并将结果存入aws.txt中。5 操作配置步骤
一、在wgq-ncraws中新建目录c:/OVO;把awslog文件夹拷贝到新目录下;二、把awslog设置成为windows NT4 Server / 2000 / XP的一项服务1. 首先,需要安装两个windows资源工具:srvany.exe,instsrv.exe(这两个软件可以从Google.com上搜索到)。并将它们放到本机的根目录,在笔者机上的目录是d:\winnt,在其他机子上可能会是c:\WINDOWS或c:\winnt。
2. 在运行一栏中敲入cmd后回车,进入命令模式;
3. 必须先安装SRVANY服务,在命令模式中输入INSTSRV SrvAny \srvany.exe,其中是指srvany.exe放置的具体位置(笔者机子位置是d:\winnt);
4. 在命令模式下输入INSTSRV.EXE AWSLOG \SRVANY.EXE,其中是指srvany.exe放置的具体位置(笔者机子位置是d:\winnt);
5. 在运行框中添入regedit,开始编辑注册表。(首先备份原有的注册表文件,在注册表菜单下点击导出注册表文件,然后保存即可);
6. 在注册表中找到子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AWSLOG,并且选中它;
7. 从编辑菜单中选择新建,选择项,然后输入Parameters;
8. 选中Parameters项,右键单击,选择新建,字符串,输入Application;
9. 右键单击Application,选择修改,输入D:\ovo\awslog\awslog.bat;
10. 选中Parameters项,右键单击,选择新建,字符串,输入AppDirectory;
11. 右键单击AppDirectory,选择修改,输入D:\ovo\awslog;
12. 从开始菜单-〉程序->管理工具,打开服务,右键单击AWSLOG,选择属性,选择启动方式为自动。至此AWSLOG已经成功的安装在你的主机上了。三、运行系统服务awslog即可。///////////////////////////////////因发帖字数限制,源代码请看附件。
1 介绍
Aws日志分析程序可以从aws日志aws.log中分析出所需内容后生成文件aws.txt供监控程序再次分析用。
2 环境说明
2.1 使用环境
根据用户的需求和实际使用情况,确定该系统的使用环境如下所示:类 别 使用软件 备 注
操作系统 Windows
Java运行环境 Sun JRE 1.4.2 2.2 开发环境
•Java开发环境采用Jbuilder
•面向对象设计工具采用Borland Together
•采用迭代型软件开发模型来开发本软件
•Java源代码必须遵循《编码规范》3 系统结构设计
程序采用java编写,作为一个系统服务在windows系统中。程序有一个定时任务,每十分钟运行。该任务运行时会创建批处理文件run.bat。该文件中调用aws中faultutil命令。然后将该命令结果输入到程序内进行分析。查找每行中 “Time Detected”,” Severity”和” Meaning”字样后的文字,随后以Time Detected+Severity+Meaning的格式输出到aws.txt中。
4 类设计
4.1 Aws日志分析程序
awslogv2.java
public static final void main() 主函数。该函数复杂创建type.bat,分析日志文件并将结果存入aws.txt中。5 操作配置步骤
一、在wgq-ncraws中新建目录c:/OVO;把awslog文件夹拷贝到新目录下;二、把awslog设置成为windows NT4 Server / 2000 / XP的一项服务1. 首先,需要安装两个windows资源工具:srvany.exe,instsrv.exe(这两个软件可以从Google.com上搜索到)。并将它们放到本机的根目录,在笔者机上的目录是d:\winnt,在其他机子上可能会是c:\WINDOWS或c:\winnt。
2. 在运行一栏中敲入cmd后回车,进入命令模式;
3. 必须先安装SRVANY服务,在命令模式中输入INSTSRV SrvAny \srvany.exe,其中是指srvany.exe放置的具体位置(笔者机子位置是d:\winnt);
4. 在命令模式下输入INSTSRV.EXE AWSLOG \SRVANY.EXE,其中是指srvany.exe放置的具体位置(笔者机子位置是d:\winnt);
5. 在运行框中添入regedit,开始编辑注册表。(首先备份原有的注册表文件,在注册表菜单下点击导出注册表文件,然后保存即可);
6. 在注册表中找到子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AWSLOG,并且选中它;
7. 从编辑菜单中选择新建,选择项,然后输入Parameters;
8. 选中Parameters项,右键单击,选择新建,字符串,输入Application;
9. 右键单击Application,选择修改,输入D:\ovo\awslog\awslog.bat;
10. 选中Parameters项,右键单击,选择新建,字符串,输入AppDirectory;
11. 右键单击AppDirectory,选择修改,输入D:\ovo\awslog;
12. 从开始菜单-〉程序->管理工具,打开服务,右键单击AWSLOG,选择属性,选择启动方式为自动。至此AWSLOG已经成功的安装在你的主机上了。三、运行系统服务awslog即可。///////////////////////////////////因发帖字数限制,源代码请看附件。
解决方案 »
- 迅雷下载局域网内的文件
- 利用数组实现栈结构,完成数据的入栈出栈(用java)
- 求助:有关Tcp的堵塞窗口。
- 急需jnative相关资料
- String类型如何变为Date格式输出
- 哪位高人把ObjectInputStream的readObject的工作原理详细说明一下
- jFileChooser如何设置fileFilter, 及得到选择的文件的"指针"?
- 如何表示,一个对像f不存在啊?
- 【MLDN J2SE部分--五子棋项目)】
- 请问:谁有中文的java1.3类库参考书???????????????
- 请问怎样把rgb矩阵转换成java图像
- j2ee 开源编程精要15讲 电子版 邬继承 电子工业出版社 那里能下到电子版??
import java.lang.*;
import java.lang.Runtime;
import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Properties;
import java.util.TimerTask;
import java.util.Timer;public class awslogv2 extends Thread {
private static long timeDate = 600000 ; //ten minutes
private static long timeDate_old = 864000000 ; //ten days
public static final void main(final String[] args) {
TimerTask tt = new TimerTask(){
public void run() {
int n = 50;
String Time_Detected[] = new String[n];
int i = 0;
String Tera_Severity[] = new String[n];
int j = 0;
String Problem_Description[] = new String[n];
int k = 0;
String dumpdsString="";
String description="";
String meaning1="";
String meaning2="";
String meaning3="";
awslogv2 awslog = new awslogv2();
InputStream is = null ;
BufferedReader br = null ;
Runtime rt = Runtime.getRuntime() ;
//Runtime rt2= Runtime.getRuntime() ;
Date date = new Date() ;
long time = date.getTime() ;
time = time - timeDate ;
Date day = new Date(time) ;
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm") ;
String nowTime = sdf.format(date) ;
String beforeTime = sdf.format(day) ;
//String process1="C:/program files/ncr/aws/bin/faultutil -all > C:/aws.log";
String process_1="\"C:\\program files\\ncr\\aws\\bin\\faultutil\" -all -start \""+beforeTime+"\" -end \""+nowTime+"\" -detail 1>C:\\OVO\\aws.log\r\n";
//String process1="\"C:/program files/ncr/aws/bin/faultutil\" -all -start \""+beforeTime+"\" -end \""+nowTime+"\" -detail";
String process_2="type C:\\OVO\\aws.log\r\n";
//String process_2="type E:\\test\\awslog\\aws.log";
//String process1="C:\\Program Files\\NCR\\AWS\\Bin\\faultutil -all -start \""+nowTime+"\" -end \""+beforeTime+"\" -detail > C:\\aws.log" ; //add the PATH of faultutil as environment parameter
//String process1="C:/a.bat";
String dir = System.getProperty("user.dir") ;
try{
File awsFile1 = new File(dir,"faultutil.bat") ;
/*if(awsFile1.exists()){
awsFile1.delete();
}
awsFile1.createNewFile();
RandomAccessFile raf_aws = new RandomAccessFile(awsFile1,"rw") ;
raf_aws.writeBytes(process_1);
raf_aws.close();
System.out.println(process_1);
rt.exec("faultutil.bat");*/
File awsFile2 = new File(dir,"type.bat") ;
if(awsFile2.exists()){
awsFile2.delete();
}
awsFile2.createNewFile();
RandomAccessFile raf_aws2 = new RandomAccessFile(awsFile2,"rw") ;
raf_aws2.writeBytes(process_1);
raf_aws2.writeBytes(process_2);
raf_aws2.close();
System.out.println(process_1);
System.out.println(process_2);
Process process = rt.exec("type.bat");
//System.out.println(process0);
//Process process = rt.exec("awslog.bat");
//is = process.getErrStream() ;
//Process process = rt.exec(process_2);
//ab = process.getErrorStream();
is = process.getInputStream() ;
br = new BufferedReader(new InputStreamReader(is)) ;
String line = null;
/*while((line = br.readLine())!= null) {
System.out.println(line);
}*/
if(br.readLine()==null){
File awslog_error = new File(dir,"awslog_error.log") ;
if(!awslog_error.exists()){
awslog_error.createNewFile();
}
Date datedown = new Date();
RandomAccessFile raf_run = new RandomAccessFile(awslog_error,"rw") ;
raf_run.seek(raf_run.length());
raf_run.writeBytes(datedown+" faultutil doesn't work correctly\r\n");
raf_run.close();
}
while((dumpdsString=br.readLine())!=null){
if(dumpdsString.indexOf("Time Detected")!=-1){
Time_Detected[i] =awslog.deleteSpace(dumpdsString.substring(dumpdsString.indexOf(":")+12));
i++;
/*description = br.readLine();
Tera_Severity[j] =awslog.deleteSpace(dumpdsString.substring(dumpdsString.indexOf(":")+17));
j++;*/
}
if(dumpdsString.indexOf("Severity:")!=-1){
Tera_Severity[j] =awslog.deleteSpace(dumpdsString.substring(dumpdsString.indexOf(":")+17));
j++;
}
/* if(dumpdsString.indexOf("Problem Description")!=-1){
description = br.readLine();
Problem_Description[k] =awslog.deleteSpace(description);
k++;
} */
if(dumpdsString.indexOf("Meaning:")!=-1){
description = br.readLine();
meaning1 = br.readLine();
meaning2 = br.readLine();
meaning3 = br.readLine();
Problem_Description[k] =awslog.deleteSpace(meaning1+meaning2+meaning3);
k++;
}
}
i=0;
File awstxtFile = new File(dir,"aws.txt") ;
if(awstxtFile.exists()){
awstxtFile.delete();
}
awstxtFile.createNewFile();
RandomAccessFile raf_awstxt = new RandomAccessFile(awstxtFile,"rw") ;
while (Time_Detected[i] != null) {
String awsLine = Time_Detected[i]+"+"+Tera_Severity[i]+"+"+Problem_Description[i]+"\r\n";
//String awsLine = Time_Detected[i]+"+"+Problem_Description[i]+"\r\n";
System.out.println(awsLine);
raf_awstxt.writeBytes(awsLine);
i++;
}
raf_awstxt.close();
}catch(FileNotFoundException fnfe){
System.out.println(fnfe);
}catch(IOException ioe){
System.out.println(ioe) ;
}
}
};
java.util.Timer timer = new Timer();
timer.schedule(tt,0,10*60*1000);
}
public String deleteSpace(String str){
while(str.startsWith(" ")){
str = str.substring(1) ;
//System.out.println("a"+str+"a");
}
while(str.endsWith(" ")){
str = str.substring(0,str.length()-1) ;
//System.out.println("a"+str+"a");
}
//System.out.println("a"+str+"a");
return str ;
}
}