mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

kenneth_suter
15.34.2007 cfc513043c5830b5a967733066068c7097b42e3c
opendj-sdk/opends/src/server/org/opends/server/loggers/TextErrorLogPublisher.java
@@ -25,6 +25,7 @@
 *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
 */
package org.opends.server.loggers;
import org.opends.messages.Message;
import java.io.File;
import java.io.IOException;
@@ -35,9 +36,10 @@
import org.opends.server.config.ConfigException;
import org.opends.server.types.*;
import static org.opends.server.messages.ConfigMessages.*;
import static org.opends.server.messages.LoggerMessages.*;
import static org.opends.server.messages.MessageHandler.getMessage;
import static org.opends.messages.ConfigMessages.*;
import static org.opends.messages.LoggerMessages.*;
import org.opends.messages.Severity;
import org.opends.messages.Category;
import org.opends.server.admin.std.server.ErrorLogPublisherCfg;
import org.opends.server.admin.std.server.FileBasedErrorLogPublisherCfg;
import org.opends.server.admin.std.meta.ErrorLogPublisherCfgDefn;
@@ -74,10 +76,10 @@
    TextErrorLogPublisher startupPublisher = new TextErrorLogPublisher();
    startupPublisher.writer = writer;
    startupPublisher.defaultSeverities.add(ErrorLogSeverity.FATAL_ERROR);
    startupPublisher.defaultSeverities.add(ErrorLogSeverity.SEVERE_ERROR);
    startupPublisher.defaultSeverities.add(ErrorLogSeverity.SEVERE_WARNING);
    startupPublisher.defaultSeverities.add(ErrorLogSeverity.NOTICE);
    startupPublisher.defaultSeverities.add(Severity.FATAL_ERROR);
    startupPublisher.defaultSeverities.add(Severity.SEVERE_ERROR);
    startupPublisher.defaultSeverities.add(Severity.SEVERE_WARNING);
    startupPublisher.defaultSeverities.add(Severity.NOTICE);
    return startupPublisher;
  }
@@ -124,10 +126,9 @@
        }
        else
        {
          int msgID = MSGID_CONFIG_LOGGER_INVALID_ROTATION_POLICY;
          String message = getMessage(msgID, dn.toString(),
                                      config.dn().toString());
          throw new ConfigException(msgID, message);
          Message message = ERR_CONFIG_LOGGER_INVALID_ROTATION_POLICY.get(
              dn.toString(), config.dn().toString());
          throw new ConfigException(message);
        }
      }
      for(DN dn: config.getRetentionPolicyDN())
@@ -139,10 +140,9 @@
        }
        else
        {
          int msgID = MSGID_CONFIG_LOGGER_INVALID_RETENTION_POLICY;
          String message = getMessage(msgID, dn.toString(),
                                      config.dn().toString());
          throw new ConfigException(msgID, message);
          Message message = WARN_CONFIG_LOGGER_INVALID_RETENTION_POLICY.get(
              dn.toString(), config.dn().toString());
          throw new ConfigException(message);
        }
      }
@@ -160,18 +160,16 @@
    }
    catch(DirectoryException e)
    {
      int msgID = MSGID_CONFIG_LOGGING_CANNOT_CREATE_WRITER;
      String message = getMessage(msgID, config.dn().toString(),
                                  String.valueOf(e));
      throw new InitializationException(msgID, message, e);
      Message message = ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
          config.dn().toString(), String.valueOf(e));
      throw new InitializationException(message, e);
    }
    catch(IOException e)
    {
      int msgID = MSGID_CONFIG_LOGGING_CANNOT_CREATE_WRITER;
      String message = getMessage(msgID, config.dn().toString(),
                                  String.valueOf(e));
      throw new InitializationException(msgID, message, e);
      Message message = ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
          config.dn().toString(), String.valueOf(e));
      throw new InitializationException(message, e);
    }
