4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster/**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * The contents of this file are subject to the terms
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * of the Common Development and Distribution License
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * (the License). You may not use this file except in
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * compliance with the License.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * You can obtain a copy of the License at
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * opensso/legal/CDDLv1.0.txt
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * See the License for the specific language governing
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * permission and limitations under the License.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * When distributing Covered Code, include this CDDL
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Header Notice in each file and include the License file
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * at opensso/legal/CDDLv1.0.txt.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * If applicable, add the following below the CDDL Header,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * with the fields enclosed by brackets [] replaced by
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * your own identifying information:
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * "Portions Copyrighted [year] [name of copyright owner]"
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * $Id: LogProvider.java,v 1.5 2008/08/06 17:29:26 exu Exp $
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterpackage com.sun.identity.plugin.log.impl;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.io.IOException;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.net.InetAddress;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.Map;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.util.logging.Level;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.security.AccessController;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport java.text.MessageFormat;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.shared.debug.Debug;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.shared.configuration.SystemPropertiesManager;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.iplanet.sso.SSOException;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.iplanet.sso.SSOToken;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.iplanet.sso.SSOTokenManager;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.authentication.internal.AuthPrincipal;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.log.LogConstants;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.log.Logger;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.log.LogRecord;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.log.messageid.LogMessageProvider;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.log.messageid.MessageProviderFactory;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.plugin.log.LogException;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.plugin.session.SessionManager;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.plugin.session.SessionException;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterimport com.sun.identity.security.AdminTokenAction;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster/**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * This class is the AM implementation of the Open Federation Logger interface.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterpublic class LogProvider implements com.sun.identity.plugin.log.Logger {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster protected Logger accessLogger;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster protected Logger errorLogger;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private LogMessageProvider msgProvider;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private static Debug debug = Debug.getInstance("libPlugins");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private static boolean logStatus = false;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster static {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String status = SystemPropertiesManager.get(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster com.sun.identity.shared.Constants.AM_LOGSTATUS);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster logStatus = (status != null) && status.equalsIgnoreCase("ACTIVE");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Initializes the logging for the component.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param componentName the component name.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @exception LogException if there is an error
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * during initialization.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public void init(String componentName) throws LogException {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster accessLogger = (com.sun.identity.log.Logger)Logger.getLogger(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster componentName + ".access");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster errorLogger = (com.sun.identity.log.Logger)Logger.getLogger(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster componentName + ".error");
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster msgProvider = MessageProviderFactory.getProvider(componentName);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (IOException e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.error(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "LogProvider.<init>: unable to create log message provider", e);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Logs message to the access logs.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param level the log level , these are based on those
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * defined in java.util.logging.Level, the values for
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * level can be any one of the following : <br>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <ul>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>SEVERE (highest value)</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>WARNING</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>INFO</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>CONFIG</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>FINE</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>FINER</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>FINEST (lowest value)</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * </ul>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param messageId the message or a message identifier.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param data string array of dynamic data to be replaced in the message.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param session the User's session object
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @exception LogException if there is an error.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public void access(Level level,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String messageId,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String data[],
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Object session
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster ) throws LogException {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster access(level, messageId, data, session, null);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Writes access to a component into a log.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param level indicating log level
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param messageId Message id
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param data string array of dynamic data only known during run time
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param session Session object (it could be null)
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param props representing log record columns
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @exception LogException if there is an error.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public void access(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Level level,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String messageId,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String data[],
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Object session,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map props) throws LogException
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (isAccessLoggable(level)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SSOToken authSSOToken = (SSOToken) AccessController.doPrivileged(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster AdminTokenAction.getInstance());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster LogRecord lr = getLogRecord(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster messageId, data, session, props, authSSOToken);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (lr != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster accessLogger.log(lr, authSSOToken);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster private LogRecord getLogRecord(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String messageId, String data[], Object session, Map properties,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SSOToken authSSOToken)
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SSOToken ssoToken = null;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (session != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String sid = SessionManager.getProvider().getSessionID(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster session);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster ssoToken = SSOTokenManager.getInstance().createSSOToken(sid);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (SessionException se) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.message("Error getting session provider: " , se);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (SSOException soe) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.message("Error creating SSOToken: " , soe);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SSOToken realToken = (ssoToken != null) ? ssoToken : authSSOToken;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster LogRecord lr = msgProvider.createLogRecord(messageId, data, realToken);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((properties != null) && (lr != null)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String nameIDValue = (String) properties.get(LogConstants.NAME_ID);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((nameIDValue != null) && (nameIDValue.length() > 0)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster lr.addLogInfo(LogConstants.NAME_ID, nameIDValue);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (ssoToken == null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String clientDomain =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster (String)properties.get(LogConstants.DOMAIN);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (clientDomain != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster lr.addLogInfo(LogConstants.DOMAIN, clientDomain);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String clientID = (String)properties.get(LogConstants.LOGIN_ID);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (clientID != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster lr.addLogInfo(LogConstants.LOGIN_ID, clientID);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String ipAddress = (String)properties.get(LogConstants.IP_ADDR);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (ipAddress != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String hostName = ipAddress;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster try {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (Logger.resolveHostNameEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster hostName = InetAddress.getByName(ipAddress).
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster getHostName();
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster } catch (Exception e) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (debug.messageEnabled()) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster debug.message(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster "LogProvider:Unable to get Host for:"
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster + ipAddress);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster hostName = ipAddress;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster lr.addLogInfo(LogConstants.IP_ADDR, hostName);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String loginIDSid =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster (String)properties.get(LogConstants.LOGIN_ID_SID);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (loginIDSid != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster lr.addLogInfo(LogConstants.LOGIN_ID_SID, loginIDSid);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String moduleName =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster (String)properties.get(LogConstants.MODULE_NAME);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (moduleName != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster lr.addLogInfo(LogConstants.MODULE_NAME, moduleName);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String contextID =
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster (String)properties.get(LogConstants.CONTEXT_ID);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (contextID != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster lr.addLogInfo(LogConstants.CONTEXT_ID, contextID);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return lr;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Logs error messages to the error logs.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param level the log level , these are based on those
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * defined in java.util.logging.Level, the values for
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * level can be any one of the following : <br>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <ul>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>SEVERE (highest value)</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>WARNING</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>INFO</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>CONFIG</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>FINE</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>FINER</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * <li>FINEST (lowest value)</li>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * </ul>
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param messageId the message or a message identifier.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param data string array of dynamic data to be replaced in the message.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param session the User's Session object.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @exception LogException if there is an error.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public void error(Level level, String messageId, String data[],
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Object session) throws LogException {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster error(level, messageId, data, session, null);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Writes error occurred in a component into a log.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param level indicating log level
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param messageId Message id
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param data string array of dynamic data only known during run time
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param session Session object (it could be null)
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param props log record columns
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @exception LogException if there is an error.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public void error(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Level level,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String messageId,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster String data[],
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Object session,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster Map props) throws LogException
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (isErrorLoggable(level)) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SSOToken authSSOToken = (SSOToken) AccessController.doPrivileged(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster AdminTokenAction.getInstance());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster LogRecord lr = getLogRecord(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster messageId, data, session, props, authSSOToken);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if (lr != null) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster errorLogger.log(lr, authSSOToken);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Returns <code>true</code> if logging is enabled.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @return <code>true</code> if logging is enabled.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public boolean isLogEnabled() {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return logStatus;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Checks if an access message of the given level would actually be logged
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * by this logger. This check is based on the Logger's effective level.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param level a message logging level defined in java.util.logging.Level.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @return true if the given message level is currently being logged.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public boolean isAccessLoggable(Level level) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SSOToken authSSOToken = (SSOToken) AccessController.doPrivileged(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster AdminTokenAction.getInstance());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((authSSOToken == null) || !logStatus) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return false;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return accessLogger.isLoggable(level);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /**
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * Checks if an error message of the given level would actually be logged
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * by this logger. This check is based on the Logger's effective level.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster *
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @param level a message logging level defined in java.util.logging.Level.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster * @return true if the given message level is currently being logged.
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster public boolean isErrorLoggable(Level level) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster SSOToken authSSOToken = (SSOToken) AccessController.doPrivileged(
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster AdminTokenAction.getInstance());
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster if ((authSSOToken == null) || !logStatus) {
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return false;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster return errorLogger.isLoggable(level);
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster }
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster}