log4j2是否存在线程安全问题

应用中定义了一个日志打印切面,切面中定义了一些静态的logger成员变量,类似于这样
private static final Logger logger = LoggerFactory.getLogger(ApiLogAspect.class);
现在的问题是多个线程使用同一个logger是否会存在安全问题。
谢谢各位大佬各显神通

2个回答

Log4j组件设计用于大量多线程系统
log4j是线程安全的。原因是AppenderSkeleton.doAppend()方法是同步的。但要小心配置编程! 例如,您不能在不同的appender中使用相同的TTCCLayout实)!看看PatternLayout方法format()。它改变实例字段(StringBuffer sbuf),所以如果你在不同的appender中使用相同的PatternLayout实例,你将面临竞争条件。EnhancedPatternLayout更好,因为他们修改格式化方法。
希望对你有用
http://blogxinxiucan.sh1.newtouch.com/2017/06/27/Hello/

必须是线程安全的 放心使用

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
servlet是否存在线程安全问题
        今天老师问了一句,servlet存在线程安全问题吗,心想着servlet不是单例的嘛,每个线程在调用的时候都会为实例对象分配独立的引用。我就以为servlet属于线程安全的。晚上自己再网上查看了一下,发现servlet不是安全的。        下面就给大家介绍一下servlet线程安全问题        首先,默认的servlet是非线程安全的,servlet是单例模式,只产生一...
多线程共享数据库连接是否存在线程安全问题
(1)最近在做的项目里我将数据库连接设置为静态变量,并且多个线程对数据库的增删改查操作共用这一个连接,那这个连接在程序运行过程中是多个线程抢占式使用吗?如果是,是不是就没有线程安全问题了,因为同一时刻只有一个线程使用这个数据库连接操作数据库。不知道我这样理解对不对?rn(2)其次,共享连接会不会造成程序效率降低而不如多个线程使用多个连接,但这样一来势必又会造成线程安全问题吧?rn备注:数据库使用的是oracle的berkeley db
spring默认存在线程安全问题 !!!
1.struts1的action是单例的,所以存在线程安全问题,但是struts2的action不是单例所以是线程安全的 2.spring默认的注入也是单例的,所以存在线程安全问题 先理解为何会有线程不安全的问题,比如有一个类Person 有个属性是name,线程1修改了这个属性的name,要进行存入数据库操作的时候,线程2又修改了这个name,这样线程1就存入了一个线程2修改过的数据...
未使用全局变量的函数是否存在线程安全问题
一个函数中包括多个私有变量但没有使用全局变量,这个函数被多个线程访问,这些私有变量是否需要考虑线程安全问题?如果需要采用什么方式来处理最为经济。
静态方法做数值相加是否存在线程安全问题
[code=Java]rnpublic static double sub(double d1,double d2) rn BigDecimal bd1 = new BigDecimal(Double.toString(d1)); rn BigDecimal bd2 = new BigDecimal(Double.toString(d2)); rn return bd1.subtract(bd2).doubleValue(); rn rn[/code]rnrnrn此方法如果在多线程的情况下是否存在安全问题
【Java】SimpleDateFormat时间格式化存在线程安全问题
-
线程安全问题
1.  class Out extends Thread { String name; static int num =50; public Out(String name) { this.name = name; // super(name); } public void run() { while(num>0) { System.out.println(na
线程安全问题?
public static StringBuilder getFullMsg(byte buffer[], int len, InputStream is)rn throws Exceptionrn rn StringBuilder msg = new StringBuilder();rn int i = 0;rn for(i = is.read(buffer); i > -1; i = is.read(buffer))rn rn String str = new String(buffer, 0, i);rn msg.append(str);rn if(msg.toString().getBytes().length == len)rn break;rn buffer = new byte[len - i];rn rnrn return msg;rn rn这个静态方法在多线程中调用会产生线程安全问题吗?
线程(集合的线程安全问题)
集合与线程安全 iterator CAS算法 集合与线程安全 Do you notice that all the basic collection classes - ArrayList, LinkedList, HashMap, HashSet, TreeMap, TreeSet, etc - all are not synchronized? In fact, all...
请问 还原数据库 是否存在安全问题?
操作流程:rn1、用户通过web应用程序或ftp上传备份文件rn2、web应用程序实现还原数据库rnrn不知道这样是否会存在安全问题?如上传一个病毒文件或其他可能破坏服务器的文件会发生什么情况?
线程安全问题。
各位大牛,我现在在ADSP-BF561下基于NET2272开发USB实时图像传输,PC端是Windows平台,VS2008,但是图像传输不稳定,很容易就堵死。现在能够证明不是dsp端的问题,PC端的应用程序开了一个线程接收图像并显示,但是这样不稳定,如果将接受图像并显示放在主线程中,UI线程会死掉,但是这样很稳定。,线程安全都已经考虑到了,将UI 线程与工作线程的共享数据定义为全局,因为UI线程只负责初始化工作,当接受显示线程启动以后,UI线程便不会操作全局数据,请教各位大牛,我该从哪方面入手来解决这个问题。
如何判断线程是否存在?
我要杀一个线程,如何知道这个是在运行,还是已退出?
Java——多线程存在的安全问题
/* 存在的问题:当num=1时,假如线程t1此时拿到CPU,执行任务代码,在判断if语句条件刚刚结束时,也就是还没来得及执行输出语句,CPU被t2抢走了,此时num依然等于1,那么if条件通过,在执行过程中,依然可能被其他线程抢走CPU而进入阻塞状态,最后有可能卖出0,-1,-2这种票,这就是多线程存在的安全问题*/ class Ticket implements Runnable{ pu
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池