我正在尝试将我的多阶段应用程序配置为也将控制台消息(日志)输出到文件。
所以这是我的主要课程:
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);
}
}
我怎样才能在文件中编写控制台的输出?我应该配置第二个只使用现有记录器并将其内容附加到文件的记录器吗?
答案 0 :(得分:1)
正如我从您的问题和评论中所理解的那样,您尚未设置配置文件。
在应用程序旁边提供logging.properties文件(不在jar中)。
我只有一个使用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