将Log4J封装成一个class,但是使用该封装class,无法定位错误到错误发生的类,或错误发生的那一行,
public class Log {
private static Logger log = Logger.getLogger(Log.class.getName());
DOMConfigurator.configureAndWatch("log4j.xml");
public static void Debug(Object message)
{
if(log.isDebugEnabled())
{
log.debug( message );
}
}
……………………
在别的文件调用Log.Debug("Error"); 定位错误发生的类会定位到Log类,但我希望如果是在类MyApp里发生的错误可以定位到MyApp里。
请问有什么解决办法没?急…… 先感谢一下。
[解决办法]
你不要多此一举封装:
1 无法看到stack trace
2 你这样做严重违背了if (log.isXxxEnabled())的目的
原先
if (log.isDebugEnabled()) { log.debug("这行代码会导致" + veryLongText + "的字符串拼接,而这个拼接是" + meaningless + ", 所以通过isXxxEnabled判断,避免拼接");}
[解决办法]
看在楼主的头像和我QQ的一样, 就回复了..
// 如果是jdk1.5可以这么写了, 如果是1.4的话, 自己抛个异常再解析吧..// 最好把log4j中的%M和%c选项去掉, 因为已经包含了这些信息public static void debug(Object message) { if (log.isDebugEnabled()) { StackTraceElement[] stes = Thread.currentThread().getStackTrace(); if (stes.length > 2) { log.debug(stes[2] + " - " + message); } else { log.debug(message); } }}