001: /* Copyright 2000 The JA-SIG Collaborative. All rights reserved.
002: * See license distributed with this file and
003: * available online at http://www.uportal.org/license.html
004: */
005:
006: package org.jasig.portal.services;
007:
008: import org.apache.commons.logging.Log;
009: import org.apache.commons.logging.LogFactory;
010: import org.apache.log4j.Priority;
011:
012: /**
013: * As of uPortal 2.4, use Apache Commons Logging directly instead of using this
014: * LogService. This LogService is retained here for backwards compatibility,
015: * and presumably will disappear in a future release.
016: *
017: * The LogService is a service offered by the uPortal framework whereby messages
018: * can be logged. Each uPortal deployment can customize exactly where how and
019: * how much they want logged. As of uPortal 2.4, this is accomplished by this class
020: * delegating all logging to Apache Commons Logging. The expected typical (and
021: * default) local logging configuration is to use the Logger.properties file to configure
022: * Log4J as the underlying logging implementation, to a file on disk. However, the
023: * options are endless under Log4J: you can configure it to log as XML, to log to a tree
024: * of files depending upon where the logging message is coming from and at what
025: * logging level, to send log messages over the network to a Chainsaw instance listening to
026: * your uPortal... Furthermore, you don't even have to use Log4J: Commons Logging supports
027: * JDK1.4 logging as well as the ability for you to plug in a custom logging implementation if
028: * you really want to.
029: *
030: * @author Ken Weiner, Bernie Durfee, Vikrant Joshi, Zed A. Shaw, andrew.petro@yale.edu
031: * @version $Revision: 35330 $ $Date: 2005-01-17 11:43:50 -0700 (Mon, 17 Jan 2005) $
032: * @deprecated As of uPortal 2.4, please use Apache Commons Logging directly
033: */
034: public final class LogService {
035: // Log levels, create fake ones if they don't match the Log4J standard ones
036:
037: public final static Priority NONE = Priority.DEBUG;
038:
039: public final static Priority SEVERE = Priority.FATAL;
040:
041: public final static Priority ERROR = Priority.ERROR;
042:
043: public final static Priority WARN = Priority.WARN;
044:
045: public final static Priority INFO = Priority.INFO;
046:
047: public final static Priority DEBUG = Priority.DEBUG;
048: private static final Log log = LogFactory
049: .getLog("org.jasig.portal");
050: private static final LogService m_instance = new LogService();
051:
052: static {
053: initialize();
054: log.debug(LogService.class.getName()
055: + " logging using Log implementation "
056: + log.getClass().getName());
057: }
058:
059: protected LogService() {
060: initialize();
061: }
062:
063: public final static LogService instance() {
064: return (m_instance);
065: }
066:
067: /**
068: * Used to configure Log4J with the Logger.properties file.
069: * Now does nothing, as the build.xml now copies the Logger.properties file
070: * to the well known name (log4j.properties) and location (base of the classpath
071: * by virtue of being in the base of the WEB-INF/classes/ directory) expected
072: * by Log4J.
073: * @deprecated no longer does anything
074: */
075: private final static void initialize() {
076: /*
077: * No longer does anything.
078: * The build.xml compile task copies the Logger.properties file
079: * to the well known name and location Log4J expects.
080: */
081: }
082:
083: public final static void log(Priority pLogLevel, String sMessage) {
084: initialize();
085: if (pLogLevel == null) {
086: log.fatal(sMessage);
087: } else if (pLogLevel.equals(SEVERE)) {
088: log.fatal(sMessage);
089: } else if (pLogLevel.equals(ERROR)) {
090: log.error(sMessage);
091: } else if (pLogLevel.equals(WARN)) {
092: log.warn(sMessage);
093: } else if (pLogLevel.equals(INFO)) {
094: log.info(sMessage);
095: } else if (pLogLevel.equals(DEBUG)) {
096: log.debug(sMessage);
097: } else if (pLogLevel.equals(NONE)) {
098: log.debug(sMessage);
099: } else {
100: // should never get here
101: log.fatal(sMessage);
102: }
103: }
104:
105: /**
106: * Log the given throwable at the given priority.
107: * @param pLogLevel - logging level
108: * @param ex - throwable to be logged
109: */
110: public final static void log(Priority pLogLevel, Throwable ex) {
111: initialize();
112: if (pLogLevel == null) {
113: log.fatal(ex, ex);
114: } else if (pLogLevel.equals(SEVERE)) {
115: log.fatal(ex, ex);
116: } else if (pLogLevel.equals(ERROR)) {
117: log.error(ex, ex);
118: } else if (pLogLevel.equals(WARN)) {
119: log.warn(ex, ex);
120: } else if (pLogLevel.equals(INFO)) {
121: log.info(ex, ex);
122: } else if (pLogLevel.equals(DEBUG)) {
123: log.debug(ex, ex);
124: } else if (pLogLevel.equals(NONE)) {
125: log.debug(ex, ex);
126: } else {
127: // should never get here
128: log.fatal("Unrecognized logging level " + pLogLevel, ex);
129: }
130: }
131:
132: public final static void log(Priority pLogLevel, String sMessage,
133: Throwable ex) {
134: initialize();
135: if (pLogLevel == null) {
136: log.fatal(sMessage, ex);
137: } else if (pLogLevel.equals(SEVERE)) {
138: log.fatal(sMessage, ex);
139: } else if (pLogLevel.equals(ERROR)) {
140: log.error(sMessage, ex);
141: } else if (pLogLevel.equals(WARN)) {
142: log.warn(sMessage, ex);
143: } else if (pLogLevel.equals(INFO)) {
144: log.info(sMessage, ex);
145: } else if (pLogLevel.equals(DEBUG)) {
146: log.debug(sMessage, ex);
147: } else if (pLogLevel.equals(NONE)) {
148: log.debug(sMessage, ex);
149: } else {
150: // Should never get here.
151: log.fatal(sMessage, ex);
152: }
153: }
154:
155: public final static void log(String sMessage) {
156: initialize();
157: log.info(sMessage);
158: }
159:
160: }
|