如何将应用程序日志动态输出到TextArea和文本文件?

2024-01-14

我有一个 javaFX 应用程序,但遇到日志记录问题。我不知道如何将日志动态输出到 JavaFX 中的 TextArea 并同时输出到文件。

对于文件我有这样的设置:

handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler

java.util.logging.FileHandler.level     = ALL
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.append    = true
java.util.logging.FileHandler.pattern   = log.txt

在每个类中进行这样的静态初始化:

public class BuildTest{
static {
        try(FileInputStream ins = new FileInputStream("src/main/resources/log.config")) {
            LogManager.getLogManager().readConfiguration(ins);
            LOGGER = Logger.getLogger(BuildTest.class.getName());
            initialContext = new InitialContext();
        } catch (NamingException | IOException e) {
            LOGGER.log(Level.WARNING,"Error ", e);
        }
    }
}

但我有一个问题,如何同时输出到TextArea?

文本区域本身:

<TextArea layoutX="20.0" layoutY="705.0" prefHeight="100.0" prefWidth="560.0" fx:id="LogID"/>

并且控制器附加到 fxml 文件中:

public class ControllerFrame {

    private TextArea LogID;

static {
        try(FileInputStream ins = new FileInputStream("src/main/resources/log.config")){
            LogManager.getLogManager().readConfiguration(ins);
            LOGGER = Logger.getLogger(ControllerFrame .class.getName());
        } catch (Exception e) {
            LOGGER.log(Level.WARNING,"Error ", e);
        }
    }
}

我尝试将此代码插入到控制器类中的静态方法和初始化方法中:

TextAreaHandler handler = new TextAreaHandler(textArea);
        handler.setFormatter(new SimpleFormatter());
        LOGGER.addHandler(handler);

实现 TextAreaHandler 类:

package sample;

import java.util.logging.ErrorManager;
import java.util.logging.Handler;
import java.util.logging.LogRecord;

import javafx.application.Platform;
import javafx.scene.control.TextArea;

public class TextAreaHandler extends Handler {

    private final TextArea textArea;
    private volatile boolean open = true;

    public TextAreaHandler(TextArea textArea) {
        this.textArea = textArea;
    }

    @Override
    public void publish(LogRecord record) {
        if (open && isLoggable(record)) {
            String message;
            try {
                message = getFormatter().format(record);
            } catch (Exception ex) {
                reportError(null, ex, ErrorManager.FORMAT_FAILURE);
                return;
            }

            if (Platform.isFxApplicationThread()) {
                appendMessage(message);
            } else {
                try {
                    Platform.runLater(() -> appendMessage(message));
                } catch (Exception ex) {
                    reportError(null, ex, ErrorManager.GENERIC_FAILURE);
                }
            }
        }
    }

    private void appendMessage(String message) {
        try {
            textArea.appendText(message);
        } catch (Exception ex) {
            reportError(null, ex, ErrorManager.GENERIC_FAILURE);
        }
    }

    @Override
    public void flush() {
        // no buffer
    }

    @Override
    public void close() {
        open = false;
    }
}

