001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018package org.apache.commons.logging.impl;
019
020import java.io.Serializable;
021
022import org.apache.commons.logging.Log;
023import org.apache.log.Hierarchy;
024import org.apache.log.Logger;
025
026/**
027 * Implements {@code org.apache.commons.logging.Log}
028 * to wrap the <a href="https://avalon.apache.org/logkit/">Apache Avalon Logkit</a>
029 * logging system. Configuration of {@code LogKit} is left to the user.
030 * <p>
031 * {@code LogKit} accepts only {@code String} messages.
032 * Therefore, this implementation converts object messages into strings
033 * by called their {@code toString()} method before logging them.
034 * </p>
035 *
036 * @deprecated Scheduled for removal because the Apache Avalon Project has been discontinued.
037 */
038@Deprecated
039public class LogKitLogger implements Log, Serializable {
040
041    /** Serializable version identifier. */
042    private static final long serialVersionUID = 3768538055836059519L;
043
044    /** Logging goes to this {@code LogKit} logger */
045    protected transient volatile Logger logger;
046
047    /** Name of this logger */
048    protected String name;
049
050    /**
051     * Constructs {@code LogKitLogger} which wraps the {@code LogKit}
052     * logger with given name.
053     *
054     * @param name log name
055     */
056    public LogKitLogger(final String name) {
057        this.name = name;
058        this.logger = getLogger();
059    }
060
061    /**
062     * Logs a message with {@code org.apache.log.Priority.DEBUG}.
063     *
064     * @param message to log
065     * @see org.apache.commons.logging.Log#debug(Object)
066     */
067    @Override
068    public void debug(final Object message) {
069        if (message != null) {
070            getLogger().debug(String.valueOf(message));
071        }
072    }
073
074    /**
075     * Logs a message with {@code org.apache.log.Priority.DEBUG}.
076     *
077     * @param message to log
078     * @param t log this cause
079     * @see org.apache.commons.logging.Log#debug(Object, Throwable)
080     */
081    @Override
082    public void debug(final Object message, final Throwable t) {
083        if (message != null) {
084            getLogger().debug(String.valueOf(message), t);
085        }
086    }
087
088    /**
089     * Logs a message with {@code org.apache.log.Priority.ERROR}.
090     *
091     * @param message to log
092     * @see org.apache.commons.logging.Log#error(Object)
093     */
094    @Override
095    public void error(final Object message) {
096        if (message != null) {
097            getLogger().error(String.valueOf(message));
098        }
099    }
100
101    /**
102     * Logs a message with {@code org.apache.log.Priority.ERROR}.
103     *
104     * @param message to log
105     * @param t log this cause
106     * @see org.apache.commons.logging.Log#error(Object, Throwable)
107     */
108    @Override
109    public void error(final Object message, final Throwable t) {
110        if (message != null) {
111            getLogger().error(String.valueOf(message), t);
112        }
113    }
114
115    /**
116     * Logs a message with {@code org.apache.log.Priority.FATAL_ERROR}.
117     *
118     * @param message to log
119     * @see org.apache.commons.logging.Log#fatal(Object)
120     */
121    @Override
122    public void fatal(final Object message) {
123        if (message != null) {
124            getLogger().fatalError(String.valueOf(message));
125        }
126    }
127
128    /**
129     * Logs a message with {@code org.apache.log.Priority.FATAL_ERROR}.
130     *
131     * @param message to log
132     * @param t log this cause
133     * @see org.apache.commons.logging.Log#fatal(Object, Throwable)
134     */
135    @Override
136    public void fatal(final Object message, final Throwable t) {
137        if (message != null) {
138            getLogger().fatalError(String.valueOf(message), t);
139        }
140    }
141
142    /**
143     * Gets the underlying Logger we are using.
144     *
145     * @return the underlying Logger we are using.
146     */
147    public Logger getLogger() {
148        Logger result = logger;
149        if (result == null) {
150            synchronized(this) {
151                result = logger;
152                if (result == null) {
153                    logger = result = Hierarchy.getDefaultHierarchy().getLoggerFor(name);
154                }
155            }
156        }
157        return result;
158    }
159
160    /**
161     * Logs a message with {@code org.apache.log.Priority.INFO}.
162     *
163     * @param message to log
164     * @see org.apache.commons.logging.Log#info(Object)
165     */
166    @Override
167    public void info(final Object message) {
168        if (message != null) {
169            getLogger().info(String.valueOf(message));
170        }
171    }
172
173    /**
174     * Logs a message with {@code org.apache.log.Priority.INFO}.
175     *
176     * @param message to log
177     * @param t log this cause
178     * @see org.apache.commons.logging.Log#info(Object, Throwable)
179     */
180    @Override
181    public void info(final Object message, final Throwable t) {
182        if (message != null) {
183            getLogger().info(String.valueOf(message), t);
184        }
185    }
186
187    /**
188     * Checks whether the {@code LogKit} logger will log messages of priority {@code DEBUG}.
189     */
190    @Override
191    public boolean isDebugEnabled() {
192        return getLogger().isDebugEnabled();
193    }
194
195    /**
196     * Checks whether the {@code LogKit} logger will log messages of priority {@code ERROR}.
197     */
198    @Override
199    public boolean isErrorEnabled() {
200        return getLogger().isErrorEnabled();
201    }
202
203    /**
204     * Checks whether the {@code LogKit} logger will log messages of priority {@code FATAL_ERROR}.
205     */
206    @Override
207    public boolean isFatalEnabled() {
208        return getLogger().isFatalErrorEnabled();
209    }
210
211    /**
212     * Checks whether the {@code LogKit} logger will log messages of priority {@code INFO}.
213     */
214    @Override
215    public boolean isInfoEnabled() {
216        return getLogger().isInfoEnabled();
217    }
218
219    /**
220     * Checks whether the {@code LogKit} logger will log messages of priority {@code DEBUG}.
221     */
222    @Override
223    public boolean isTraceEnabled() {
224        return getLogger().isDebugEnabled();
225    }
226
227    /**
228     * Checks whether the {@code LogKit} logger will log messages of priority {@code WARN}.
229     */
230    @Override
231    public boolean isWarnEnabled() {
232        return getLogger().isWarnEnabled();
233    }
234
235    /**
236     * Logs a message with {@code org.apache.log.Priority.DEBUG}.
237     *
238     * @param message to log
239     * @see org.apache.commons.logging.Log#trace(Object)
240    */
241    @Override
242    public void trace(final Object message) {
243        debug(message);
244    }
245
246    /**
247     * Logs a message with {@code org.apache.log.Priority.DEBUG}.
248     *
249     * @param message to log
250     * @param t log this cause
251     * @see org.apache.commons.logging.Log#trace(Object, Throwable)
252     */
253    @Override
254    public void trace(final Object message, final Throwable t) {
255        debug(message, t);
256    }
257
258    /**
259     * Logs a message with {@code org.apache.log.Priority.WARN}.
260     *
261     * @param message to log
262     * @see org.apache.commons.logging.Log#warn(Object)
263     */
264    @Override
265    public void warn(final Object message) {
266        if (message != null) {
267            getLogger().warn(String.valueOf(message));
268        }
269    }
270
271    /**
272     * Logs a message with {@code org.apache.log.Priority.WARN}.
273     *
274     * @param message to log
275     * @param t log this cause
276     * @see org.apache.commons.logging.Log#warn(Object, Throwable)
277     */
278    @Override
279    public void warn(final Object message, final Throwable t) {
280        if (message != null) {
281            getLogger().warn(String.valueOf(message), t);
282        }
283    }
284}