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())的目的
原先
- Java code
if (log.isDebugEnabled()) { log.debug("这行代码会导致" + veryLongText + "的字符串拼接,而这个拼接是" + meaningless + ", 所以通过isXxxEnabled判断,避免拼接");}
------解决方案--------------------
看在楼主的头像和我QQ的一样, 就回复了..
- Java code
// 如果是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); } }}