javafx 应用程序将日志写入文件

javafx application write log to file

我正在尝试将我的多阶段应用程序配置为也将控制台消息(日志)输出到文件。

所以这是我的主要内容 class:

public class Main extends Application {

    private Stage stage;
    private User loggedUser;
    ...
    public static void main(String[] args) throws IOException {

        Application.launch(Main.class, (java.lang
            .String[])null);
    }

    @Override
    public void start(Stage primaryStage) throws IOException {

        try {
            stage = primaryStage;
            stage.setTitle("FXML Login Sample");
            gotoLogin();
            primaryStage.show();
        } catch (Exception ex) {

            Logger.getLogger(Main.class.getName()).log(Level.INFO, null, ex);
        }
    }
    ...
    private void gotoProfile() {
        try {
            FXMLDocumentController fxmlDocument = (FXMLDocumentController)    replaceSceneContent("FXMLDocument.fxml");
            fxmlDocument.setApp(this);
        } catch (Exception ex) {
            Logger.getLogger(Main.class.getName()).log(Level.INFO, null, ex);

        }
    }

   private void gotoLogin() {
       try {
           LoginController login = (LoginController) replaceSceneContent("login.fxml");
           login.setApp(this);
       } catch (Exception ex) {
           Logger.getLogger(Main.class.getName()).log(Level.INFO, null, ex);
       }
   }

我怎样才能将控制台的输出也写入文件中?我应该配置第二个记录器,只使用现有记录器并将其内容附加到文件吗?

根据你的问题和评论我了解到你还没有设置配置文件。

在您的应用程序旁边(而不是在 jar 中)提供一个 logging.properties 文件。

我手边只有一个使用 ConsoleHandler 的示例,但您可以添加其他处理程序,例如 FileHandler:

handlers= java.util.logging.ConsoleHandler


.level= INFO

java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

java.util.logging.SimpleFormatter.format=%1$tF %1$tT %4$S %2$s - %5$s%6$s%n


my.package.x.level = SEVERE
my.package.y.level = INFO

然后在启动应用程序时传递以下命令行参数:

-Djava.util.logging.config.file=<path to configuration file>/logging.properties

您可以在此处找到更多文档:https://docs.oracle.com/javase/8/docs/technotes/guides/logging