diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/devGuideDB/ltw.xml | 29 | ||||
-rw-r--r-- | docs/dist/doc/index.html | 2 | ||||
-rw-r--r-- | docs/pdGuideDB/ajcore.xml | 177 | ||||
-rw-r--r-- | docs/pdGuideDB/ltwdump.xml | 69 | ||||
-rw-r--r-- | docs/pdGuideDB/messages.xml | 143 | ||||
-rw-r--r-- | docs/pdGuideDB/pdguide.xml | 4 | ||||
-rw-r--r-- | docs/pdGuideDB/trace.xml | 90 |
7 files changed, 495 insertions, 19 deletions
diff --git a/docs/devGuideDB/ltw.xml b/docs/devGuideDB/ltw.xml index dedfdb2e7..39d584233 100644 --- a/docs/devGuideDB/ltw.xml +++ b/docs/devGuideDB/ltw.xml @@ -457,6 +457,29 @@ immediately you can use the option <literal>-Daj.weaving.verbose=true</literal> on the JVM startup command line. </entry> </row> + <row> + <entry> + <literal>-debug</literal> + </entry> + <entry> + Issue a messages for each class passed to the weaver + indicating whether it was woven, excluded or ignored. + Also issue messages for classes + defined during the weaving process such as around advice + closures and concrete aspects defined in + <literal>META-INF/aop.xml</literal>. + </entry> + </row> + <row> + <entry> + <literal>-showWeaveInfo</literal> + </entry> + <entry> + Issue informational messages whenever the weaver touches a class file. + This option may also be enabled using the System property + <literal>-Dorg.aspectj.weaver.showWeaveInfo=true</literal>. + </entry> + </row> <!-- TODO option parsed but not used --> <!-- <row> @@ -509,12 +532,6 @@ </row> <row> <entry> - <literal>-showWeaveInfo</literal> - </entry> - <entry>Issue informational messages whenever the weaver touches a class file</entry> - </row> - <row> - <entry> <literal>-XmessageHandlerClass:...</literal> </entry> <entry>Provide alternative output destination to stdout/stderr for all weaver messages. diff --git a/docs/dist/doc/index.html b/docs/dist/doc/index.html index 050e93c70..93cce181a 100644 --- a/docs/dist/doc/index.html +++ b/docs/dist/doc/index.html @@ -103,7 +103,7 @@ (printable <a href="devguide/printable.html">html</a>) </td> - <td>This has a guide to + <td>This is a guide to <a href="devguide/ajc-ref.html">ajc</a>, the command-line compiler; <a href="devguide/ajbrowser.html">ajbrowser</a>, the stand-alone GUI for compiling and viewing crosscutting structure; diff --git a/docs/pdGuideDB/ajcore.xml b/docs/pdGuideDB/ajcore.xml index d600cb029..8877f4354 100644 --- a/docs/pdGuideDB/ajcore.xml +++ b/docs/pdGuideDB/ajcore.xml @@ -6,10 +6,183 @@ <para> When the compiler terminates abnormally, either because a particular kind of message was issued or an exception was thrown, an AspectJ core file will be produced. You will - find it the working directory of the compiler and will have a name that contains + find it the working directory of the compiler and it will have a name that contains the date and time that the file was produced - e.g. <literal>ajcore.20060810.173655.626.txt</literal>. </para> + e.g. <literal>ajcore.20060810.173655.626.txt</literal>. The file contains details + of the problem such as the exception thrown as well as information about the + environement such as operating system and Java version. </para> <para> </para> + + <sect2 id="configuration" xreflabel="configuration"> + <title>Configuration</title> + + <para> By default AspectJ will only create an <literal>ajcore</literal> file + when an unexpected exception is thrown by the weaver or an + <literal>abort</literal> message is + issued. However it is possible to disble this feature or enable files to + be produced under different circumstances. The table below lists the System + properties that can be used to configure <literal>ajcore</literal> files. </para> + <informaltable> + <tgroup cols="3"> + <thead> + <row> + <entry>Property</entry> + <entry>Default</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry> + <literal>org.aspectj.weaver.Dump.exception</literal> + </entry> + <entry> + <literal>true</literal> + </entry> + <entry> + Generate an <literal>ajcore</literal> files when an exception thrown. + </entry> + </row> + <row> + <entry> + <literal>org.aspectj.weaver.Dump.condition</literal> + </entry> + <entry> + <literal>abort</literal> + </entry> + <entry> + Message kind for which to generate <literal>ajcore</literal> + e.g. <literal>error</literal>. + </entry> + </row> + </tbody> + </tgroup> + </informaltable> + </sect2> + + <sect2 id="examples" xreflabel="examples"> + <title>Examples</title> + + <para> Below is an extract from an <literal>ajcore</literal> file. You will see + details of the dump configuration as well as the exception (with stack trace) that + is the source of the problem and any messages issued by the compiler. Most importantly + the exact version of AspectJ is included. </para> + <programlisting><![CDATA[ +---- AspectJ Properties --- +AspectJ Compiler DEVELOPMENT built on Tuesday Jul 25, 2006 at 13:00:09 GMT +---- Dump Properties --- +Dump file: ajcore.20060810.173655.626.txt +Dump reason: java.lang.NoClassDefFoundError +Dump on exception: true +Dump at exit condition: abort +---- Exception Information --- +java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory + at org.aspectj.weaver.tools.CommonsTraceFactory.<init>(CommonsTraceFactory.java:17) + at java.lang.Class.newInstance0(Native Method) + at java.lang.Class.newInstance(Class.java:232) + at org.aspectj.weaver.tools.TraceFactory.<clinit>(TraceFactory.java:35) + at org.aspectj.weaver.World.<clinit>(World.java:114) + at org.aspectj.ajdt.internal.core.builder.AjBuildManager.initBcelWorld(AjBuildManager.java:679) + at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:224) + at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:164) + at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112) + at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60) + at org.aspectj.tools.ajc.Main.run(Main.java:367) + at org.aspectj.tools.ajc.Main.runMain(Main.java:246) + at org.aspectj.tools.ajc.Main.main(Main.java:86) +---- System Properties --- +java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition +sun.boot.library.path=C:\jdk1.3.1_16\jre\bin +java.vm.version=1.3.1_16-b06 +java.vm.vendor=Sun Microsystems Inc. +java.vendor.url=http://java.sun.com/ +path.separator=; +java.vm.name=Java HotSpot(TM) Client VM +file.encoding.pkg=sun.io +java.vm.specification.name=Java Virtual Machine Specification +user.dir=C:\workspaces\org.aspectj\org.aspectj.ant.tests +java.runtime.version=1.3.1_16-b06 +java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment +os.arch=x86 +java.io.tmpdir=C:\DOCUME~1\IBM_user\LOCALS~1\Temp\ +line.separator= + +java.vm.specification.vendor=Sun Microsystems Inc. +java.awt.fonts= +os.name=Windows XP +java.library.path=C:\jdk1.3.1_16\jre\bin;... +java.specification.name=Java Platform API Specification +java.class.version=47.0 +os.version=5.1 +user.home=C:\Documents and Settings\IBM_user +user.timezone=Europe/London +java.awt.printerjob=sun.awt.windows.WPrinterJob +file.encoding=Cp1252 +java.specification.version=1.3 +java.class.path=C:\workspaces\org.aspectj\aj-build\dist\tools\lib\aspectjtools.jar +user.name=IBM_user +java.vm.specification.version=1.0 +java.home=C:\jdk1.3.1_16\jre +user.language=en +java.specification.vendor=Sun Microsystems Inc. +awt.toolkit=sun.awt.windows.WToolkit +java.vm.info=mixed mode +java.version=1.3.1_16 +java.ext.dirs=C:\jdk1.3.1_16\jre\lib\ext +sun.boot.class.path=C:\jdk1.3.1_16\jre\lib\rt.jar;... +java.vendor=Sun Microsystems Inc. +file.separator=\ +java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi +sun.io.unicode.encoding=UnicodeLittle +sun.cpu.endian=little +user.region=GB +sun.cpu.isalist=pentium i486 i386 +---- Command Line --- +-d +C:\workspaces\org.aspectj\org.aspectj.ant.tests\IncrementalAjcTaskTest-temp +-g:none +-deprecation +-noExit +-warn:-unusedImport +-nowarn +-XterminateAfterCompilation +-preserveAllLocals +-proceedOnError +-referenceInfo +-source +1.3 +-target +1.1 +-time +-verbose +-classpath +C:\workspaces\org.aspectj\org.aspectj.ant.tests\..\lib\test\aspectjrt.jar +-argfile +C:\workspaces\org.aspectj\taskdefs\testdata\default.lst +-messageHolder +org.aspectj.bridge.MessageHandler +---- Full Classpath --- +Empty +---- Compiler Messages --- +abort ABORT -- (NoClassDefFoundError) org/apache/commons/logging/LogFactory +org/apache/commons/logging/LogFactory +java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory + at org.aspectj.weaver.tools.CommonsTraceFactory.<init>(CommonsTraceFactory.java:17) + at java.lang.Class.newInstance0(Native Method) + at java.lang.Class.newInstance(Class.java:232) + at org.aspectj.weaver.tools.TraceFactory.<clinit>(TraceFactory.java:35) + at org.aspectj.weaver.World.<clinit>(World.java:114) + at org.aspectj.ajdt.internal.core.builder.AjBuildManager.initBcelWorld(AjBuildManager.java:679) + at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:224) + at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:164) + at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112) + at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60) + at org.aspectj.tools.ajc.Main.run(Main.java:367) + at org.aspectj.tools.ajc.Main.runMain(Main.java:246) + at org.aspectj.tools.ajc.Main.main(Main.java:86) + ]]></programlisting> + + </sect2> </sect1> </chapter> diff --git a/docs/pdGuideDB/ltwdump.xml b/docs/pdGuideDB/ltwdump.xml index 99240965a..36b1bea3a 100644 --- a/docs/pdGuideDB/ltwdump.xml +++ b/docs/pdGuideDB/ltwdump.xml @@ -4,8 +4,71 @@ <sect1 id="ltwdump-introduction"> <title>Introduction</title> - <para> Occasionally problems may be encountered with classes that have been load-time woven. Symptoms will - include incorrect program function or a Java exception such as - <literal>java.lang.VerifyError</literal>.</para> + <para> Occasionally problems may be encountered with classes that have been load-time woven. + Symptoms will include incorrect program function or a Java exception such as + <literal>java.lang.VerifyError</literal>. Problems can be caused by the way + an aspect or class is built, incompatibilities between AspectJ and + generated byte-code + e.g. <ulink url="https://bugs.eclipse.org/bugs/show_bug.cgi?id=117854">CGLIB</ulink> + or a bug in the weaver. + When these problems occur it may be necessary to attach the class files concerned + to a bug report. AspectJ can be configured to dump byte-code to disk using + <literal>META-INF/aop.xml</literal>. The <literal>_ajdump</literal> subdirectory the the current + working directory is used. </para> + + <sect2 id="configuration" xreflabel="configuration"> + <title>Configuration</title> + + <para> See the + <ulink url="../devguide/ltw-configuration.html#configuring-load-time-weaving-with-aopxml-files"> + Development Environment Guide</ulink> + for details of how to configure byte-code dumping. </para> + </sect2> + + <sect2 id="examples" xreflabel="examples"> + <title>Examples</title> + + <para> By default AspectJ will dump byte-code only after it is woven. This + is because usually the original class file is already available. However + byte-code is sometimes generated by frameworks or downloaded over the network + in which case AsepctJ can dump the byte-code before it is woven too. </para> + + <para> The following <literal>META-INF/aop.xml</literal> will + weave classes in the <literal>com.foo</literal> package (and subpackages) but not + CGLIB generated classes in the <literal>com.foo.bar</literal> package (and subpackages). + It will also ensure all + woven byte-code is dumped both before and after weaving. </para> + <programlisting><![CDATA[ + <aspectj> + <aspects> + <aspect name="ataspectj.EmptyAspect"/> + </aspects> + <weaver options="-verbose -debug"> + <dump within="com.foo.bar..*" beforeandafter="true"/> + <include within="com.foo..*"/> + <exclude within="com.foo.bar..*CGLIB*"/> + </weaver> + </aspectj> + ]]></programlisting> + + <para> You should see messages similar to this: </para> + + <programlisting><![CDATA[ +[WeavingURLClassLoader] info AspectJ Weaver Version 1.5.3 built on Thursday Oct 26, 2006 at 17:22:31 GMT +[WeavingURLClassLoader] info register classloader org.aspectj.weaver.loadtime.WeavingURLClassLoader +[WeavingURLClassLoader] info using configuration /C:/tempMETA-INF/aop.xml +[WeavingURLClassLoader] info register aspect ataspectj.EmptyAspect +[WeavingURLClassLoader] debug not weaving 'com.foo.bar.Test$$EnhancerByCGLIB$$12345' +[WeavingURLClassLoader] debug weaving 'com.foo.bar.Test' + ]]></programlisting> + + <para> On disk you would find the following files: </para> + + <programlisting><![CDATA[ + _ajdump/_before/com/foo/bar/Test.class + _ajdump/com/foo/bar/Test.class + ]]></programlisting> + + </sect2> </sect1> </chapter> diff --git a/docs/pdGuideDB/messages.xml b/docs/pdGuideDB/messages.xml index d7fcf3ef7..0dae391cd 100644 --- a/docs/pdGuideDB/messages.xml +++ b/docs/pdGuideDB/messages.xml @@ -6,10 +6,124 @@ <para> By default only warning and error messages are issued by the compiler whether it is being used for source code compilation, weaving, binary weaving or load-time weaving. Informational, - debug and weaving messages can also be obtained using compiler options or System properties. </para> + debug and weaving messages can also be obtained using compiler options + or System properties. Also as well as being able to soften or ignore + certain error messages the various <literal>-Xlint</literal> + <ulink url="../devguide/ajc-ref.html">options</ulink> can be used to + notify you of conditions that would otherwise be ignored. </para> + + <para> It is often difficult to determine, especially when using load-time weaving (LTW), + why advice has not been woven. Here is a quick guide to the messages to + look for. Firstly if you use the <literal>-verbose</literal> option you + should see the following message when your aspect is registered: </para> + + <programlisting><![CDATA[ + info register aspect MyAspect + ]]></programlisting> + + <para> Secondly if you use the <literal>-debug</literal> option you should + see a message indicating that you class is being woven: </para> + + <programlisting><![CDATA[ + debug weaving 'HelloWorld' + ]]></programlisting> + + <para> However this does not mean that advice has actually been woven into + your class merely that the class has been passed to the weaver. So thirdly to determine + whether your pointcuts match you can use the <literal>-showWeaveInfo</literal> + option which will cause a message to be issued each time a piece of advice is woven: </para> + + <programlisting><![CDATA[ + weaveinfo Join point 'method-execution(void HelloWorld.main(java.lang.String[]))' ... + ]]></programlisting> <sect2 id="configuration" xreflabel="configuration"> <title>Configuration</title> + + <para> The table below lists the options used to control AspectJ messages. The method + of configuration depends on your environment so refer to the relevant + documentation for + <ulink url="../devguide/ajc-ref.html">ajc</ulink>, + <ulink url="../devguide/antTasks-iajc.html#antTasks-iajc-options">Ant</ulink> or + <ulink url="../devguide/ltw-configuration.html#weaver-options">LTW</ulink>. </para> + <informaltable> + <tgroup cols="2"> + <thead> + <row> + <entry>Option</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry> + <literal>-verbose</literal> + </entry> + <entry> + Show informational messages including AspectJ version + and build date. + </entry> + </row> + <row> + <entry> + <literal>-debug</literal> + </entry> + <entry> + (Load-time weaving only). Show debugging messages such as + which classes are being woven or those that are excluded. + </entry> + </row> + <row> + <entry> + <literal>-showWeaveInfo</literal> + </entry> + <entry> + Show weaving messages. + </entry> + </row> + <row> + <entry> + <literal>-Xlint</literal> + </entry> + <entry> + Control level of lint messages. + </entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para> The table below lists some useful <literal>-Xlint</literal> messages. </para> + <informaltable> + <tgroup cols="3"> + <thead> + <row> + <entry>Message</entry> + <entry>Default</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry> + <literal>aspectExcludedByConfiguration</literal> + </entry> + <entry> + <literal>ignore</literal> + </entry> + <entry> + If an aspect is not being woven, despite being + registered, it could be that it has been excluded + by either an <literal>include</literal> or <literal>exclude</literal> + element in the + <literal>aspects</literal> section of <literal>META-INF/aop.xml</literal>. + Enable this message to determine whether an aspect has + been excluded. + </entry> + </row> + </tbody> + </tgroup> + </informaltable> <para> </para> </sect2> @@ -17,7 +131,32 @@ <sect2 id="examples" xreflabel="examples"> <title>Examples</title> - <para> </para> + <para> You can use <literal>META-INF/aop.xml</literal> to control which + messages are produced during LTW. The following example will produce + basic informational messages about the lifecyle of the weaver in + addition to any warning or error messages. </para> + + <programlisting><![CDATA[ + <aspectj> + <weaver options="-verbose"> + </weaver> + </aspectj> + ]]></programlisting> + + <para> Notice that you are told exactly which <literal>META-INF/aop.xml</literal> + configurations file(s) are being used. Each message is also preceeded by the + name of the defining class loader associated with weaver. You can use this + information in a large system to distinguish between different applications each + of which will typically have its own class loader. </para> + + <programlisting><![CDATA[ +[AppClassLoader@92e78c] info AspectJ Weaver Version 1.5.3 built on Thursday Oct 26, 2006 at 17:22:31 GMT +[AppClassLoader@92e78c] info register classloader sun.misc.Launcher$AppClassLoader@92e78c +[AppClassLoader@92e78c] info using configuration /C:/temp/META-INF/aop.xml +[AppClassLoader@92e78c] info using configuration /C:/temp/META-INF/aop-ajc.xml +[AppClassLoader@92e78c] info register aspect ExceptionHandler +[AppClassLoader@92e78c] info processing reweavable type ExceptionHandler: ExceptionHandler.aj + ]]></programlisting> </sect2> </sect1> </chapter> diff --git a/docs/pdGuideDB/pdguide.xml b/docs/pdGuideDB/pdguide.xml index 2090cb6cb..8b79e6573 100644 --- a/docs/pdGuideDB/pdguide.xml +++ b/docs/pdGuideDB/pdguide.xml @@ -30,7 +30,9 @@ <para> This guide describes how to gather and interpret information from the AspectJ compiler to when diagnsoing problems in AspectJ programs, configuring the load-time weaving - framework or reporting bugs on Bugzilla. + framework or reporting bugs on Bugzilla. Some information e.g. messages is intended to + help you solve coding or configuration problems. Other information is intended to be + be used by the AspectJ team when trying to fix bugs. </para> </abstract> </bookinfo> diff --git a/docs/pdGuideDB/trace.xml b/docs/pdGuideDB/trace.xml index 85d51e97a..382d87842 100644 --- a/docs/pdGuideDB/trace.xml +++ b/docs/pdGuideDB/trace.xml @@ -7,9 +7,9 @@ <para> The usual approach to opening a report on Bugzilla is to describe the symptoms of the problem and attach a simple testcase. This allows the AspectJ team to try and reproduce the problem in an attempt to fix it as well as improve the test suite. Unfortunately it may not be possible - to produce such a testcase either because your program is too large or is comercially sensitive. Alternatively + to produce such a testcase either because your program is too large or is commercially sensitive. Alternatively the problem may relate to your specific environment where AspectJ is being used and will not be - reproducible by the AspectJ team. In one of these situations you may be asked to produce a + reproducible by the AspectJ team. In each of these situations you may be asked to produce a trace of the compiler when the problem occurs instead. This can then be attached to the bug report. </para> <sect2 id="configuration" xreflabel="configuration"> @@ -21,7 +21,7 @@ that is configured using a logging.properties file. By default only error and fatal events will be logged but less severe warnings as well as fine grained method entry and exit events can be obtained using the appropriate configuration. All - compiler messages can also be logged through the infrastructure by setting the + regular compiler messages can also be logged through the infrastructure by setting the <literal>org.aspectj.weaving.messages</literal> System property. </para> <para> If you are using a JDK 1.4 or earlier AspectJ will use a simple built-in trace @@ -89,7 +89,89 @@ <sect2 id="examples" xreflabel="examples"> <title>Examples</title> - <para> </para> + <para> Using <literal>-Dorg.aspectj.tracing.factory=default</literal> + to force AspectJ to use its internal infrastructure, + <literal>-Dorg.aspectj.tracing.enabled=true</literal> to turn it on and + <literal>-Dorg.aspectj.tracing.messages=true</literal> to include messages + running a simple HelloWorld with LTW will generate tracing to stderr. Below + is an extract from that trace with method arguments removed. + You will notice the millisecond time stamp, + thread id and indication of entry/exit/event or message type for each line + of trace. + </para> + <programlisting><![CDATA[ +15:44:18.630 main > org.aspectj.weaver.loadtime.Aj.<init> +15:44:18.660 main < org.aspectj.weaver.loadtime.Aj.<init> +15:44:18.660 main > org.aspectj.weaver.loadtime.Aj.preProcess +15:44:18.660 main - org.aspectj.weaver.loadtime.Aj.preProcess +15:44:18.730 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.<init> +15:44:18.730 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.<init> +15:44:18.730 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize +15:44:18.821 main I [AppClassLoader@92e78c] info AspectJ Weaver Version DEVELOPMENT ... +15:44:18.821 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions +15:44:18.821 main I [AppClassLoader@92e78c] info register classloader ... +15:44:18.821 main - org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions +15:44:18.841 main - org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions +15:44:18.841 main I [AppClassLoader@92e78c] info using configuration ... +15:44:18.891 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions +15:44:19.021 main > org.aspectj.weaver.World$TypeMap.<init> +15:44:19.021 main < org.aspectj.weaver.World$TypeMap.<init> +15:44:19.021 main > org.aspectj.weaver.CrosscuttingMembersSet.<init> +15:44:19.021 main < org.aspectj.weaver.CrosscuttingMembersSet.<init> +15:44:19.021 main > org.aspectj.weaver.Lint.<init> +15:44:19.021 main < org.aspectj.weaver.Lint.<init> +15:44:19.021 main > org.aspectj.weaver.World.<init> +15:44:19.111 main < org.aspectj.weaver.World.<init> +15:44:19.201 main > org.aspectj.weaver.bcel.BcelWeaver.<init> +15:44:19.201 main < org.aspectj.weaver.bcel.BcelWeaver.<init> +15:44:19.201 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions +15:44:19.211 main > org.aspectj.weaver.bcel.BcelWeaver.setReweavableMode +15:44:19.351 main < org.aspectj.weaver.bcel.BcelWeaver.setReweavableMode +15:44:19.351 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects +15:44:19.351 main I [AppClassLoader@92e78c] info register aspect Aspect +15:44:19.351 main > org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect +15:44:19.501 main - org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass +15:44:19.632 main > org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect +15:44:19.792 main < org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect +15:44:19.792 main < org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect +15:44:19.792 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects +15:44:19.792 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions +15:44:19.792 main > org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave +15:44:19.822 main < org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave +15:44:19.822 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.weaveAndDefineConcete... +15:44:19.822 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.weaveAndDefineConcete... +15:44:19.822 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize +15:44:19.822 main > org.aspectj.weaver.tools.WeavingAdaptor.weaveClass +... + ]]></programlisting> + + <para> Alternatively when running under Java 5 the <literal>logging.properties</literal> + file below could be used to configure Java Logging. The resulting + file, just containing trace for the + <literal>org.aspectj.weaver.loadtime</literal> package, will be + written to <literal>java0.log</literal> in your <literal>user.home</literal> directory. + </para> + + <programlisting><![CDATA[ +handlers= java.util.logging.FileHandler + +.level= INFO + +java.util.logging.FileHandler.pattern = %h/java%u.log +java.util.logging.FileHandler.count = 1 +java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter +java.util.logging.FileHandler.level = FINER + +org.aspectj.weaver.loadtime.level = FINER + ]]></programlisting> + + <para> + By setting the System property <literal>-Dorg.aspectj.tracing.debug=true</literal> + you should see a message confirming which trace infrastructure is being used. + </para> + <programlisting><![CDATA[ + TraceFactory.instance=org.aspectj.weaver.tools.Jdk14TraceFactory@12dacd1 + ]]></programlisting> </sect2> </sect1> </chapter> |