java - Java Util Logger 进入和退出方法不处理
问题描述
我尝试使用 java.util.logging.Logger.entring() 和 exiting() 操作,但是,它们似乎没有被处理。我是否需要为 Logger 指定一个处理程序,或者它是否可以在没有类似于 Logger.log() 的情况下工作?在下面的代码中, logger.log() 是打印到控制台的唯一方法,但我没有看到从 logger.entring() 和 logger.exiting() 到控制台的任何消息。任何见解都会很棒。谢谢,
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author hrh74
*/
public class SimpleLogger {
private static Logger logger =null;
public SimpleLogger(){
logger = Logger.getLogger(SimpleLogger.class.getName());
logger.setLevel(Level.FINER);
//ConsoleHandler h = new ConsoleHandler();
//h.setLevel(Level.FINER);
// logger.addHandler(h);
for(Handler handler: logger.getHandlers()){
handler.setLevel(Level.FINER);
}
}
public void simplyLog(){
logger.entering(getClass().getName(),"In simplyLog");
logger.log(Level.INFO, "FYI..");
logger.exiting(getClass().getName(), "Leaving simplyLog");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
SimpleLogger simple = new SimpleLogger();
simple.simplyLog();
}
}
通过向记录器添加处理程序,进入()和现有()操作正在工作,但是,更新代码的麻烦方面是每个日志记录的双重条目。以下是控制台输出的片段:
Aug 12, 2020 10:51:32 PM org.me.logger.SimpleLogger In simplyLog
FINER: ENTRY
Aug 12, 2020 10:51:32 PM org.me.logger.SimpleLogger simplyLog
INFO: FYI..
Aug 12, 2020 10:51:32 PM org.me.logger.SimpleLogger simplyLog
INFO: FYI..
Aug 12, 2020 10:51:32 PM org.me.logger.SimpleLogger Leaving simplyLog
FINER: RETURN
现在,如果我在构造函数中删除向 Logger 添加 Handler,则 enter() 和 existing() 操作不会出现在日志中,但双日志条目的问题将会消失。这是输出的示例
Aug 13, 2020 9:43:55 AM org.me.logger.SimpleLogger simplyLog
INFO: FYI..
解决方案
请参阅这些方法的文档。他们以 FINER 级别登录。
仅当日志条目的级别高于 Logger和输出它的处理程序的级别时,才会打印日志条目。在您的情况下,您的记录器正在使用根记录器的默认处理程序,即 ConsoleHandler。
您需要将根记录器的处理程序设置为在所需级别进行记录:
Logger rootLogger = Logger.getLogger("");
for (Handler handler: rootLogger.getHandlers()) {
handler.setLevel(Level.FINER);
}
推荐阅读
- php - 在 Codeigniter 中获取日期之间的订单
- ios - iOS用图像颜色模糊阴影效果
- asp.net - 有没有更好的方法来访问深度嵌套的控件?
- android - 无法在 onTouchListener 之外分配值
- python - 使用 Python 从 PDF 中抓取文本,将文本编码为图像
- javascript - Jest --runTestsByPath 两个或多个不同的路径
- python - 试图理解 Pandas 中的 .apply()
- c - C - 将浮点数存储到 char 数组并反转
- c - MmCopyVirtualMemory 失败,代码正确
- algorithm - 是否可以使用 Grover 算法进行真实数据搜索?