我如何过滤由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 或任何其他库。也许我只是不知道要搜索什么,找不到解决方案。希望有人有一个想法。
我怀疑你想要一些非常简单的东西,所以你可以尝试通过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