public void run() {
		while(!this.shutdown || !this.queuedMessages.isEmpty()) {
			final List<byte[]> queuedMessagesCopy;

			synchronized(this.queuedMessages) {
				queuedMessagesCopy = new LinkedList<byte[]>(this.queuedMessages);
				this.queuedMessages.clear();
			}

			if (queuedMessagesCopy != null) {
				while(!queuedMessagesCopy.isEmpty()) {
					final byte[] message = (byte[]) queuedMessagesCopy.remove(0);

					try {
						write(message);
						this.syslog.setBackLogStatus(false);
					} catch (final SyslogRuntimeException sre) {
						this.syslog.backLog(SyslogConstants.LEVEL_INFO,SyslogUtility.newString(this.syslog.getConfig(),message),sre);
					}
				}
			}

			try {
				Thread.sleep(this.syslogConfig.getThreadLoopInterval());
			} catch (final InterruptedException ie) {
				//
			}
		}

		runCompleted();
	}