2017-01-22 18 views
1

私は以下のログファイルを持っています。ログエントリの抽出に使用できるように、正規表現を使用してformateログを定義する必要があります。ログファイルからシーケンスまでの正規表現の抽出

_20131005_022047874 [email protected] **Exception ServiceConnection/createService methord javax.xml.ws.WebServiceException: Failed to access the WSDL at: http://212.118.158.21:8080/tunnel-web/axis/Portlet_ase_FunctionalDomainService?wsdl. It failed with: 
    Connection refused. 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:151) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:133) 
    at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:254) 
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:217) 
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:165) 
    at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:93) 
    at javax.xml.ws.Service.<init>(Service.java:56) 
    at javax.xml.ws.Service.create(Service.java:680) 
    at com.stc.alepo.client.ServiceConnection.createService(ServiceConnection.java:75) 
    at com.stc.alepo.client.WSSoapHandler.<init>(WSSoapHandler.java:73) 
    at com.stc.alepo.client.WSProcessManager.<init>(WSProcessManager.java:114) 
    at com.stc.alepo.client.IcmsAlepoRealTime.start(IcmsAlepoRealTime.java:439) 
    at com.stc.alepo.client.IcmsAlepoRealTime.main(IcmsAlepoRealTime.java:97) 
Caused by: java.net.ConnectException: Connection refused 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) 
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 
    at java.net.Socket.connect(Socket.java:529) 
    at java.net.Socket.connect(Socket.java:478) 
    at sun.net.NetworkClient.doConnect(NetworkClient.java:163) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:394) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:529) 
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:233) 
    at sun.net.www.http.HttpClient.New(HttpClient.java:306) 
    at sun.net.www.http.HttpClient.New(HttpClient.java:323) 
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911) 
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172) 
    at java.net.URL.openStream(URL.java:1010) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.createReader(RuntimeWSDLParser.java:793) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.resolveWSDL(RuntimeWSDLParser.java:251) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:118) 
    ... 11 more 

_20131005_022047874 [email protected] **Exception DCPSoapHandler/constructor methord [Ljava.lang.StackTraceElement;@25b65b7f 
_20131005_022047875 [email protected] WS17249866 **Exception DCPSoapHandler/invokeSOAPMessage methord java.lang.NullPointerException 
    at com.stc.alepo.client.WSSoapHandler.invokeSOAPMessage(WSSoapHandler.java:110) 
    at com.stc.alepo.client.WSProcessManager.getWSReply(WSProcessManager.java:174) 
    at com.stc.alepo.client.IcmsAlepoRealTime.start(IcmsAlepoRealTime.java:441) 
    at com.stc.alepo.client.IcmsAlepoRealTime.main(IcmsAlepoRealTime.java:97) 

iは、各エントリの最初の行に加えて、タイムスタンプと一致する正規表現の下に定義したが、私は複数行を含むメッセージの残りの部分を持っている第2のグループを必要とする、

(_\d{1,8}_\w+) (.*) 

最初のグループが再び発生するまですべての文字を抽出するために2番目のグループに一致する方法、またはこのユースケースを実行するベストプラクティスは何ですか。私は多くのログを持っており、同じ方法で2番目のグループを定義する必要があります。タイムスタンプのformateがログを変更する可能性があります。

ありがとうございます。

+0

JavaまたはJavaScript? – Toto

+0

ログパーサーを使用する方がよいでしょう。 – Toto

+0

https://regex101.com/r/yozuXL/1 –

答えて

0

あなたは1グループにタイムスタンプをキャプチャします正規表現を使用することができますし、グループ2にタイムスタンプパターンで始まらない、それの後にすべての行:

/^(_\d{1,8}_\w+)\s*(.*(?:\r?\n(?!_\d{1,8}_\w+).*)*)/gm 

regex demoを参照してください。

詳細

  • ^ - ラインの開始
  • (_\d{1,8}_\w+) - グループ1(タイムスタンプ):_、1〜8桁、_と1+単語文字
  • \s*から0 +空白
  • (.*(?:\r?\n(?!_\d{1,8}_\w+).*)*) - グループ2(すべて次のタイムスタンプまで):
    • .* - 改行文字以外の任意の0+文字
    • (?:\r?\n(?!_\d{1,8}_\w+).*)* - の0+配列:
      • \r?\n(?!_\d{1,8}_\w+) - 以外の任意の0+文字 - 改行がタイムスタンプパターン
      • .*と続きません改行文字