我正在尝试使用AspectJ创建日志文件,输出应该写入文件,日志文件具有特定的语法:

START

"THREAD_ID";"METHOD_NAME";"begin_or_end METHOD";"instant time"

STOP

代码不起作用:(

你可以帮助我?

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.aspectj.lang.Signature;

aspect Trace{

    private static File salva;
    private static FileWriter fw;
    pointcut traceMethods() : (execution(* *(..))&& !cflow(within(Trace)));

    before(): traceMethods(){
        salva = new File(".\trace.csv");
        try {
            fw = new FileWriter(salva,true);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Signature sig = thisJoinPointStaticPart.getSignature();
        String line =""+ thisJoinPointStaticPart.getSourceLocation().getLine();
        String sourceName = thisJoinPointStaticPart.getSourceLocation().getWithinType().getCanonicalName();
        Logger.getLogger("Tracing").log(
                Level.INFO, 
                "Call from "
                    +  sourceName
                    +" line " +
                    line
                    +" to " +sig.getDeclaringTypeName() + "." + sig.getName()

        );
        writeFile(sig);
        try {
            fw.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void writeFile(Signature sig){
        long temp = System.currentTimeMillis();
        //inizio esecuzione traccia:
        try {
            fw.write("START\n");
            fw.write("S02034;");
            fw.write(sig.getDeclaringTypeName()+"."+sig.getName()+";"+temp+";"+"a\n");
            fw.write("STOP\n");
            fw.flush();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }


}