我想在日志文件中包含类名和方法名。我使用以下代码。
public String format(LogRecord record)
{
StringBuilder buff = new StringBuilder();
.
.
if( record.getSourceClassName() != null )
{
buff.append( "Source class: " );
buff.append( record.getSourceClassName() + " Method : " + record.getSourceMethodName() + '\n' );
}
else if( record.getSourceClassName() == null )
{
buff.append( "class name null" );//<-- always getting null
}
}
但是我只获得类名的空值。我正在使用log4j并使用我自己的格式化程序类。我是java新手,所有人都建议我。
答案 0 :(得分:1)
最好的方法是使用扩展类org.apache.log4j.Layout
的自定义布局,例如:
import org.apache.log4j.Layout;
import org.apache.log4j.spi.LoggingEvent;
public class MyLayout extends Layout {
public void activateOptions() {
// None action
}
public String format(LoggingEvent event) {
StringBuilder sb = new StringBuilder();
sb.append(event.getLevel());
sb.append(" (");
sb.append(event.getLoggerName());
sb.append(":");
sb.append(event.getLocationInformation().getLineNumber());
sb.append(") - ");
sb.append(event.getMessage());
sb.append(LINE_SEP);
return sb.toString();
}
public boolean ignoresThrowable() {
return true;
}
}
要获取类的名称,您需要声明一个静态字段并在 client 类中传递类引用对象:
private static final Logger LOG = Logger.getLogger(SomeClass.class);
在Short introduction to log4j的 Appenders and Layouts 中查看更多内容。
答案 1 :(得分:0)
您可以使用 record.getClass().getName();
并显示名称类。