@@ -179,27 +177,27 @@
        config.getDefaultSeverity();
    if(defSevs.isEmpty())
    {
      defaultSeverities.add(ErrorLogSeverity.FATAL_ERROR);
      defaultSeverities.add(ErrorLogSeverity.SEVERE_ERROR);
      defaultSeverities.add(ErrorLogSeverity.SEVERE_WARNING);
      defaultSeverities.add(Severity.FATAL_ERROR);
      defaultSeverities.add(Severity.SEVERE_ERROR);
      defaultSeverities.add(Severity.SEVERE_WARNING);
    } else
    {
      for(ErrorLogPublisherCfgDefn.DefaultSeverity defSev : defSevs)
      {
        if(defSev.toString().equalsIgnoreCase(LOG_SEVERITY_ALL))
        {
          defaultSeverities.add(ErrorLogSeverity.FATAL_ERROR);
          defaultSeverities.add(ErrorLogSeverity.INFORMATIONAL);
          defaultSeverities.add(ErrorLogSeverity.MILD_ERROR);
          defaultSeverities.add(ErrorLogSeverity.MILD_WARNING);
          defaultSeverities.add(ErrorLogSeverity.NOTICE);
          defaultSeverities.add(ErrorLogSeverity.SEVERE_ERROR);
          defaultSeverities.add(ErrorLogSeverity.SEVERE_WARNING);
          defaultSeverities.add(Severity.FATAL_ERROR);
          defaultSeverities.add(Severity.INFORMATION);
          defaultSeverities.add(Severity.MILD_ERROR);
          defaultSeverities.add(Severity.MILD_WARNING);
          defaultSeverities.add(Severity.NOTICE);
          defaultSeverities.add(Severity.SEVERE_ERROR);
          defaultSeverities.add(Severity.SEVERE_WARNING);
        }
        else
        {
          ErrorLogSeverity errorSeverity =
              ErrorLogSeverity.getByName(defSev.toString());
          Severity errorSeverity =
              Severity.parseString(defSev.name());
          if(errorSeverity != null)
          {
            defaultSeverities.add(errorSeverity);
@@ -215,23 +213,22 @@
        int equalPos = overrideSeverity.indexOf('=');
        if (equalPos < 0)
        {
          int msgID = MSGID_ERROR_LOGGER_INVALID_OVERRIDE_SEVERITY;
          String msg = getMessage(msgID, overrideSeverity);
          throw new ConfigException(msgID, msg);
          Message msg =
              WARN_ERROR_LOGGER_INVALID_OVERRIDE_SEVERITY.get(overrideSeverity);
          throw new ConfigException(msg);
        } else
        {
          String categoryName = overrideSeverity.substring(0, equalPos);
          ErrorLogCategory category = ErrorLogCategory.getByName(categoryName);
          Category category = Category.valueOf(categoryName);
          if (category == null)
          {
            int msgID = MSGID_ERROR_LOGGER_INVALID_CATEGORY;
            String msg = getMessage(msgID, categoryName);
            throw new ConfigException(msgID, msg);
            Message msg = WARN_ERROR_LOGGER_INVALID_CATEGORY.get(categoryName);
            throw new ConfigException(msg);
          } else
          {
            HashSet<ErrorLogSeverity> severities =
                new HashSet<ErrorLogSeverity>();
            HashSet<Severity> severities =
                new HashSet<Severity>();
            StringTokenizer sevTokenizer =
              new StringTokenizer(overrideSeverity.substring(equalPos+1), ",");
            while (sevTokenizer.hasMoreElements())
@@ -239,23 +236,23 @@
              String severityName = sevTokenizer.nextToken();
              if(severityName.equalsIgnoreCase(LOG_SEVERITY_ALL))
              {
                severities.add(ErrorLogSeverity.FATAL_ERROR);
                severities.add(ErrorLogSeverity.INFORMATIONAL);
                severities.add(ErrorLogSeverity.MILD_ERROR);
                severities.add(ErrorLogSeverity.MILD_WARNING);
                severities.add(ErrorLogSeverity.NOTICE);
                severities.add(ErrorLogSeverity.SEVERE_ERROR);
                severities.add(ErrorLogSeverity.SEVERE_WARNING);
                severities.add(Severity.FATAL_ERROR);
                severities.add(Severity.INFORMATION);
                severities.add(Severity.MILD_ERROR);
                severities.add(Severity.MILD_WARNING);
                severities.add(Severity.NOTICE);
                severities.add(Severity.SEVERE_ERROR);
                severities.add(Severity.SEVERE_WARNING);
              }
              else
              {
                ErrorLogSeverity severity =
                    ErrorLogSeverity.getByName(severityName);
                Severity severity =
                    Severity.parseString(severityName);
                if (severity == null)
                {
                  int msgID = MSGID_ERROR_LOGGER_INVALID_SEVERITY;
                  String msg = getMessage(msgID, severityName);
                  throw new ConfigException(msgID, msg);
                  Message msg =
                      WARN_ERROR_LOGGER_INVALID_SEVERITY.get(severityName);
                  throw new ConfigException(msg);
                } else
                {
                  severities.add(severity);
@@ -280,7 +277,7 @@
   */
  @Override()
  public boolean isConfigurationAcceptable(ErrorLogPublisherCfg configuration,
                                           List<String> unacceptableReasons)
                                           List<Message> unacceptableReasons)
  {
    FileBasedErrorLogPublisherCfg config =
         (FileBasedErrorLogPublisherCfg) configuration;
@@ -291,9 +288,9 @@
      RotationPolicy policy = DirectoryServer.getRotationPolicy(dn);
      if(policy == null)
      {
        int msgID = MSGID_CONFIG_LOGGER_INVALID_ROTATION_POLICY;
        String message = getMessage(msgID, dn.toString(),
                                    config.dn().toString());
        Message message = ERR_CONFIG_LOGGER_INVALID_ROTATION_POLICY.get(
                dn.toString(),
                config.dn().toString());
        unacceptableReasons.add(message);
        return false;
      }
@@ -303,9 +300,9 @@
      RetentionPolicy policy = DirectoryServer.getRetentionPolicy(dn);
      if(policy == null)
      {
        int msgID = MSGID_CONFIG_LOGGER_INVALID_RETENTION_POLICY;
        String message = getMessage(msgID, dn.toString(),
                                    config.dn().toString());
        Message message = WARN_CONFIG_LOGGER_INVALID_RETENTION_POLICY.get(
                dn.toString(),
                config.dn().toString());
        unacceptableReasons.add(message);
        return false;
      }
@@ -318,19 +315,18 @@
        int equalPos = overrideSeverity.indexOf('=');
        if (equalPos < 0)
        {
          int msgID = MSGID_ERROR_LOGGER_INVALID_OVERRIDE_SEVERITY;
          String msg = getMessage(msgID, overrideSeverity);
          Message msg = WARN_ERROR_LOGGER_INVALID_OVERRIDE_SEVERITY.get(
                  overrideSeverity);
          unacceptableReasons.add(msg);
          return false;
        } else
        {
          String categoryName = overrideSeverity.substring(0, equalPos);
          ErrorLogCategory category = ErrorLogCategory.getByName(categoryName);
          Category category = Category.valueOf(categoryName);
          if (category == null)
          {
            int msgID = MSGID_ERROR_LOGGER_INVALID_CATEGORY;
            String msg = getMessage(msgID, categoryName);
            Message msg = WARN_ERROR_LOGGER_INVALID_CATEGORY.get(categoryName);
            unacceptableReasons.add(msg);
            return false;
          } else
@@ -342,12 +338,12 @@
              String severityName = sevTokenizer.nextToken();
              if(!severityName.equalsIgnoreCase(LOG_SEVERITY_ALL))
              {
                ErrorLogSeverity severity =
                    ErrorLogSeverity.getByName(severityName);
                Severity severity =
                    Severity.parseString(severityName);
                if (severity == null)
                {
                  int msgID = MSGID_ERROR_LOGGER_INVALID_SEVERITY;
                  String msg = getMessage(msgID, severityName);
                  Message msg = WARN_ERROR_LOGGER_INVALID_SEVERITY.get(
                          severityName);
                  unacceptableReasons.add(msg);
                  return false;
                }
@@ -364,7 +360,7 @@
   * {@inheritDoc}
   */
  public boolean isConfigurationChangeAcceptable(
      FileBasedErrorLogPublisherCfg config, List<String> unacceptableReasons)
      FileBasedErrorLogPublisherCfg config, List<Message> unacceptableReasons)
  {
    // Make sure the permission is valid.
    try
@@ -385,9 +381,9 @@
    }
    catch(Exception e)
    {
      int msgID = MSGID_CONFIG_LOGGING_CANNOT_CREATE_WRITER;
      String message = getMessage(msgID, config.dn().toString(),
                                  stackTraceToSingleLineString(e));
      Message message = ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
              config.dn().toString(),
              stackTraceToSingleLineString(e));
      unacceptableReasons.add(message);
      return false;
    }
@@ -404,34 +400,34 @@
    // Default result code.
    ResultCode resultCode = ResultCode.SUCCESS;
    boolean adminActionRequired = false;
    ArrayList<String> messages = new ArrayList<String>();
    ArrayList<Message> messages = new ArrayList<Message>();
    Set<ErrorLogPublisherCfgDefn.DefaultSeverity> defSevs =
        config.getDefaultSeverity();
    defaultSeverities.clear();
    if(defSevs.isEmpty())
    {
      defaultSeverities.add(ErrorLogSeverity.FATAL_ERROR);
      defaultSeverities.add(ErrorLogSeverity.SEVERE_ERROR);
      defaultSeverities.add(ErrorLogSeverity.SEVERE_WARNING);
      defaultSeverities.add(Severity.FATAL_ERROR);
      defaultSeverities.add(Severity.SEVERE_ERROR);
      defaultSeverities.add(Severity.SEVERE_WARNING);
    } else
    {
      for(ErrorLogPublisherCfgDefn.DefaultSeverity defSev : defSevs)
      {
        if(defSev.toString().equalsIgnoreCase(LOG_SEVERITY_ALL))
        {
          defaultSeverities.add(ErrorLogSeverity.FATAL_ERROR);
          defaultSeverities.add(ErrorLogSeverity.INFORMATIONAL);
          defaultSeverities.add(ErrorLogSeverity.MILD_ERROR);
          defaultSeverities.add(ErrorLogSeverity.MILD_WARNING);
          defaultSeverities.add(ErrorLogSeverity.NOTICE);
          defaultSeverities.add(ErrorLogSeverity.SEVERE_ERROR);
          defaultSeverities.add(ErrorLogSeverity.SEVERE_WARNING);
          defaultSeverities.add(Severity.FATAL_ERROR);
          defaultSeverities.add(Severity.INFORMATION);
          defaultSeverities.add(Severity.MILD_ERROR);
          defaultSeverities.add(Severity.MILD_WARNING);
          defaultSeverities.add(Severity.NOTICE);
          defaultSeverities.add(Severity.SEVERE_ERROR);
          defaultSeverities.add(Severity.SEVERE_WARNING);
        }
        else
        {
          ErrorLogSeverity errorSeverity =
              ErrorLogSeverity.getByName(defSev.toString());
          Severity errorSeverity =
              Severity.parseString(defSev.name());
          if(errorSeverity != null)
          {
            defaultSeverities.add(errorSeverity);
@@ -448,24 +444,23 @@
        int equalPos = overrideSeverity.indexOf('=');
        if (equalPos < 0)
        {
          int msgID = MSGID_ERROR_LOGGER_INVALID_OVERRIDE_SEVERITY;
          String msg = getMessage(msgID, overrideSeverity);
          Message msg = WARN_ERROR_LOGGER_INVALID_OVERRIDE_SEVERITY.get(
                  overrideSeverity);
          resultCode = DirectoryServer.getServerErrorResultCode();
          messages.add(msg);
        } else
        {
          String categoryName = overrideSeverity.substring(0, equalPos);
          ErrorLogCategory category = ErrorLogCategory.getByName(categoryName);
          Category category = Category.valueOf(categoryName);
          if (category == null)
          {
            int msgID = MSGID_ERROR_LOGGER_INVALID_CATEGORY;
            String msg = getMessage(msgID, categoryName);
            Message msg = WARN_ERROR_LOGGER_INVALID_CATEGORY.get(categoryName);
            resultCode = DirectoryServer.getServerErrorResultCode();
            messages.add(msg);
          } else
          {
            HashSet<ErrorLogSeverity> severities =
                new HashSet<ErrorLogSeverity>();
            HashSet<Severity> severities =
                new HashSet<Severity>();
            StringTokenizer sevTokenizer =
              new StringTokenizer(overrideSeverity.substring(equalPos+1), ",");
            while (sevTokenizer.hasMoreElements())
@@ -473,22 +468,22 @@
              String severityName = sevTokenizer.nextToken();
              if(severityName.equalsIgnoreCase(LOG_SEVERITY_ALL))
              {
                severities.add(ErrorLogSeverity.FATAL_ERROR);
                severities.add(ErrorLogSeverity.INFORMATIONAL);
                severities.add(ErrorLogSeverity.MILD_ERROR);
                severities.add(ErrorLogSeverity.MILD_WARNING);
                severities.add(ErrorLogSeverity.NOTICE);
                severities.add(ErrorLogSeverity.SEVERE_ERROR);
                severities.add(ErrorLogSeverity.SEVERE_WARNING);
                severities.add(Severity.FATAL_ERROR);
                severities.add(Severity.INFORMATION);
                severities.add(Severity.MILD_ERROR);
                severities.add(Severity.MILD_WARNING);
                severities.add(Severity.NOTICE);
                severities.add(Severity.SEVERE_ERROR);
                severities.add(Severity.SEVERE_WARNING);
              }
              else
              {
                ErrorLogSeverity severity =
                    ErrorLogSeverity.getByName(severityName);
                Severity severity =
                    Severity.parseString(severityName);
                if (severity == null)
                {
                  int msgID = MSGID_ERROR_LOGGER_INVALID_SEVERITY;
                  String msg = getMessage(msgID, severityName);
                  Message msg = WARN_ERROR_LOGGER_INVALID_SEVERITY.get(
                          severityName);
                  resultCode = DirectoryServer.getServerErrorResultCode();
                  messages.add(msg);
                } else
@@ -549,9 +544,9 @@
          }
          else
          {
            int msgID = MSGID_CONFIG_LOGGER_INVALID_ROTATION_POLICY;
            String message = getMessage(msgID, dn.toString(),
                                        config.dn().toString());
            Message message = ERR_CONFIG_LOGGER_INVALID_ROTATION_POLICY.get(
                    dn.toString(),
                    config.dn().toString());
            resultCode = DirectoryServer.getServerErrorResultCode();
            messages.add(message);
          }
@@ -565,9 +560,9 @@
          }
          else
          {
            int msgID = MSGID_CONFIG_LOGGER_INVALID_RETENTION_POLICY;
            String message = getMessage(msgID, dn.toString(),
                                        config.dn().toString());
            Message message = WARN_CONFIG_LOGGER_INVALID_RETENTION_POLICY.get(
                    dn.toString(),
                    config.dn().toString());
            resultCode = DirectoryServer.getServerErrorResultCode();
            messages.add(message);
          }
@@ -605,9 +600,9 @@
    }
    catch(Exception e)
    {
      int msgID = MSGID_CONFIG_LOGGING_CANNOT_CREATE_WRITER;
      String message = getMessage(msgID, config.dn().toString(),
                                  stackTraceToSingleLineString(e));
      Message message = ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
              config.dn().toString(),
              stackTraceToSingleLineString(e));
      resultCode = DirectoryServer.getServerErrorResultCode();
      messages.add(message);
@@ -635,11 +630,12 @@
  /**
   * {@inheritDoc}
   */
  public void logError(ErrorLogCategory category,
                       ErrorLogSeverity severity, String message,
                       int errorID)
  public void logError(Message message)
  {
    HashSet<ErrorLogSeverity> severities = definedSeverities.get(category);
    Severity severity = message.getDescriptor().getSeverity();
    Category category = message.getDescriptor().getCategory();
    int msgId = message.getDescriptor().getId();
    HashSet<Severity> severities = definedSeverities.get(category);
    if(severities == null)
    {
      severities = defaultSeverities;
@@ -651,9 +647,9 @@
      StringBuilder sb = new StringBuilder();
      sb.append("[");
      sb.append(TimeThread.getLocalTime());
      sb.append("] category=").append(category.getCategoryName()).
          append(" severity=").append(severity.getSeverityName()).
          append(" msgID=").append(String.valueOf(errorID)).
      sb.append("] category=").append(category).
          append(" severity=").append(severity).
          append(" msgID=").append(msgId).
          append(" msg=").append(message);
      writer.writeRecord(sb.toString());