Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
unixgrepforjava日志_Java_Grep - Fatal编程技术网

unixgrepforjava日志

unixgrepforjava日志,java,grep,Java,Grep,我是Unix grep新手,我想得到一些关于grep命令的帮助 目前,我的应用程序日志中存在以下类型的错误: 2012-02-31 10:21:41333错误[65](GeneralApplicationsBean.java:135)- 异常java.net.ConnectException:连接超时 2012-01-31 10:24:41843错误[41](FlightStatusBean.java:135)- 异常java.net.SocketTimeoutException:连接超时 20

我是Unix grep新手,我想得到一些关于grep命令的帮助

目前,我的应用程序日志中存在以下类型的错误:

2012-02-31 10:21:41333错误[65](GeneralApplicationsBean.java:135)- 异常java.net.ConnectException:连接超时

2012-01-31 10:24:41843错误[41](FlightStatusBean.java:135)- 异常java.net.SocketTimeoutException:连接超时

2011-01-31 10:22:41841错误[1](FlightCancellation.java:135)- 异常java.rmi.ConnectException:连接超时

2011-01-31 10:22:41841错误[1](OrderBean.java:132)- 异常java.rmi.ConnectException:连接超时

我想知道这个异常的时间戳(例如
2012-02-31 10:21:41333
),Java类和负责的行(例如
GeneralApplicationsBean.Java:132

如何生成这个grep命令

shadyabhi@archlinux ~ $ echo '2012-02-31 10:21:41,333 ERROR [65] (GeneralAppliancesBean.java:135) - Exception java.net.ConnectException: Connection timed oot' | cut -d "," -f 1
2012-02-31 10:21:41
shadyabhi@archlinux ~ $ echo '2012-02-31 10:21:41,333 ERROR [65] (GeneralAppliancesBean.java:135) - Exception java.net.ConnectException: Connection timed oot' | cut -d " " -f 5
(GeneralAppliancesBean.java:135)
shadyabhi@archlinux ~ 
cut
更适合于此

如果日志位于名为logs的文件中,请使用此选项

while read myline 
    do
        echo "Date: "$(echo $myline | cut -d "," -f 1)
        echo "Error: "$(echo $myline | cut -d " " -f 5)
    done < logs
读取myline时
做
echo“日期:$(echo$myline | cut-d”,“-f1)
echo“错误:$(echo$myline | cut-d”“-f5)
完成<日志
如果错误是多行的(对此我持怀疑态度):


使用
grep“ERROR”logs | cut-d“,“-f1
表示日期,使用
grep“ERROR”logs | cut-d“-f4
表示类别和行号。

您可以定义一个别名,用于同时搜索多个关键字,例如

grep ERROR java.log|awk '{print $1 $4}'
alias finderrors="grep -i -w 'fatal\|error\|exception\|timeout\|waiting\|fail\|unable\|lock\|block'"
然后这样使用它

finderrors mylogfile.log

如果我把它放到一个grep语句中,它是这样的:grep-rn“ConnectionException”| SocketTimeoutException“*| cut-d”、“-f1 cut-d”-f5?@ChinBoon你确定,你的错误是多行的还是仅仅是在下一行中放入一些文本的终端宽度?@ChinBoon如果错误是多行的(我对此表示怀疑),请使用
grep“ERROR”logs | cut-d“,“-f1
用于日期&
grep“ERROR”logs | cut-d”“-f4
用于类和行负责。这个问题真正属于超级用户…不涉及编程。我认为这属于serverfault。也应该使用awk来完成,而不是grep.nooo而不是grep+awk!只需执行awk'/ERROR/{print$1$4}“我同意从您目前所描述的情况来看,awk比grep更适合。注意——因为日期/时间戳实际上是两个字段(特别是在awk看来),所以打印需要是”{print$1$2$5}LOL.My bad.Force of havity。自从我发现perl以来,从未进入过awk。