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
我正在尝试将我的多阶段应用程序配置为也将控制台消息(日志)输出到文件。
所以这是我的主要内容 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