在Web服务应用程序中,我使用静态方法设置log4j ThreadContext变量以进行日志记录,如下所示,
public static void setLogParams(String company_id, String userId) {
ThreadContext.put("company_id_val", company_id);
ThreadContext.put("user_id_val", userId);
}
Run Code Online (Sandbox Code Playgroud)
每个Web服务请求最初都会调用上面的方法,然后loj4j Logger object用于完成剩下的工作.以上给定值每次都不相同,可能会改变请求请求.
我的问题:上面的场景是线程安全的吗?不同的Web服务请求是否共享相同的内容company_id,user_id因为这两个参数都保持相同的引用?那会很混乱.我应该使用非静态方法吗?
我确实经历了下面的类似问题
但我需要澄清一下.