logback-core/src/main/java/ch/qos/logback/core/AppenderBase.java:
public synchronized void doAppend(E eventObject)
logback-core/src/main/java/ch/qos/logback/core/BasicStatusManager.java:
locks:
Object statusListLock
Object statusListenerListLock
exposition: to derived classes
logback-core/src/main/java/ch/qos/logback/core/status/StatusBase.java:
locks: this
lock exposition: this
logback-classic/src/main/java/ch/qos/logback/classic/selector/ContextJNDISelector.java:
locks: synchronizedContextMap
lock exposition: none
logback-classic/src/main/java/ch/qos/logback/classic/Logger.java
locks: synchronizedContextMap
lock exposition: none
logback-classic/src/main/java/ch/qos/logback/classic/LoggerContext.java
locks: logger,
loggerCache should be syncronzied but is not
lock exposition:
logback-classic/src/main/java/ch/qos/logback/classic/Logger.java:
* synchronized on 'this' (Logger) protecting against simultaneous
* only within addAppender which is synchronized
3) all the other methods
public synchronized void setLevel(Level newLevel) {
private synchronized void handleParentLevelChange(int newParentLevelInt) {
// this method MUST be synchronized. See comments on 'aai' field for further
public synchronized void addAppender(Appender newAppender) {
logback-core/src/main/java/ch/qos/logback/core/joran/GenericConfigurator.java:
locks: context
lock exposition: none
* only within addAppender which is synchronized 3) all the other methods
public synchronized void setLevel(Level newLevel) {
private synchronized void handleParentLevelChange(int newParentLevelInt) {
// this method MUST be synchronized. See comments on 'aai' field for further
public synchronized void addAppender(Appender newAppender) {
logback-core/src/main/java/ch/qos/logback/core/FileAppender.java: public synchronized void openFile(String file_name) throws IOException {
logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java: synchronized public void stop() {
logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java: synchronized (this) {
logback-core/src/main/java/ch/qos/logback/core/WriterAppender.java: public synchronized void stop() {
logback-core/src/main/java/ch/qos/logback/core/WriterAppender.java: public synchronized void setWriter(Writer writer) {
logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java: public synchronized void stop() {
logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java: // The synchronized modifier avoids concurrent append and close operations
logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java: public synchronized void stop() {
logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java: // The synchronized modifier avoids concurrent append and close operations
logback-core/src/main/java/ch/qos/logback/core/status/StatusBase.java: public synchronized void add(Status child) {
logback-core/src/main/java/ch/qos/logback/core/status/StatusBase.java: public synchronized boolean hasChildren() {
logback-core/src/main/java/ch/qos/logback/core/status/StatusBase.java: public synchronized Iterator iterator() {
logback-core/src/main/java/ch/qos/logback/core/status/StatusBase.java: public synchronized boolean remove(Status statusToRemove) {
logback-classic/src/main/java/ch/qos/logback/classic/net/SimpleSocketServer.java: synchronized (socketNodeList) {
logback-classic/src/main/java/ch/qos/logback/classic/net/SimpleSocketServer.java: synchronized(this) {
logback-classic/src/main/java/ch/qos/logback/classic/net/SimpleSocketServer.java: synchronized (socketNodeList) {
logback-classic/src/main/java/ch/qos/logback/classic/net/SimpleSocketServer.java: synchronized (socketNodeList) {
logback-classic/src/main/java/ch/qos/logback/classic/pattern/DateConverter.java: // the AppenderBase.doAppend is synchronized, we are should be