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

过滤系统输出。按错误、警告、信息在journalctl中打印ln消息

夏侯浩气
2023-03-14

我如何过滤由Systemd控制的Java消息?

目前,我正在使用<code>System.out编写日志。println如下:

System.out.println("Hello this is a Error");

Journalctl -b -u test.service给了我这个:

Nov 02 11:58:41 test java[10]: Hello this is a Error

我想做这样的事情

考虑一个伪代码:

System.out.println("Hello this is a Error", "Warn");

并获得以下内容:

Nov 02 11:58:41 test java[10] [Error]: Hello this is a Error

但我不想使用 Log4j 或任何其他库。也许我只是不知道要搜索什么,找不到解决方案。希望有人有一个想法。

共有1个答案

苍阳成
2023-03-14

我怀疑你想要一些非常简单的东西,所以你可以尝试通过System.err访问的错误输出流。它可以像您已经熟悉的标准输出流System.out一样使用。

您可以创建自己的消息模式,并使用< code>printf()应用它们(有关字符串格式的更多信息,请参考Oracle提供的官方教程)。

System.err.println("message");
        
System.err.printf(LocalDate.now() + " : %s", "message");

消息将打印在控制台上,以红色突出显示。就是这样。

如果你想要更精细的东西,Java有一个内置的日志记录API(不需要外部依赖)。它驻留在java.util.logging中(这就是为什么它简称为JUL),并提供许多功能和许多工具,包括记录器,处理程序,过滤器,格式化程序等。您可以在此处了解更多信息。

这里有一个非常愚蠢的例子:

Logger logger = Logger.getLogger("myLogger");
logger.log(Level.WARNING, "something is wrong");

也就是说,如果您决定使用JUL,您至少需要知道它的缺点是什么,以及为什么存在其他日志记录工具。

例如,您可以阅读以下问题:

为什么不使用java.util.logging?

 类似资料:
  • 问题内容: 我正在验证器中发出很多警告,并且我想抑制stdout中的所有内容,除非提供给的消息。 即,现在我看到了: 我想看看这个: 编辑2: 覆盖工作: 问题答案: 具有您自己的自定义功能的Monkeypatch 。

  • 问题 你希望自己的程序能生成警告信息(比如废弃特性或使用问题)。 解决方案 要输出一个警告消息,可使用 warning.warn() 函数。例如: import warnings def func(x, y, logfile=None, debug=False): if logfile is not None: warnings.warn('logfile argume

  • 技巧 你的程序编译通过了,但并不意味着已经万事大吉,也许还存在一些不规范的地方,或者一些错误隐患。建议,使用-Wall选项打开所有的警告信息,把所有的警告都处理掉。 $ gcc -Wall ... 详情参见 gcc手册

  • 我如何才能使打印在控制台中的消息不是直接发出,而是一点一点地发出

  • 我正在Plotly中绘制第一个示例之一: 但我有以下警告: 我认为这可能是安装问题。以下是Jupyter的一些版本 jupyter核心:4.6.3 jupyter笔记本:6.1.5 QT控制台:4.7.5 ipython:7.19.0 ipykernel:5.3.4 jupyter客户端:6.1.6 jupyter实验室:2.1.5 nbconvert:5.6.1 ipywidgets:7.5.1