我想使用slf4j
进行记录。我写自己的记录器类
public class GlobalLogger {
private static final Logger logger = LoggerFactory.getLogger(GlobalLogger.class);
public static void logApplicationLog(String message) {
logger.info("[" + APPLICATION_LOG + "]" + message);
}
}
我在log4j中使用模式布局,以便在日志%C
中将类显示为GlobalLogger
,但我希望%C
显示调用类。如何在整个应用程序中记录器的对象应该是单例的情况下这样做呢?
答案 0 :(得分:0)
在logger类上写一个包装器,它将作为单例类。喜欢:
public class Logger{
private static Logger logger;
private Logger(){
}
public synchronized static Logger getLogger()
{
if (logger!= null)
return logger;
return logger=LoggerFactory.getLogger(GlobalLogger.class);
}
}
答案 1 :(得分:0)
如果您想要一个简写来创建记录器并向其发送消息:
public class GlobalLogger {
public static void logApplicationLog( String message, Class source ) {
LoggerFactory.getLogger(source).info("[" + APPLICATION_LOG + "]" + message);
}
}
我不知道是否有可能在“每条消息”的基础上注入一个来源,尽管可能有一个。
注意:我建议在每个应该记录内容的类中使用静态Logger实例而不是上面给出的代码。您甚至可以更改IDE的模板以创建新的clases,以便为您包含该模板。
修改强>
我看到你想放一个静态部分来创建“类别”(就你上面的评论而言)。
那你为什么不LoggerFactory.getLogger(APPLICATION_LOG)
为每个类别创建appender并在模式中添加静态文本?或者您必须能够按包更改logLevels吗?