java - slf4j 记录器信息格式

标签 java apache logging

我正在尝试使用转义字符或 xml 模式等生成“不错”的日志消息。

我想要输出的是:

ABAS : value
B    : value
Cse  : value

我已经使用\t 实现了这一点,但我认为必须有一种更干净的方法。我查看了 .info,它接受一个参数并使用 {} 作为插入值的方式,但我似乎不知道如何添加换行符或制表符。

到目前为止我已经

logger.info(A : {} \nBasdas : {} \nC : asds ) and so on.

感谢您的帮助。

最佳答案

slf4j 是日志前端,仅用于向后端提供日志级别、消息等,在您的情况下很可能是 logback。您不应该在前端格式化您的消息,期望在实际日志输出中使用任何特殊格式,因为确切地说,这可以由后端使用来自由配置。特别是在某些独立行上的缩进不起作用,因为如果您的记录器名称是行的一部分,则您无法知道行是如何开始的,消息是在行中打印的,等等。只要看看logback configuration以及什么是可能的,作为日志消息发出程序员,您如何知道在您的软件的任何环境中运行时使用了哪些可能性?您根本不能,因此也不应该假设太多。

所以你想要的根本不可能,除了嵌入选项卡或换行符之外,没有什么可以在 slf4j 中格式化日志消息,这是有充分理由的。而且您也不能指望选项卡,因为这些选项卡如何呈现给查看日志文件的用户完全取决于文本编辑器或任何用户使用的内容。它甚至可以将制表符转换为空格,以 1 或 10 或其他宽度显示它们。

可以考虑跨越多行的日志语句 bad practice完全没有。

关于java - slf4j 记录器信息格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30978476/

相关文章:

Apache Config - 从身份验证中排除位置

Python 日志记录不起作用

docker - Ingress-nginx日志-出现很多奇怪的条目

java - 从父 Activity 访问 Fragment 对象

Java 2d 数组排序合并到 1d

regex - htaccess 将所有斜杠(两个或更多)替换为一个斜杠

apache - GitSmartHTTP for gitolite repositories over Apache 不允许我推送

java - 如何在没有访问 token 的情况下公开 Gitlab 包注册表?

java - listIterator API 描述的含义是什么?

javascript - Node.js的调试模块: how to avoid this tedious initialization?