当前位置: 首页 > 知识库问答 >
问题:

log4j 1.2.15和系统重定向。我们需要一个完整的系统。犯错误

索吕恭
2023-03-14

在Java /Swing应用程序中,我们将System.out和System.err重定向到一个单独的视图(称为“SystemOutView”),当新的输出出现时,该视图会弹出打开。这对于抛出的异常和System.out.println()都很有效。这个视图可以通过属性文件进行配置(即它是否处于活动状态,以及它是否在输出时弹出打开)。

在这个项目中,我们使用log4j 1.2.15。我发现log4j输出,即使发送到STDOUT,也不会被重定向到SystemOutView,如果在SystemOutView被实例化和系统更新之前已经发生了一些日志记录。我们需要一个完整的系统。err被重定向到它。

换句话说:

  1. 将System.out和System.err重定向到SystemOutView
  2. 有些ogger.debug("...")

... 工作正常:日志显示在SystemOutView中。

但是:

  1. 有些ogger.debug("...")
  2. 将System.out和System.err重定向到SystemOutView
  3. 有些ogger.debug("...")

... 不起作用:第二条log语句转到标准输出(与第一条类似),并且没有被重定向到SystemOutView。

由于SystemOutView可以通过属性文件进行配置,因此在实例化SystemOutView之前需要做大量的工作,因此很可能会发出一些日志语句。这样就不可能将日志输出重定向到SystemOutView。

我能怎么办?

提前许多天。
:-丹尼斯

共有1个答案

通煜祺
2023-03-14

好啊我自己解决了这个问题。

每当重定向STDOUT和STDERR时,必须使用以下方式重新初始化log4j:

DOMConfigurator.configure(ConfigFileURL);
 类似资料:
  • 我有一些遗留代码(或者更确切地说,一些我们无法控制但我们必须使用的代码),可以编写大量语句来system.out/err. 与此同时,我们正在使用一个框架,该框架使用一个围绕log4j的自定义日志系统(同样,不幸的是,我们不能控制这个)。 因此,我试图将out and err流重定向到一个将使用日志系统的定制PrintStream。我在读关于和方法,但问题是,我需要编写自己的PrintStream

  • 本文向大家介绍请不要重复犯我在学习Python和Linux系统上的错误,包括了请不要重复犯我在学习Python和Linux系统上的错误的使用技巧和注意事项,需要的朋友参考一下 本人已经在运维行业工作了将近十年,我最早接触Linux是在大二的样子,那时候只追求易懂,所以就选择了Ubuntu作为学习、使用的对象,它简单、易用、好操作、界面绚丽,对于想接触Linux的新手来说是非常不错的。后来因为个人的

  • 我已经创建了一个摇摆用户界面,并将System.out和System.err重定向到这个代码的文本字段 ConsoleOutputStream通过TearayoutPutStream进行扩展,只要在新线程中不执行任何操作,它就会按预期工作。 然而,我的应用程序执行第三方jar文件,从而创建新线程。当这些线程打印到系统时。它会打印在启动我的应用程序的终端上,而不是打印在我的文本字段中。我已经看过这个

  • Windows 的系统需求 Microsoft Windows XP SP3、Vista、Windows 7、Windows 8、Windows 8.1、Windows 10、Server 2003、 Server 2008、Server 2012 Mac OS X 的系统需求 Mac OS X 10.7 Lion、10.8 Mountain Lion、10.9 Mavericks、10.10 Y

  • Ubuntu Desktop 14.04 OS X Yosemite Windows 8.0, 8.1 and 10 (x86 and x64) 另外 Linux 还需要额外的 GLIBCXX version 3.4.15 or later GLIBC version 2.15 or later

  • Gio.js仅依赖于Three.js。 经过测试,Gio.js在Three.js R90版本下可以很好地运行和使用。 Gio.js可以运行在以下的浏览器环境中: 浏览器 版本 Chrome 64.0.3282.167+ Firefox 58.0.2+ Safari 10.0.1+