私の会社は特定のエラーをチェックするためにTomcatのログファイルを分析し、Powershellを使用する必要があります。これらのエラーは配列に格納され、1:1に対してチェックされます。これは、Windowsタスクスケジューラを使用して30分ごとに発生します。このようなエラーがログファイルに見つかった場合、生成されたテキストファイルが管理者に送信されます。定義された時間より長いログファイルのエントリを見つける
ただし、過去30分間の間にエラーをチェックするのはあまり重要ではありません。私はこのようなエラーの有無を確認する上でその後
$logTimeStart = (Get-Date).AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:ss")
:
は、だから私は初めてのための変数を定義している
$request = Get-Content ($logFile) | select -last 100 | where { $_ -match $errorName -and $_ -gt $logTimeStart }
は、残念ながら、これは動作しません。この間隔の30分前に発生したエラーも送信します。ここで
は、Tomcatログの抜粋です:
2016-05-25 14:21:30,669 FATAL [http-apr-8080-exec-4] [email protected] de.abc.def.business.service.ExplorerService GH00000476: de.abc.def.business.VisjBusinessException: Invalid InstanceId at de.abc.def.business.service.ExplorerService$ExplorerServiceStatic.getExplorer(ExplorerService.java:721) at de.abc.def.business.service.ExplorerService$ExplorerServiceStatic.getTreeItemList(ExplorerService.java:823) at sun.reflect.GeneratedMethodAccessor141.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at de.abc.def.business.provider.ServiceProvider.callServiceMethod(ServiceProvider.java:258) at de.abc.def.business.communication.web.client.ServiceDirectWrapperDelegate.callServiceMethod(ServiceDirectWrapperDelegate.java:119) at de.abc.def.business.communication.web.client.ServiceWrapperBase.callServiceMethod(ServiceWrapperBase.java:196) at de.abc.def.business.communication.web.client.ServiceDirectWrapper.callServiceMethod(ServiceDirectWrapper.java:24) at de.abc.def.web.app.service.stub.AbstractBaseStub.callServiceMethodDirect(AbstractBaseStub.java:72) at de.abc.def.web.app.service.stub.AbstractBaseStub.callServiceMethod(AbstractBaseStub.java:183) at de.abc.def.web.app.service.stub.StubSrvExplorer.getTreeItemList(StubSrvExplorer.java:135) at de.abc.def.web.app.resource.servlet.ExplorerServlet.createXml(ExplorerServlet.java:350) at de.abc.def.web.app.resource.servlet.ExplorerServlet.callExplorerServlet(ExplorerServlet.java:101) at de.abc.def.web.app.resource.servlet.VisServlet.handleServlets(VisServlet.java:244) at de.abc.def.web.app.FlowControlAction.isPing(FlowControlAction.java:148) at de.abc.def.web.app.FlowControlAction.execute(FlowControlAction.java:101) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
残念ながら1は、このようなエラーの行が表示されますどのように多くの言うことができません。したがって、100は単なる推定値です(うまくいく)。
は、どのように正しいものに関連したライン$request = Get-Content ($logFile) | select -last 100 |
where { $_ -match $errorName -and $_ -gt $logTimeStart }
を変更するには?
umangledログのサンプルをご提示ください。 –
あなたの質問ごとに私のリクエストを編集しました。 – Joey
私は言いました。元のテキストがどのように見えるかを見る必要があります(インデントとすべて)。行を分割したり結合したりせずに、ログファイルからコピー/ペーストします。挿入したスニペットを選択し、エディットボックスの上の '{}'シンボルをクリックします。 –