但我仍然没有在 TextArea 中收到日志。本质是应用程序在文本文件和文本区域中显示日志


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将应用程序日志动态输出到TextArea和文本文件? 的相关文章

  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • 序列的排列?

    我有具体数量的数字 现在我想以某种方式显示这个序列的所有可能的排列 例如 如果数字数量为3 我想显示 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

  • 无法将 json 转换为模型

    我有来自 url 的 json 我需要将此 json 转换为模型 someField 3 datesField 2017 08 19 2017 08 20 2017 08 26 2018 12 30 我创建用于映射的模型 Data NoAr
  • 为什么我的迷宫解算器不起作用?

    我正在尝试编写一个程序 以递归方式解决特定输入的迷宫 并在每次移动后输出它在迷宫中的位置 每当我尝试运行代码时 它都会立即崩溃 并收到 maze exe 已停止工作 错误 为什么我的代码不起作用 include
  • 我可以将多个 Android 密钥库文件合并为一个吗?

    我在使用 Android 密钥库文件时遇到了一个有点烦人的情况 目前 我有几个不同的应用程序 每个应用程序都使用不同的密钥库文件进行签名 有点像这样 使用 AppName1 keystore 签名的 AppName1 apk 使用 AppN
  • Android onItemClicklistener 在列表视图中不起作用

    谁能帮我解决我的问题 我有一个 TabActivity 每个选项卡在触摸时都会打开一个新的活动 该活动扩展了 ListActivity 此时我得到了所需项目的列表 我想通过使用 OnItemClickListener 使其可点击 我正在附上
  • 使用 bash、sed 或 awk 拆分 CSV 文件并排除输出中的列

    我有一个 CSV 文件 其中包含如下数据 1 275 275 17 3 0 2011 05 09 20 21 45 2 279 279 17 3 0 2011 05 10 20 21 52 3 276 276 17 3 0 2011 05
  • 如何在 vscode 中将 .ipynb 作为常规文本而不是 IPython 笔记本查看

    VS Code 最近添加了使用 Jupyter Notebooks 的功能 ipynb文件 这就是说它将它们呈现为笔记本而不是底层文本 我遇到的问题是我想对原始文本而不是 笔记本 进行一些编辑 但我不知道如何像其他编辑器那样将其显示为文本文
  • git push -f 与 +

    这样做有什么区别 git push f origin my branch my branch and git push origin my branch my branch 这是实现同一目标的两种语法 除了那个git push force当
  • 我可以从视图调用模型吗?

    我没有使用成熟的 PHP MVC 而是设计了一个最适合我的用途的 MVC 我已经完成了基本框架 并编写了运行网站所需的模型和控制器 现在我正在转向视图 我遇到了一个小困境 我的方法对我来说效果很好 但为了将来的参考 我想知道我所做的是否是一
  • Django 的 CreateView 不保存对象

    我正在练习 Django 的通用视图 特别是ModelForms 这些是我的观点和模型 模型 py class Post models Model user models ForeignKey User post title models
  • 为什么我使用kill -0 (|pid) 得到不同的结果

    我正在编写一个脚本 该脚本将启动另一个进程 并在一段时间后杀死它 如果它没有自行退出 自从开始这件事以来 我开始意识到timeout命令是执行此操作的正确方法 但我仍然对为什么我的方法之一失败感到困惑 这就是我正在尝试的 bin bash
  • JS 在循环内等待回调完成

    我的 Node js 应用程序中有一个 for 循环 在此循环内 每次迭代都可以执行 mysql 查询 并非总是如此 具体取决于情况 查询是异步的 我在成功回调中得到结果 但我需要 for 循环的每次迭代都等待回调完成 如果需要 funct
  • Mongodb TTL 使文档提前过期

    我正在尝试将文档插入 Mongo 数据库并让它在预定时间后自动过期 到目前为止 我的文档已被插入 但总是会在 0 60 秒内从数据库中删除 即使我将 expireAfterSeconds 设置得更长 我知道 mongodb 大约每 60 秒
  • 具有重叠时隙的会议调度算法

    我想做类似的事情预约调度算法 N个人 N个忙闲时段 约束满足 https stackoverflow com questions 11143439 appointment scheduling algorithm n people with
  • 在Python中将秒转换为周-天-小时-分钟-秒

    我正在尝试编写一个 输入秒数 的 Python 脚本 并在周 天 小时 分钟和秒内获得结果 这是我所拥有的 但我没有得到正确的答案 我究竟做错了什么 seconds raw input Enter the number of seconds
  • Firebase 上 iOS 的 Flutter 集成测试?

    是否可以在 Firebase 上运行 Flutter 集成测试 这方面的信息似乎相互矛盾 一些消息来源说这是可能的 但文档 https pub dev packages integration test firebase test lab
  • 将 wpf 图像控件保存到文件的最简单方法

    我的 wpf 应用程序中有一个 Image 控件 里面有一个大图像 但控件本身只有 60x150 这意味着它只显示该图像的特定部分 将可见部分保存到文件的最简单方法是什么 感谢您的帮助 编辑 我最终使用了找到的代码here http nui
  • Fabric - 在所有任务完成之前和之后在本地运行命令

    我试图在我的结构脚本中宣布部署开始和结束 感觉这应该很容易 但对于我来说 我不知道该怎么做 env hosts www1 www2 www3 www4 def announce start code to connect to irc se
  • 关于从 VBScript 返回值到 .NET 的问题

    我正在尝试设置一个能够从 NET 运行 VBScript 文件的应用程序 请参阅here https stackoverflow com questions 2886155 how do i get back results running
  • 如何在discord.py 中设置可选参数?

    我尝试过在线研究 但没有其他问题能够帮助我解决问题 这是我的场景 我正在discord py 中创建静音命令 我希望时间是可选的 但如果未指定时间 我希望该参数成为原因的一部分 澄清我的意思 client command commands
  • 如何将应用程序日志动态输出到TextArea和文本文件?

    我有一个 javaFX 应用程序 但遇到日志记录问题 我不知道如何将日志动态输出到 JavaFX 中的 TextArea 并同时输出到文件 对于文件我有这样的设置 handlers java util logging FileHandler