3 votes

Comment extraire les exceptions du fichier journal de java ?

J'ai un énorme fichier journal avec de nombreuses exceptions et j'ai besoin d'extraire les traces de pile complètes et quelques lignes avant et après. Ce serait parfait si l'outil pour cela est bash script. exemple :

    $16.02.2012 16:04:34 *INFO * [main] InitialContextInitializer: Reference bound: rmirepository (InitialContextInitializer.java, line 203) 
16.02.2012 16:04:34 *ERROR* [main] StandaloneContainerInitializedListener: Error of StandaloneContainer initialization (StandaloneContainerInitializedListener.java, line 109) 
java.lang.RuntimeException: Cannot instantiate component key=org.exoplatform.services.jcr.ext.script.groovy.GroovyScript2RestLoader type=org.exoplatform.services.jcr.ext.script.groovy.GroovyScript2RestLoader found at file:/home/roman/reports/backup/1.14.7-5636/rdbms/single/exo-tomcat_1.14.7-5636/exo-configuration.xml
    at org.exoplatform.container.jmx.MX4JComponentAdapter.getComponentInstance(MX4JComponentAdapter.java:134)
    at org.exoplatform.container.management.ManageableComponentAdapter.getComponentInstance(ManageableComponentAdapter.java:68)
    at org.exoplatform.container.ConcurrentPicoContainer.getInstance(ConcurrentPicoContainer.java:468)
    at org.exoplatform.container.ConcurrentPicoContainer.getComponentInstancesOfType(ConcurrentPicoContainer.java:366)
    at org.exoplatform.container.CachingContainer.getComponentInstancesOfType(CachingContainer.java:111)
    at org.exoplatform.container.LifecycleVisitor.visitContainer(LifecycleVisitor.java:151)
    at org.exoplatform.container.ConcurrentPicoContainer.accept(ConcurrentPicoContainer.java:615)
    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.picocontainer.defaults.AbstractPicoVisitor.traverse(AbstractPicoVisitor.java:32)
    at org.exoplatform.container.LifecycleVisitor.traverse(LifecycleVisitor.java:90)
    at org.exoplatform.container.LifecycleVisitor.start(LifecycleVisitor.java:170)
    at org.exoplatform.container.ConcurrentPicoContainer.start(ConcurrentPicoContainer.java:554)
    at org.exoplatform.container.ExoContainer.start(ExoContainer.java:266)
    at org.exoplatform.container.StandaloneContainer$3.run(StandaloneContainer.java:178)
    at org.exoplatform.container.StandaloneContainer$3.run(StandaloneContainer.java:175)
    at org.exoplatform.commons.utils.SecurityHelper.doPrivilegedAction(SecurityHelper.java:291)
    at org.exoplatform.container.StandaloneContainer.getInstance(StandaloneContainer.java:174)
    at org.exoplatform.container.StandaloneContainer.getInstance(StandaloneContainer.java:129)
    at org.exoplatform.ws.frameworks.servlet.StandaloneContainerInitializedListener.contextInitialized(StandaloneContainerInitializedListener.java:104)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.RuntimeException: Cannot instantiate component key=org.exoplatform.services.jcr.RepositoryService type=org.exoplatform.services.jcr.impl.RepositoryServiceImpl found at file:/home/roman/reports/backup/1.14.7-5636/rdbms/single/exo-tomcat_1.14.7-5636/exo-configuration.xml
    at org.exoplatform.container.jmx.MX4JComponentAdapter.getComponentInstance(MX4JComponentAdapter.java:134)
    at org.exoplatform.container.management.ManageableComponentAdapter.getComponentInstance(ManageableComponentAdapter.java:68)
    at org.exoplatform.container.ConcurrentPicoContainer.getInstance(ConcurrentPicoContainer.java:468)
    at org.exoplatform.container.ConcurrentPicoContainer.getComponentInstanceOfType(ConcurrentPicoContainer.java:422)
    at org.exoplatform.container.CachingContainer.getComponentInstanceOfType(CachingContainer.java:139)
    at org.exoplatform.container.ExoContainer.createComponent(ExoContainer.java:407)
    at org.exoplatform.container.jmx.MX4JComponentAdapter.getComponentInstance(MX4JComponentAdapter.java:96)
    ... 45 more

5voto

Aaron Digulla Points 143830

Utilice awk :

BEGIN {
    previous = "";
}
/^\tat / {
    if( previous != "" ) {
        print previous;
    previous = "";
    }
    print;
    next;
}
 { previous = $0; }

devrait faire l'affaire. En un mot, cherchez le modèle \tat (tab, at, blank) qui est presque toujours utilisé dans une trace de pile.

Si vous avez beaucoup d'exceptions, vous pouvez utiliser des cartes (tableaux associatifs dans le jargon d'AWK) pour sauvegarder une partie du message d'exception et ensuite faire des statistiques (comme quelle exception se produit le plus souvent).

2voto

Sandeep Points 313

La plupart des lignes du bloc d'exception Java commencent par le délimiteur TAB.

Ainsi, pour obtenir toutes les exceptions d'un énorme fichier journal, vous pouvez utiliser le délimiteur TAB de grep.

Utilisez la commande suivante pour extraire toutes les exceptions d'un fichier :

\*\*$ grep -P -A 15 -B 15 "^\\t" inputLogFile\*\*

0voto

Harshal Points 171

Vous pouvez utiliser la commande suivante grep -B 10 -A 100 "Caused By" app.log -->Ceci donnera toutes les exceptions java enregistrées dans le fichier journal de l'application. Vous pouvez changer la chaîne si vous voulez trouver des exceptions spécifiques. https://www.techiedelight.com/java-program-search-exceptions-huge-log-file-on-server/

-1voto

curiousguy Points 609

Vous pouvez essayer quelque chose comme ça,

=======
grep -B20 -A20 ^'$16.02.2012 16:04:34' <path/to/log/file>
=======

Where 
-B20 -- will display 20 lines before the line where the match was found.
-A20 -- will display 20 lines after the line where the match was found.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X