Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 过滤日志文件的输出大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

题 我有一个日志文件,显示我的网站的所有控制台日志,范围为10.oct到1.Nov,从10.oct的日志开始. 我需要从25.oct到今天的所有日志. 问题是有一个很大的例外.每天我得到超过21行的IOException和6030用户的IOException,所以我看不到大约126’600行代码;每天. 所以我需要过滤输出才能再次正常读取日志. 我已经尝试过的: less catalina.out

我有一个日志文件,显示我的网站的所有控制台日志,范围为10.oct到1.Nov,从10.oct的日志开始.
我需要从25.oct到今天的所有日志.

问题是有一个很大的例外.每天我得到超过21行的IOException和6030用户的IOException,所以我看不到大约126’600行代码;每天.

所以我需要过滤输出才能再次正常读取日志.

我已经尝试过的:

less catalina.out | grep -v "java.io.IOException: Server returned http response code: 401 for URL"

日志文件名为catalina.out.但它不是我的代码不隐藏异常,我无法滚动输出.
那我在做错什么?代码应该如何?

关于我的信息
我不熟悉Linux.我在一个支持小组工作,但今天我独自一人,一个网站遇到麻烦.所以我需要自己解决它.
我现在谷歌它45分钟,但没有得到它和问题赶紧…所以请耐心等待我…

INFO关于这个问题
这里有关于我的问题的所有事实和信息:
日志文件名:catalina.out
整个IOException我想隐藏并每天重复6030次:

java.io.IOException: Server returned http response code: 401 for URL: http://secure.intern.webpage/userpicture/u117054.jpg
        at sun.net.www.protocol.http.httpURLConnection.geTinputStream(httpURLConnection.java:1625)
        at java.net.URL.openStream(URl.java:1037)
        at ch.sbb.wzuapp.business.batch.PersonCleanupNightlyJob.downloadUrl(PersonCleanupNightlyJob.java:270)
        at ch.sbb.wzuapp.business.batch.PersonCleanupNightlyJob.downloadPic(PersonCleanupNightlyJob.java:245)
        at ch.sbb.wzuapp.business.batch.PersonCleanupNightlyJob.doCleanup(PersonCleanupNightlyJob.java:76)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegaTingMethodAccessorImpl.invoke(DelegaTingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.springframework.scheduling.support.scheduledMethodRunnable.run(scheduledMethodRunnable.java:64)
        at org.springframework.scheduling.support.DelegaTingErrorHandlingRunnable.run(DelegaTingErrorHandlingRunnable.java:53)
        at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at java.util.concurrent.scheduledThreadPoolExecutor$scheduledFutureTask.access$201(scheduledThreadPoolExecutor.java:178)
        at java.util.concurrent.scheduledThreadPoolExecutor$scheduledFutureTask.run(scheduledThreadPoolExecutor.java:292)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:722)

每个例外中唯一改变的是图片名称.其他一切都是一样的.

解决方法

好吧,真正有趣的问题,因为它必须在管道末端运行.可能有更简单的方法来做到这一点,但我发现这个有用(并且它使用了sysadmin的 Swiss Army Chainsaw,perl):
tail -f catalina.out | perl -n -e '{ if (/^java.io.IOException: Server returned http response code: 401/) { $ignore=1;} elsif ($ignore>=1 and $ignore<20) {$ignore++;} else {$ignore=0; print $_;}  }'

基本上,它一次遍历STDIN一行,查找搜索字符串(“^ java.io.IOException:Server返回http响应代码:401”).在它被发现之前,它会打印每一行;一旦发现它,它开始计数到20,每个新线路一次,在计数时不打印;一旦计数达到20,它将计数重置为零,并恢复打印每个新行.

编辑:没问题.从尾巴-100000f开始catalina.out | …,或者确实是一个更大的数字,如果日志文件有更多的行.如果您不想看到添加的新内容,请尝试

perl -n -e '{ if (/^java.io.IOException: Server returned http response code: 401/) { $ignore=1;} elsif ($ignore>=1 and $ignore<20) {$ignore++;} else {$ignore=0; print $_;}  }' < catalina.out.

它专为在管道中使用而设计,因此您可以根据需要将其移除,并且可以将输出发送到任何需要它.这是UNIX的方式!

大佬总结

以上是大佬教程为你收集整理的linux – 过滤日志文件的输出全部内容,希望文章能够帮你解决linux – 过滤日志文件的输出所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。