提交 82a14c4e 编写于 作者: F Frankie Wu

fix another bug within log4j appender

上级 347a538d
......@@ -6,6 +6,10 @@ import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.ThrowableInformation;
import com.dianping.cat.Cat;
import com.dianping.cat.message.Message;
import com.dianping.cat.message.MessageProducer;
import com.dianping.cat.message.Transaction;
import com.dianping.cat.message.spi.MessageTree;
public class CatAppender extends AppenderSkeleton {
@Override
......@@ -14,12 +18,18 @@ public class CatAppender extends AppenderSkeleton {
ThrowableInformation throwableInformation = event.getThrowableInformation();
if (throwableInformation != null) {
if (Cat.getManager().getThreadLocalMessageTree() != null) {
Cat.getProducer().logError(throwableInformation.getThrowable());
// } else {
// Cat.setup(null);
// Cat.getProducer().logError(throwableInformation.getThrowable());
// Cat.reset();
MessageProducer cat = Cat.getProducer();
Throwable exception = throwableInformation.getThrowable();
MessageTree tree = Cat.getManager().getThreadLocalMessageTree();
if (tree == null) {
Transaction t = cat.newTransaction("System", "Log4jException");
cat.logError(exception);
t.setStatus(Message.SUCCESS);
t.complete();
} else {
cat.logError(exception);
}
}
}
......
package com.dianping.cat.message;
package com.dianping.cat;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
import com.dianping.cat.CatTest;
import com.dianping.cat.log4j.CatAppenderTest;
import com.dianping.cat.message.EventTest;
import com.dianping.cat.message.HeartbeatTest;
import com.dianping.cat.message.TransactionTest;
import com.dianping.cat.message.configuration.ClientConfigTest;
import com.dianping.cat.message.internal.MessageIdFactoryTest;
import com.dianping.cat.message.internal.MillisSecondTimerTest;
......@@ -19,9 +22,14 @@ import com.dianping.cat.storage.report.LocalReportBucketTest;
@RunWith(Suite.class)
@SuiteClasses({
CatTest.class,
/* <default> */
CatTest.class,
/* .log4j */
CatAppenderTest.class,
/* .message */
EventTest.class,
HeartbeatTest.class,
......@@ -34,8 +42,6 @@ ClientConfigTest.class,
/* .internal */
MessageIdFactoryTest.class,
//MessageProducerTest.class,
MillisSecondTimerTest.class,
/* .io */
......
package com.dianping.cat.log4j;
import org.apache.log4j.Category;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.spi.LoggingEvent;
import org.junit.Test;
import com.dianping.cat.Cat;
import com.dianping.cat.message.Message;
import com.dianping.cat.message.Transaction;
public class CatAppenderTest {
@Test
public void testWithTransaction() throws InterruptedException {
CatAppender appender = new CatAppender();
Throwable throwable = new Exception();
Category logger = Logger.getLogger(CatAppenderTest.class);
LoggingEvent event = new LoggingEvent("test", logger, Level.ERROR, null, throwable);
Transaction t = Cat.getProducer().newTransaction("Test", "test");
appender.append(event);
t.setStatus(Message.SUCCESS);
t.complete();
Thread.sleep(20);
}
@Test
public void testWithoutTransaction() throws InterruptedException {
CatAppender appender = new CatAppender();
Throwable throwable = new Exception();
Category logger = Logger.getLogger(CatAppenderTest.class);
LoggingEvent event = new LoggingEvent("test", logger, Level.ERROR, null, throwable);
appender.append(event);
Thread.sleep(10);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册