我有一个JTextArea在我的程序,我想显示程序的日志。我做了一些研究,在Log4j2文档中找到了OutputStreamAppender,我假设可以使用它将日志输出到OutputStream,然后将其通过管道传输到JTextArea。不幸的是,没有太多的文档(至少我能找到)。我的思路对吗?如果是,如何使用OutputStreamAppender?如果没有,我该怎么办?我不想创建自己的Appender。谢谢
JTextArea
OutputStreamAppender
OutputStream
tyg4sfes1#
也许可以尝试一些类似的东西(快速而肮脏-你肯定想防止无限循环):
import java.time.format.*; import java.time.*; import java.util.Comparator; import java.nio.file.*; import java.io.IOException; public class FName { public static void main(String[] args) { try { //System.out.println(FName.getLatestLogFileName(Path.of("/tmp"))); System.out.println(FName.findLatestLogFileName(Path.of("/tmp"))); } catch (Throwable t) { t.printStackTrace(); } } public static Path findLatestLogFileName(Path logsDir) throws Exception { // Tighten this pattern up as necessary final String LOGFILE_PAT =".*\\.log"; return Files.find(logsDir, 1, (p, attr) ->p.getFileName().toString().matches(LOGFILE_PAT)). sorted(Comparator.comparingLong(p ->p.toFile().lastModified())). reduce((first, second) -> second). orElse(null); } public static Path getLatestLogFileName(Path logsDir) { Path result = null; LocalDateTime ldt = LocalDateTime.now(); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd MMMM uuuu HH.mm.ss"); boolean foundLogFile = false; while (result == null) { Path test = logsDir.resolve(Path.of(dtf.format(ldt) + ".log")); if (Files.exists(test)) { result = test; } else { ldt = ldt.minusSeconds(1); } } return result; } }
1条答案
按热度按时间tyg4sfes1#
也许可以尝试一些类似的东西(快速而肮脏-你肯定想防止无限循环):