입력 파일을 구문 분석하고 파일의 특정 부분 만 읽어야하는 요구 사항이 있습니다. 정보 경고 및 오류와 같은 다른 수준의 로그 파일이 있습니다. 이제 전체 오류 스택 추적을 포함하는 부분 만 읽어야합니다. 어떻게 내가 자바를 사용하여 이것을 달성 할 수 있습니다.Java - 입력 스트림의 특정 부분 만 읽는 방법
예 : 내가 스택 추적이 끝날 때까지 ERROR부터 모든 라인을 추출 (읽기) 할 필요가 위의 로그에서
INFO | 2011-04-13 17:59:22,810 | Calling Feedback from 127.0.0.1
INFO | 2011-04-13 17:59:24,920 | Successfully called Feedback from 127.0.0.1
INFO | 2011-04-13 17:59:31,561 | FeedBackList
ERROR | 2011-04-13 19:00:41,640 |
java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:228)
at java.util.concurrent.FutureTask.get(FutureTask.java:91)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:111)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy309.getConsumerProfileData(Unknown Source)
at com.scea.usps.model.service.impl.AccountSettingsServiceImpl.getUserProfile(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:111)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy284.getUserProfile(Unknown Source)
at com.scea.usps.model.common.PsninfoUtility.getTop3Generes(Unknown Source)
at com.scea.usps.model.common.PsninfoUtility.updatePsnInfoDetail(Unknown Source)
at com.scea.platform.framework.api.PsnInfoThread.run(Unknown Source)
at java.lang.Thread.run(Thread.java:619)
INFO | 2011-04-13 17:59:22,810 | Calling Feedback from 127.0.0.1
INFO | 2011-04-13 17:59:24,920 | Successfully called Feedback from 127.0.0.1
INFO | 2011-04-13 17:59:31,561 | FeedBackList
. 이것에 대한 아이디어를 공유하십시오. 감사.
당신이 "파일의 특정 부분을 읽기"말할 때 당신은 당신이 파일에서 해당 구문을 분석 할 필요가 의미합니까? 내가 원하는 것은 적절한 데이터를 파싱하는 알고리즘이나 좀 더 복잡한 알고리즘을 찾고 있다는 것입니다. 또한 모든 "ERRORS"에 스택 추적이 있습니까? ERROR/INFO와 개행의 유일한 시작 항목입니까? 이것이 단지 "기본적인 질문"일 뿐이라면 아래의 Brian의 대답이 가장 적합합니다. – Mike
왜 로그 파일 파서가 Java 여야합니까? – MarkOfHall
Chainsaw, http://logging.apache.org/chainsaw/index.html에서이 기능을 처리 할 수 있는지 확신 할 수 없지만 자체 애플리케이션을 만들기 전에 시도해 볼 가치가 있습니다. – Kennet