我想拆分来自日志文件的字符串,格式化拆分字符串,再次连接它,然后再次打印格式化的字符串。目前,代码只是逐行打印文件,而我想要的其余部分仍然存在。
我的代码是:
try
{
String strpath="/var/date.log";
FileReader fr = new FileReader(strpath);
BufferedReader br = new BufferedReader(fr);
String ch;
String[] Arr;
do
{
ch = br.readLine();
if (ch != null)
out.print(ch+"<br/>");
}
while (ch != null);
fr.close();
}
catch(IOException e){
out.print(e.getMessage());
}
日志文件的内容:
[1322110800] LOG ROTATION: DAILY [1322110800] LOG VERSION: 2.0 [1322110800] CURRENT HOST STATE: arsalan.hussain;DOWN;HARD;1;CRITICAL - Host Unreachable (192.168.1.107) [1322110800] CURRENT HOST STATE: localhost;UP;HARD;1;PING OK - Packet loss = 0%, RTA = 0.06 ms [1322110800] CURRENT HOST STATE: musewerx-72c7b0;UP;HARD;1;PING OK - Packet loss = 0%, RTA = 0.27 ms [1322110800] CURRENT HOST STATE: sharepoint2;DOWN;HARD;1;CRITICAL - Host Unreachable (192.168.1.100)
我想在“]”上每行拆分此文件,然后在方括号中获取内容,在长日期时间格式化,然后将其与剩余行连接并打印出来。
这应该在文件的每一行完成。
这将给出格式化日期:
String dat="1324649468000";
Date d = new Date(Long.valueOf(dat));
答案 0 :(得分:1)
您可以使用此简单的代码段进行转换:
String line = "[1322110800] LOG ROTATION: DAILY";
Pattern pt = Pattern.compile("\\[(\\d+)\\]");
Matcher m = pt.matcher(line);
if (m.find()) {
Date dt = new Date(Long.parseLong(m.group(1)) * 1000);
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
line = m.replaceFirst('['+ sdf.format(dt) +']');
}
System.out.println(line);
<强>输出强>
[11-24-2011 00:00:00] LOG ROTATION: DAILY
答案 1 :(得分:1)
如果您的文件始终具有此类型,我认为这会对您有所帮助
public static long stringToLong(String ch) {
String temp="";
for(int i=0;i<ch.length();i++)
{
if(ch.charAt(i)=='[')
continue;
if(ch.charAt(i)==']')
break;
temp+=ch.charAt(i);
}
return Long.valueOf(temp);
}
Date d = new Date(stringToLong(ch));
答案 2 :(得分:0)
您可以使用扫描程序和正则表达式来执行此操作。
Pattern logPattern = Pattern.compile("^\\[([^\\]]*)\\](.*)$");
Scanner input = new Scanner( new File( strpath ) );
while ( input.hasNextLine() ) {
String line = input.nextLine();
// checkout how to parse a string with Pattern (obtain matcher) and get the arguments
out.println( line + "<br/>" );
}
不要忘记正确关闭输入和输出。