Exemplo n.º 1
0
 /**
  * Gets an SLD resource for the given style.
  *
  * @param style
  * @return
  */
 private Resource getStyleResource(StyleInfo style) {
   String[] prefix = new String[0];
   if (style.getWorkspace() != null) {
     prefix = new String[] {"workspaces", style.getWorkspace().getName()};
   }
   String fileName = style.getFilename();
   String[] pathParts = (String[]) ArrayUtils.addAll(prefix, new String[] {"styles", fileName});
   String path = Paths.path(pathParts);
   return loader.get(path);
 }
Exemplo n.º 2
0
  public static void initLogging(
      GeoServerResourceLoader resourceLoader,
      String configFileName,
      boolean suppressStdOutLogging,
      String logFileName)
      throws Exception {
    // to initialize logging we need to do a couple of things:
    // 1)  Figure out whether the user has 'overridden' some configuration settings
    // in the logging system (not using log4j in commons-logging.properties or perhaps
    // has set up their own 'custom' log4j.properties file.
    // 2)  If they *have*, then we don't worry about configuring logging
    // 3)  If they haven't, then we configure logging to use the log4j config file
    // specified, and remove console appenders if the suppressstdoutlogging is true.
    LoggingInitializer.LOGGER.fine("CONFIGURING GEOSERVER LOGGING -------------------------");

    if (configFileName == null) {
      configFileName = "DEFAULT_LOGGING.properties";
      LoggingInitializer.LOGGER.warning(
          "No log4jConfigFile defined in services.xml:  using 'DEFAULT_LOGGING.properties'");
    }
    Resource resource = resourceLoader.get(Paths.path("logs", configFileName));
    if (resource == null || resource.getType() == Type.UNDEFINED) {
      // hmm, well, we don't have a log4j config file and this could be due to the fact
      // that this is a data-dir upgrade.  We can count on the DEFAULT_LOGGING.properties file
      // being present on the classpath, so we'll upgrade their data_dir and then use the
      // default DEFAULT_LOGGING.properties configuration.
      LoggingInitializer.LOGGER.warning(
          "log4jConfigFile '"
              + configFileName
              + "' couldn't be found in the data dir, so GeoServer will "
              + "install the various logging config file into the data dir, and then try to find it again.");

      Resource logs = resourceLoader.get("logs");
      File lcdir = logs.dir();

      // now we copy in the various logging config files from the base repo location on the
      // classpath
      final String[] lcfiles =
          new String[] {
            "DEFAULT_LOGGING.properties",
            "GEOSERVER_DEVELOPER_LOGGING.properties",
            "GEOTOOLS_DEVELOPER_LOGGING.properties",
            "PRODUCTION_LOGGING.properties",
            "QUIET_LOGGING.properties",
            "TEST_LOGGING.properties",
            "VERBOSE_LOGGING.properties"
          };

      for (int i = 0; i < lcfiles.length; i++) {
        File target = new File(lcdir.getAbsolutePath(), lcfiles[i]);
        if (!target.exists()) {
          resourceLoader.copyFromClassPath(lcfiles[i], target);
        }
      }

      // ok, the possibly-new 'logs' directory is in-place, with all the various configs there.
      // Is the originally configured log4jconfigfile there now?
      if (resource.getType() != Type.RESOURCE) {
        LoggingInitializer.LOGGER.warning(
            "Still couldn't find log4jConfigFile '"
                + configFileName
                + "'.  Using DEFAULT_LOGGING.properties instead.");
      }

      resource = resourceLoader.get(Paths.path("logs", "DEFAULT_LOGGING.properties"));
    }

    if (resource == null || resource.getType() != Type.RESOURCE) {
      throw new ConfigurationException(
          "Unable to load logging configuration '"
              + configFileName
              + "'.  In addition, an attempt "
              + "was made to create the 'logs' directory in your data dir, and to use the DEFAULT_LOGGING configuration, but"
              + "this failed as well.  Is your data dir writeable?");
    }

    // reconfiguring log4j logger levels by resetting and loading a new set of configuration
    // properties
    InputStream loggingConfigStream = resource.in();
    if (loggingConfigStream == null) {
      LoggingInitializer.LOGGER.warning("Couldn't open Log4J configuration file '" + resource);
      return;
    } else {
      LoggingInitializer.LOGGER.fine(
          "GeoServer logging profile '" + resource.name() + "' enabled.");
    }

    configureGeoServerLogging(
        resourceLoader, loggingConfigStream, suppressStdOutLogging, false, logFileName);
  }