我try 在每个日志(log)行的开头添加一个应用程序"版本"号.在我的阅读中,我注意到"记号笔"似乎是我需要的.

在代码中,我使用@Slf4j,它返回ch.qos.logback.classic.Logger,在整个代码中,它被简单地用作log.info("Hey Bob").我将如何在不影响现有代码的情况下预先挂起每个日志(log)语句的标记(log.info(VERSION_MARKER, "Hey Bob"))?

我不能/不能遍历数千行代码并进行更改.

或者,有没有更好的方法来做到这一点?

<appender name="LOGSTASH" class="ch.qos.logback.core.rolling.RollingFileAppender">
   <append>true</append>
   <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n%wEx</Pattern>
   </encoder>
</appender>

因此,我的假设是修改上面的模式.

推荐答案

您可以在您的模式中使用系统属性,例如%property{app_version}

<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %property{app_version} %m%n%wEx</Pattern>

当您运行您的应用程序时,在命令行中添加-Dapp_version=1.2.3.

您也可以通过编程方式调用System.setProperty("app_version", "1.2.3"),但根据调用时间的不同,在此之前可能已经记录了一些事情.

https://logback.qos.ch/manual/layouts.html#property

Java相关问答推荐

为什么JFrame paint()多次绘制同一点(或根本不绘制)?

Mongo DB Bson和Java:在子文档中添加和返回仅存在于父文档中的字段?

在Java中测试DAO方法:假实现与内存数据库

S的字符串表示是双重精确的吗?

Java LocalTime.parse在本地PC上的Spring Boot中工作,但在Docker容器中不工作

安装Java Jar应用程序的Install4j遇到ClassNotFoundException的运行时错误

如何使用Jackson将XML元素与值和属性一起封装

如何将Pane的图像快照保存为BMP?

try 在Android Studio中的infoWindow中使用EditText(Java)

如何使用路径过渡方法使 node 绕圆旋转?

有效的公式或值列表必须少于或等于255个字符

基于配置switch 的@Controller的条件摄取

从LineChart<;字符串、字符串和gt;中删除数据时出现特殊的ClassCastException;

在实例化中指定泛型类型与不指定泛型类型之间的区别

TinyDB问题,无法解析符号';上下文&

Java 21内置http客户端固定运营商线程

为什么Spring要更改Java版本配置以及如何正确设置?

如何在Selenium上继续使用最新的WebDriver版本

try 添加;按流派搜索;在Web应用程序上,但没有;I don’我不知道;It’这个代码错了

MapStruct记录到记录的映射不起作用