Java 我使用FileHandler创建了一个logger类来将日志写入一个文件,但是它';它只打印到控制台

Java 我使用FileHandler创建了一个logger类来将日志写入一个文件,但是它';它只打印到控制台,java,logging,utility,Java,Logging,Utility,我试图创建一个java记录器文件,将输出写入项目文件夹(NetBeans、MacOS)中的文件。我这样做是为了一个学校项目,所以我不能使用Log4j。我已经回顾了以前提出的关于这个主题的问题,并尝试实施这些解决方案,但我仍然没有看到任何成功。我是否需要扩展文件路径,或者是否缺少一个主要组件?任何正确的步骤都会有帮助,谢谢 我已经尝试将文件路径从users文件夹一直扩展到netbeans中的单个项目文件夹。我已经看了很多参考资料和示例,但无论我缺少什么元素,我都没有找到 public class

我试图创建一个java记录器文件,将输出写入项目文件夹(NetBeans、MacOS)中的文件。我这样做是为了一个学校项目,所以我不能使用Log4j。我已经回顾了以前提出的关于这个主题的问题,并尝试实施这些解决方案,但我仍然没有看到任何成功。我是否需要扩展文件路径,或者是否缺少一个主要组件?任何正确的步骤都会有帮助,谢谢

我已经尝试将文件路径从users文件夹一直扩展到netbeans中的单个项目文件夹。我已经看了很多参考资料和示例,但无论我缺少什么元素,我都没有找到

public class log {
   private final static Logger LOGGER = 
Logger.getLogger(log.class.getName());
   private final static FileHandler handleLog = null;



   public static void start() throws IOException, 
SecurityException{
    FileHandler handleLog = new 
FileHandler("/Users/cassie/NetBeansProjects/GlobalConsulting- 
   userLog.%u.%g.txt", 1024 * 1024, 10, true);
    SimpleFormatter simple = new SimpleFormatter();
    handleLog.setFormatter(simple);
    LOGGER.addHandler(handleLog);
    LOGGER.setLevel(Level.INFO);

   }

   public static void main(String[] args) throws IOException, 
SecurityException{
       start();
       LOGGER.info("------------------START--------------------");

   }
}
当我在另一个文件中调用它时,我就是这样做的

LOGGER.log(Level.INFO, "{0} logged in", currentUser.getUsername());
我所希望的是,当程序运行时,输出(用户登录)将打印到项目文件夹中的日志文件中,并在重写之前更新10次。我没有收到任何错误消息,但所有的输出都直接发送到控制台

我没有收到任何错误消息,但所有的输出都直接发送到控制台

使用代码中的来确定记录器树的状态。要查看日志文件的输出,您需要以下内容:

  • filehandler是毫无例外地创建的。从你的问题来看,这似乎是可行的
  • 您应该能够看到日志文件至少在程序运行时创建(并且是空的)。默认情况下,如果filehandler无法解析路径,它将抛出一个错误或在名为
    java0.log
    的文件中创建一个日志文件。如果在运行程序之前指定了文件路径,但目录不存在,则通常会发生这种情况
  • filehandler必须连接到loggable节点的记录器树或父记录器。如果文件处理程序从程序的角度连接到子记录器,它将不会看到日志消息。日志记录沿记录器树向上移动到父处理程序。通常,ConsoleHandler安装在根记录器上,因此它将看到与安装在根的子级上的filehandler不同的所有内容
  • filehandler必须具有正确的级别。对处理程序使用
    Level.ALL
  • filehandler不应安装筛选器(
    null
    )。JDK没有附带任何功能,所以这不应该是一个问题
  • 必须设置日志记录程序级别,以便实际生成处理程序的日志记录
  • 另一个功能删除或重置正在删除配置的日志管理器。SecurityManager可以确定这一点,但这很可能不是原因,因为您不使用任何第三方LIB

  • 回答这些问题,您应该能够确定为什么看不到日志文件。

    您在类中使用的记录器类是否来自任何日志API?忽略我之前的评论。我可以知道你怎么称呼它为另一个文件吗?我这样称呼它:LOGGER.log(Level.INFO,“{0}登录”,currentUser.getUsername());我是说,你是如何执行另一个类的?另一个类有自己的主方法吗?如果可能的话,也请发布其他类的代码。