001/*-------------------------------------------------------------------------+
002|                                                                          |
003| Copyright (c) 2009-2018 CQSE GmbH                                        |
004|                                                                          |
005+-------------------------------------------------------------------------*/
006package org.conqat.lib.commons.logging;
007
008/**
009 * {@link ILogger} that wraps another logger and prints the given message once
010 * before any other message is printed.
011 */
012public class WrappedLogger implements ILogger {
013
014        /**
015         * The message that is printed before any other message coming through this
016         * wrapper.
017         */
018        private String prefixMessage;
019
020        /** Whether we already printed the message on Debug level */
021        private boolean printedOnDebug = false;
022        /** Whether we already printed the message on Info level */
023        private boolean printedOnInfo = false;
024        /** Whether we already printed the message on Warn level */
025        private boolean printedOnWarn = false;
026        /** Whether we already printed the message on Error level */
027        private boolean printedOnError = false;
028
029        /** This is the wrapped {@link ILogger} that we delegate log messages to. */
030        private ILogger wrappedLogger;
031
032        /** Constructor. */
033        public WrappedLogger(ILogger logger, String message) {
034                this.prefixMessage = message;
035                this.wrappedLogger = logger;
036        }
037
038        /** {@inheritDoc} */
039        @Override
040        public void debug(Object message) {
041                if (!printedOnDebug) {
042                        wrappedLogger.debug(prefixMessage);
043                        printedOnDebug = true;
044                }
045                wrappedLogger.debug(message);
046        }
047
048        /** {@inheritDoc} */
049        @Override
050        public void debug(Object message, Throwable throwable) {
051                if (!printedOnDebug) {
052                        wrappedLogger.debug(prefixMessage);
053                        printedOnDebug = true;
054                }
055                wrappedLogger.debug(message, throwable);
056        }
057
058        /** {@inheritDoc} */
059        @Override
060        public void info(Object message) {
061                if (!printedOnInfo) {
062                        wrappedLogger.info(prefixMessage);
063                        printedOnInfo = true;
064                }
065                wrappedLogger.info(message);
066        }
067
068        /** {@inheritDoc} */
069        @Override
070        public void info(Object message, Throwable throwable) {
071                if (!printedOnInfo) {
072                        wrappedLogger.info(prefixMessage);
073                        printedOnInfo = true;
074                }
075                wrappedLogger.info(message, throwable);
076
077        }
078
079        /** {@inheritDoc} */
080        @Override
081        public void warn(Object message) {
082                if (!printedOnWarn) {
083                        wrappedLogger.warn(prefixMessage);
084                        printedOnWarn = true;
085                }
086                wrappedLogger.warn(message);
087        }
088
089        /** {@inheritDoc} */
090        @Override
091        public void warn(Object message, Throwable throwable) {
092                if (!printedOnWarn) {
093                        wrappedLogger.warn(prefixMessage);
094                        printedOnWarn = true;
095                }
096                wrappedLogger.warn(message, throwable);
097        }
098
099        /** {@inheritDoc} */
100        @Override
101        public void error(Object message) {
102                if (!printedOnError) {
103                        wrappedLogger.error(prefixMessage);
104                        printedOnError = true;
105                }
106                wrappedLogger.error(message);
107        }
108
109        /** {@inheritDoc} */
110        @Override
111        public void error(Object message, Throwable throwable) {
112                if (!printedOnError) {
113                        wrappedLogger.error(prefixMessage);
114                        printedOnError = true;
115                }
116                wrappedLogger.error(message, throwable);
117        }
118
119}