- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 Spring Web 应用程序,它从 UI 接收一些 URI 请求,并调用 Service 类中的业务逻辑来执行特定操作。
下面是我如何使用的快照:
log4j配置:
<Appenders>
<Jdbc ignoreExceptions="true" name="db-appender"
bufferSize="${env:LOG_DB_BUFFER_SIZE}" tableName="test."LOGS"">
<ConnectionFactory class="com.pritam.logging.ConnectionFactory" method="getDatabaseConnection" />
<Column name="dated" isUnicode="false" isEventTimestamp="true" />
<Column name="logger" isUnicode="false" pattern="%logger" />
<Column name="level" isUnicode="false" pattern="%level" />
<Column name="message" isUnicode="false" pattern="%message" />
<Column name="exception" isUnicode="false" pattern="%ex{full}" />
<Column name="session_id" isUnicode="false" pattern="%X{session_id}"/>
</Jdbc>
</Appenders>
示例方法:
public void doSomething(String id, JobHeader jobHeader) {
ThreadContext.put("session_id", jobHeader.getContext().getSessionId());
//Business Logic
logger.debug("Logging Message");
//Business Logic
ThreadContext.clearAll();
}
这很好用。并在不同的列中记录 session ID。
现在,我有 n 个 doSomething 方法,这些方法将在具有各种 session ID 的独立线程中执行。而且我不想一遍又一遍地编写 ThreadContext 语句,因此我正在考虑使用 Spring-AOP 建议(@Around Advice)来完成此任务。
有人可以向我解释一下如何在 Spring-AOP 的 @Around 建议中注入(inject) ThreadContext 吗?
谢谢
最佳答案
我按照这些思路做了一些事情
假设我有一个组件
@Component
public class MyService {
public void doSomething() { ... }
}
然后我将其定义为方面:
@Component
@Aspect
public class MyServiceAspect {
@Before("execution(* <packages>.MyService.doSomething())")
public void beforeDoSomething() {
ThreadContext.put("key", "value");
}
@After("execution(* <packages>.MyService.doSomething())")
public void afterDoSomething() {
ThreadContext.clearAll();
}
}
希望对你有帮助
关于java - Spring AOP中拦截log4j2的ThreadContext around Advice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45485264/
我正在尝试从 log4j-1.x 升级到 log4j-2.3 并在运行时出现以下错误。我缺少什么吗? public void debug(String msg) { appendContext
来自这个答案https://stackoverflow.com/a/25125159/4367326我有 routingAppender 工作,但我想为程序中的每个线程设置 ThreadContext
我有以下控制台附加程序; 问题是我在这里使用的模式输出一个空的 ThreadContext ({})。我不想使用特定的键名称(例如 %X{username}),因为系统非常
我们使用的是 Log4net 的 ThreadContext.Stacks,它运行良好。如果有多个 ThreadContext.Stacks["key"].Push(...),我的问题就来了。 使用简
我已经设置了 ThreadContext.Properties 并且需要在我的代码生命周期中更新它的值。过去我使用过 log4j MDC 并且不得不:MDC.remove(跟踪); 然后通过以下方式添
我的 AsP.NET 站点上运行着 log4net。我可以将消息记录到我的数据库表中,但它没有记录 ThreadContext 属性。例如: ThreadContext.Properties["Url
我正在尝试这个: Type ThreadContextType = typeof(Application).GetNestedType("ThreadContext", System.Reflecti
我一直在做一个使用 log4j2 的项目,在这个项目中我使用了 ThreadContext。现在我回到使用 log4j (1),它不提供 ThreadContext。 ThreadContext 有什
我有以下 Log4J2 配置 XML:
我不明白官方文档中的解释: 逻辑线程可以从一个托管线程跳转到另一个托管线程。 ThreadContext 和 ThreadLogicalContext 有什么区别?有人可以详细说明一下吗? 谢谢。 最
2014 年 11 月 18 日更新 - 在浏览 log4net 源存储库时,我发现 LogicalThreadContext 的实现在 2011 年 11 月被修改为它使用 CallContext.
我正在开发一个 Log4Net 配置,该配置将记录所有未处理的异常。我需要根据用户将某些属性添加到每个日志条目中。我已在 Application_Error 事件中按以下方式成功设置了此设置。这是我完
我只是想知道threadContext.put和MDC.put之间的区别。因为,我相信两者都在做相同的操作。 最佳答案 Log4j 2 continues with the idea of the M
看起来 Class.getResource() 使用 Class 类加载器并忽略 Thread 上下文类加载器,这不是我想要的。关于如何解决这个问题有什么建议吗? 最佳答案 只需获取当前线程类加载器并
有没有人试过同时堆叠context和使用Tasks? 我正在尝试这样的事情: using (log4net.ThreadContext.Stacks["contextLog"].Push("Savin
我想在我的 wcf 服务中使用以下内容在日志消息中记录用户: log4net.ThreadContext.Properties["user"] = this.currentUser.LoginName
在 Web 服务应用程序中,我使用静态方法设置 log4j ThreadContext 变量以进行日志记录,如下所示, public static void setLogParams(String c
总结一下这个问题,我在一个包中有一个公共(public)类,它在整个项目中使用。该类是一个 Aspect 类,它将值放入 ThreadContext(log4j2) 中,以便我们的日志记录将相应的 s
当停止运行我们基于 Wicket-6.19 的网站的 Tomcat 时,大量警告淹没了我们的日志文件: INFO: Stopping service Catalina Jul 06, 2015 8:1
我在一些地方读到 log4net threadContext 在 asp.net 场景中使用不安全。以下是几篇文章: Log4Net, ThreadContext, and Global.asax h
我是一名优秀的程序员,十分优秀!