我正在尝试将一个值设置为MDC,以便在有日志的情况下显示在每个日志行中。如果kafka producer中有info(“”),那么日志就不会显示我之前为MDC添加的值。
我有一个拦截器来为correlationId设置“默认值”
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) {
MDC.put("correlationId", "correlation-id-to-be-set");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable ModelAndView modelAndView){
MDC.clear();
}
我设置了 MDC 相关 Id 值,当它进入控制器时。
@RequestMapping(value = "/notifications", method = RequestMethod.POST, produces = {"application/json"})
@ResponseStatus(HttpStatus.CREATED)
@RolesAllowed({"ROLE_CREATE_NOTIFICATION"})
@LogMethodExecutionTime
public @ResponseBody
OutboundNotificationEvent createNotification(@Valid @RequestBody OutboundNotificationEvent notificationRequest,
HttpServletRequest request){
log.info("Request Received. CorrelationId {} ",notificationRequest.getCorrelationId());
if(notificationRequest.getCorrelationId()!=null)
MDC.put("correlationId", notificationRequest.getCorrelationId());
bpmProducer.sendMessage(ArgosUtils.mapNotificationPayloadToBpmEvent(notificationRequest, MSG_RECEIVED, EVENT_RECEIVED));
仅用于Kafka日志不包括之前添加的 MDC 消息
2022-06-08 10:15:31.616 INFO { correlation id = correlation-id-to-be-set } 19608-[nio-8080-exec-2]. a . c . unsubscribed notifications controller:请求已收到。correlation id HQ 12345678888 2022-06-08 10:15:33.734信息{ } 19608-[rest-services-1]c . u . b . u . n . a . p .取消订阅AlertsProducer:消息已成功发送2022-06-08 10:15:33.735信息{ } 19608-[rest-services-1]c . u . b . u . n . Argos . producer
因此,正如您在时间戳之后的日志中看到的那样,{}内有一个INFO {}应该是MDC值,该值仅出现在nio-8080-exec-2线程中,从BpmProducer和取消订阅的警报器触发的日志(这是用于Kafka生成事件的类)不包括先前添加的MDC值。我的问题是我需要做什么才能在每个日志行中显示reactId,如果有任何问题,请让我知道,提前感谢。
您的项目中应该有一个日志回溯配置文件(回溯Spring.xml)。在此文件中,我们可以配置包级记录器。
示例:在下面的配置中,将为com的DEBUG日志打印mdc键。并将打印其他软件包的INFO日志的mdc密钥。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="RFA">
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<includeCallerData>true</includeCallerData>
<includeMdcKeyName>url</includeMdcKeyName>
<includeMdcKeyName>service</includeMdcKeyName>
<includeMdcKeyName>userId</includeMdcKeyName>
</encoder>
<file>logs/service.log</file>
</appender>
<springProfile name="!production">
<logger additivity="false" level="DEBUG" name="com.company"> //check this
<appender-ref ref="RFA"/>
</logger>
<root level="INFO">
<appender-ref ref="RFA"/>
</root>
</springProfile>
</configuration>
我使用serenity BDD进行自动化测试,使用页面对象模型进行框架测试。我创建了一个BasePage类,它将被所有其他页面继承。我想通过添加所有日志来最小化来自页面的日志消息。将信息消息发送到中央基本页。例如,在调用click()方法时,我将在basePage类中记录单击前和单击后的方法,如下所示: 公共类BasePage扩展了PageObject{ 后来我发现,与其单独尝试预先确定用户将在w
是否有一种方法可以将时间戳添加到。pm2/logs中的错误日志中? 我注意到命令显示带有时间戳的聚合日志,但查看日志文件时,只有消息和stacktraces没有日期。
我很高兴地使用SLF4J和logback和使用2个附加为根记录器。 stdout的调试级别 文件的信息级别 所有日志都需要成为输出的一部分(因此需要根记录器)。
我好像拿不到滚动日志文件。 我的logback.xml配置有以下内容: 有意思。SIFT中“unknown.log”文件中的条目在分钟的停止处停止。之后,不会向SIFT文件写入任何内容,但我一直在catalina.out中获取条目:
本文向大家介绍C# 如何添加错误日志信息,包括了C# 如何添加错误日志信息的使用技巧和注意事项,需要的朋友参考一下 系统日志 系统日志包含了由Windows系统组件记录的事件。例如,在启动期间装入驱动程序或其他系统组件失败被记录到系统日志。要查看系统日志: 打开命令提示符。 在提示符下输入eventvwr。这打开了Windows事件查看器。 应用程序日志 应用程序日志包含了由应用程序或程序记录的事
我在我的Spring启动应用程序中使用了开放遥测java自动检测。有没有办法让应用程序日志成为创建的跨度的一部分? 我的自动配置设置如下: