Browse Source

Bug 150487 "Tracing and Logging Framework" (support debug, info, warn, error and fatal)

tags/post_pr_153572
mwebster 18 years ago
parent
commit
7a0f7a45b2

+ 29
- 35
weaver/src/org/aspectj/weaver/tools/AbstractTrace.java View File

@@ -32,44 +32,12 @@ public abstract class AbstractTrace implements Trace {

public abstract void exit(String methodName, Throwable th);

public void error(String message) {
// TODO Auto-generated method stub

}

public void error(String message, Throwable th) {
// TODO Auto-generated method stub

}

public void event(String methodName) {
// TODO Auto-generated method stub

throw new UnsupportedOperationException("event");
}

public void event(String methodName, Object thiz, Object[] args) {
// TODO Auto-generated method stub

}

public void exit(String methodName) {
// TODO Auto-generated method stub

}

public void info(String message) {
// TODO Auto-generated method stub

}

public void warn(String message) {
// TODO Auto-generated method stub

}

public void warn(String message, Throwable th) {
// TODO Auto-generated method stub

throw new UnsupportedOperationException("event");
}
/*
@@ -90,7 +58,22 @@ public abstract class AbstractTrace implements Trace {
public void exit (String methodName, boolean b) {
exit(methodName,new Boolean(b));
}

public void warn(String message) {
warn(message,null);
}

public void error(String message) {
error(message,null);
}

public void fatal (String message) {
fatal(message,null);
}
/*
* Formatting
*/
protected String formatMessage(String kind, String className, String methodName, Object thiz, Object[] args) {
StringBuffer message = new StringBuffer();
Date now = new Date();
@@ -104,6 +87,17 @@ public abstract class AbstractTrace implements Trace {
return message.toString();
}
protected String formatMessage(String kind, String text, Throwable th) {
StringBuffer message = new StringBuffer();
Date now = new Date();
message.append(formatDate(now)).append(" ");
message.append(Thread.currentThread().getName()).append(" ");
message.append(kind).append(" ");
message.append(text);
if (th != null) message.append(" ").append(formatObj(th));
return message.toString();
}
private static String formatDate (Date date) {
if (timeFormat == null) {
timeFormat = new SimpleDateFormat("HH:mm:ss.SSS");
@@ -166,4 +160,4 @@ public abstract class AbstractTrace implements Trace {
return sb.toString();
}
}
}

+ 30
- 0
weaver/src/org/aspectj/weaver/tools/CommonsTrace.java View File

@@ -61,4 +61,34 @@ public class CommonsTrace extends AbstractTrace {
public void setTraceEnabled (boolean b) {
}

public void debug (String message) {
if (log.isDebugEnabled()) {
log.debug(message);
}
}

public void info(String message) {
if (log.isInfoEnabled()) {
log.info(message);
}
}

public void warn (String message, Throwable th) {
if (log.isWarnEnabled()) {
log.warn(message,th);
}
}

public void error (String message, Throwable th) {
if (log.isErrorEnabled()) {
log.error(message,th);
}
}

public void fatal (String message, Throwable th) {
if (log.isFatalEnabled()) {
log.fatal(message,th);
}
}

}

+ 34
- 0
weaver/src/org/aspectj/weaver/tools/DefaultTrace.java View File

@@ -55,6 +55,40 @@ public class DefaultTrace extends AbstractTrace {
println(formatMessage("<",tracedClass.getName(),methodName,th, null));
}
}
public void debug (String message) {
if (traceEnabled) {
println(formatMessage("?",message,null));
}
}

public void info(String message) {
if (traceEnabled) {
println(formatMessage("I",message,null));
}
}

public void warn (String message, Throwable th) {
if (traceEnabled) {
println(formatMessage("W",message,th));
if (th != null) th.printStackTrace();
}
}


public void error (String message, Throwable th) {
if (traceEnabled) {
println(formatMessage("E",message,th));
if (th != null) th.printStackTrace();
}
}

public void fatal (String message, Throwable th) {
if (traceEnabled) {
println(formatMessage("X",message,th));
if (th != null) th.printStackTrace();
}
}

/**
* Template method that allows choice of destination for output

+ 8
- 1
weaver/src/org/aspectj/weaver/tools/Trace.java View File

@@ -26,6 +26,8 @@ public interface Trace {

public void event (String methodName, Object thiz, Object[] args);
public void debug (String message);
public void info (String message);

public void warn (String message);
@@ -35,6 +37,11 @@ public interface Trace {
public void error (String message);

public void error (String message, Throwable th);

public void fatal (String message);

public void fatal (String message, Throwable th);
/*
* Convenience methods
@@ -48,4 +55,4 @@ public interface Trace {
public boolean isTraceEnabled ();

public void setTraceEnabled (boolean b);
}
}

+ 83
- 0
weaver/testsrc/org/aspectj/weaver/AbstractTraceTest.java View File

@@ -0,0 +1,83 @@
/*******************************************************************************
* Copyright (c) 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Matthew Webster - initial implementation
*******************************************************************************/
package org.aspectj.weaver;

import junit.framework.TestCase;

import org.aspectj.weaver.tools.AbstractTrace;
import org.aspectj.weaver.tools.DefaultTrace;

public class AbstractTraceTest extends TestCase {

protected AbstractTrace trace;

public void testIsTraceEnabled() {
DefaultTrace trace = new DefaultTrace(getClass());
assertFalse(trace.isTraceEnabled());
}

public void testEnterWithThisAndArgs() {
trace.enter("testEnterWithThisAndArgs",this,new Object[] { "arg1", "arg2" });
}

public void testEnterWithThis() {
trace.enter("testEnterWithThis",this);
}

public void testEnter() {
trace.enter("testEnter");
}

public void testExitWithReturn() {
trace.exit("testExitWithReturn","ret");
}

public void testExitWithThrowable() {
trace.exit("testExitWithThrowable",new RuntimeException());
}

public void testExit() {
trace.exit("testExit");
}

public void testDebug() {
trace.debug("debug");
}

public void testInfo() {
trace.info("information");
}

public void testWarn() {
trace.warn("warning");
}

public void testWarnWithException() {
trace.warn("warning",new RuntimeException("warning"));
}

public void testError() {
trace.error("error");
}

public void testErrorWithException() {
trace.error("error",new RuntimeException("error"));
}

public void testFatal() {
trace.fatal("fatal");
}

public void testFatalWithException() {
trace.fatal("fatal",new RuntimeException("fatal"));
}

}

+ 2
- 35
weaver/testsrc/org/aspectj/weaver/CommonsTraceTest.java View File

@@ -12,51 +12,18 @@ package org.aspectj.weaver;

import org.aspectj.weaver.tools.CommonsTrace;

import junit.framework.TestCase;

public class CommonsTraceTest extends TestCase {

private CommonsTrace trace;
public class CommonsTraceTest extends AbstractTraceTest {
protected void setUp() throws Exception {
super.setUp();
trace = new CommonsTrace(getClass());
trace.setTraceEnabled(true);
}
public void testCommonsTrace() {
CommonsTrace trace = new CommonsTrace(getClass());
}

public void testEnterWithThisAndArgs() {
trace.enter("testEnterWithThisAndArgs",this,new Object[] { "arg1", "arg2" });
}

public void testEnterWithThis() {
trace.enter("testEnterWithThis",this);
}

public void testEnter() {
trace.enter("testEnter");
}

public void testExitWithReturn() {
trace.exit("testExitWithReturn","ret");
}

public void testExitWithThrowable() {
trace.exit("testExitWithThrowable",new RuntimeException());
}

public void testExit() {
trace.exit("testExit");
}

public void testIsTraceEnabled() {
CommonsTrace trace = new CommonsTrace(getClass());
assertFalse(trace.isTraceEnabled());
}

public void testSetTraceEnabled() {
CommonsTrace trace = new CommonsTrace(getClass());
trace.setTraceEnabled(true);

+ 1
- 35
weaver/testsrc/org/aspectj/weaver/DefaultTraceTest.java View File

@@ -10,14 +10,10 @@
*******************************************************************************/
package org.aspectj.weaver;

import junit.framework.TestCase;

import org.aspectj.weaver.tools.DefaultTrace;

public class DefaultTraceTest extends TestCase {
public class DefaultTraceTest extends AbstractTraceTest {

private DefaultTrace trace;
protected void setUp() throws Exception {
super.setUp();
trace = new DefaultTrace(getClass());
@@ -28,39 +24,9 @@ public class DefaultTraceTest extends TestCase {
DefaultTrace trace = new DefaultTrace(getClass());
}

public void testEnterWithThisAndArgs() {
trace.enter("testEnterWithThisAndArgs",this,new Object[] { "arg1", "arg2" });
}

public void testEnterWithThis() {
trace.enter("testEnterWithThis",this);
}

public void testEnter() {
trace.enter("testEnter");
}

public void testExitWithReturn() {
trace.exit("testExitWithReturn","ret");
}

public void testExitWithThrowable() {
trace.exit("testExitWithThrowable",new RuntimeException());
}

public void testExit() {
trace.exit("testExit");
}

public void testIsTraceEnabled() {
DefaultTrace trace = new DefaultTrace(getClass());
assertFalse(trace.isTraceEnabled());
}

public void testSetTraceEnabled() {
DefaultTrace trace = new DefaultTrace(getClass());
trace.setTraceEnabled(true);
assertTrue(trace.isTraceEnabled());
}

}

+ 30
- 0
weaver5/java5-src/org/aspectj/weaver/tools/Jdk14Trace.java View File

@@ -77,5 +77,35 @@ public class Jdk14Trace extends AbstractTrace {
logger.setLevel(Level.INFO);
}
}

public void debug (String message) {
if (logger.isLoggable(Level.FINE)) {
logger.fine(message);
}
}

public void info(String message) {
if (logger.isLoggable(Level.INFO)) {
logger.info(message);
}
}

public void warn (String message, Throwable th) {
if (logger.isLoggable(Level.WARNING)) {
logger.log(Level.WARNING,message,th);
}
}

public void error (String message, Throwable th) {
if (logger.isLoggable(Level.SEVERE)) {
logger.log(Level.SEVERE,message,th);
}
}

public void fatal (String message, Throwable th) {
if (logger.isLoggable(Level.SEVERE)) {
logger.log(Level.SEVERE,message,th);
}
}
}

+ 1
- 34
weaver5/java5-testsrc/org/aspectj/weaver/Jdk14TraceTest.java View File

@@ -13,12 +13,8 @@ package org.aspectj.weaver;
import org.aspectj.weaver.tools.DefaultTrace;
import org.aspectj.weaver.tools.Jdk14Trace;

import junit.framework.TestCase;
public class Jdk14TraceTest extends AbstractTraceTest {

public class Jdk14TraceTest extends TestCase {

private Jdk14Trace trace;
protected void setUp() throws Exception {
super.setUp();
trace = new Jdk14Trace(getClass());
@@ -29,35 +25,6 @@ public class Jdk14TraceTest extends TestCase {
Jdk14Trace trace = new Jdk14Trace(getClass());
}

public void testEnterWithThisAndArgs() {
trace.enter("testEnterWithThisAndArgs",this,new Object[] { "arg1", "arg2" });
}

public void testEnterWithThis() {
trace.enter("testEnterWithThis",this);
}

public void testEnter() {
trace.enter("testEnter");
}

public void testExitWithReturn() {
trace.exit("testExitWithReturn","ret");
}

public void testExitWithThrowable() {
trace.exit("testExitWithThrowable",new RuntimeException());
}

public void testExit() {
trace.exit("testExit");
}

public void testIsTraceEnabled() {
DefaultTrace trace = new DefaultTrace(getClass());
assertFalse(trace.isTraceEnabled());
}

public void testSetTraceEnabled() {
DefaultTrace trace = new DefaultTrace(getClass());
trace.setTraceEnabled(true);

Loading…
Cancel
Save