我有一个日志语句,我总是使用this.getClass().getSimpleName()
作为第一个参数。
我想把它放在某种宏常量中,并在我的所有日志语句中使用它。
但我了解到Java没有像C ++那样简单的机制。
在Java中实现此类功能的最佳方法是什么?
我的示例日志语句(来自Android)如下..
Log.v(this.getClass().getSimpleName(),"Starting LocIden service...");
答案 0 :(得分:5)
Java没有宏,但您可以缩短代码:
Log.v(this, "Starting LocIden service...");
在Log
课程中:
public void v(Object object, String s)
{
_v(object.getClass().getSimpleName(), s);
}
另一种方法可能是检查调用堆栈。
答案 1 :(得分:1)
Karthik,大多数日志工具允许您指定输出的格式,其中一个参数是类名,它使用Mark提到的方法(堆栈检查)
例如,在log4j中,参数为%C以引用类名。
答案 2 :(得分:0)
另一种方法是遵循Android建议的日志记录功能。
Log.v(TAG, "Message");
其中TAG
是您班级中的私有静态最终字符串。
答案 3 :(得分:0)
使用适当的日志框架(例如slf4j)。每个记录的类都有自己的记录器,因此不需要将类名传递给log方法调用。
Logger logger = LoggerFactory.getLogger(this.getClass());
logger.debug("Starting service");
//...
logger.debug("Service started");