Author: reto
Date: Tue Dec 28 15:57:22 2010
New Revision: 1053376
URL: http://svn.apache.org/viewvc?rev=1053376&view=rev
Log:
CLEREZZA-205: support for configuring logging
Added:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/
(with props)
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/pom.xml
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/main/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/main/scala/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/main/scala/org/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/main/scala/org/apache/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/main/scala/org/apache/clerezza/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/main/scala/org/apache/clerezza/platform/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/main/scala/org/apache/clerezza/platform/logging/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/main/scala/org/apache/clerezza/platform/logging/initializer/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/main/scala/org/apache/clerezza/platform/logging/initializer/Activator.scala
Propchange:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Dec 28 15:57:22 2010
@@ -0,0 +1 @@
+target
Added:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/pom.xml?rev=1053376&view=auto
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/pom.xml
(added)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/pom.xml
Tue Dec 28 15:57:22 2010
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.clerezza</groupId>
+
<artifactId>org.apache.clerezza.platform.logging.parent</artifactId>
+ <version>0.1-incubating-SNAPSHOT</version>
+ </parent>
+ <groupId>org.apache.clerezza</groupId>
+
<artifactId>org.apache.clerezza.platform.logging.initializer</artifactId>
+ <version>0.1-incubating-SNAPSHOT</version>
+ <packaging>bundle</packaging>
+ <name>Clerezza - Platform Logging Initializer</name>
+ <description>
+ Configure logging for the Clerezza Platform Initializer
+ </description>
+ <dependencies>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.scala-lang</groupId>
+ <artifactId>scala-library</artifactId>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+
<Bundle-Activator>org.apache.clerezza.platform.logging.initializer.Activator</Bundle-Activator>
+
<Private-Package>org.apache.clerezza.platform.logging.initializer</Private-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.scala-tools</groupId>
+ <artifactId>maven-scala-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/main/scala/org/apache/clerezza/platform/logging/initializer/Activator.scala
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/main/scala/org/apache/clerezza/platform/logging/initializer/Activator.scala?rev=1053376&view=auto
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/main/scala/org/apache/clerezza/platform/logging/initializer/Activator.scala
(added)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.logging/initializer/src/main/scala/org/apache/clerezza/platform/logging/initializer/Activator.scala
Tue Dec 28 15:57:22 2010
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.clerezza.platform.logging.initializer;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.framework.BundleActivator
+
+class Activator extends BundleActivator {
+
+ private val configurationAdminClassName =
classOf[ConfigurationAdmin].getName
+
+ def start(context: BundleContext) {
+ import scala.collection.JavaConversions._
+ val paxLoggingLocation: String = context.getBundles().
+ find(bundle =>
bundle.getSymbolicName().equals("org.ops4j.pax.logging.pax-logging-service"))
match {
+ case Some(b) => b.getLocation();
+ case _ => throw new
RuntimeException("org.ops4j.pax.logging.pax-logging-service not found")
+ }
+ val serviceReference =
context.getServiceReference(configurationAdminClassName);
+ def configureIfUnconfigured(serviceReference: ServiceReference)
{
+ val configurationAdmin =
context.getService(serviceReference).asInstanceOf[ConfigurationAdmin]
+ val config: Configuration =
configurationAdmin.getConfiguration(
+ "org.ops4j.pax.logging", paxLoggingLocation);
+ if (config.getProperties() == null) {
+ val props: Dictionary[String, String] = new
Hashtable[String, String]();
+ props.put("log4j.rootLogger", "DEBUG, R,
stdout");
+ //props.put("log4j.logger.CONSOLE","INHERIT,
stdout");
+ //props.put("log4j.additivity.CONSOLE","false");
+ props.put("log4j.appender.stdout",
"org.apache.log4j.ConsoleAppender");
+ props.put("log4j.appender.stdout.layout",
"org.apache.log4j.PatternLayout");
+ props.put("log4j.appender.stdout.Threshold",
"WARN");
+
+ // Pattern to output the caller's file name and
line number.
+
props.put("log4j.appender.stdout.layout.ConversionPattern", "%5p [%t] (%F:%L) -
%m%n");
+
+ props.put("log4j.appender.R",
"org.apache.log4j.RollingFileAppender");
+ props.put("log4j.appender.R.File",
"clerezza.log");
+
+ props.put("log4j.appender.R.MaxFileSize",
"100KB");
+ // Keep one backup file
+ props.put("log4j.appender.R.MaxBackupIndex",
"1");
+
+ props.put("log4j.appender.R.layout",
"org.apache.log4j.PatternLayout");
+
props.put("log4j.appender.R.layout.ConversionPattern", "%p %t %c - %m%n");
+
+ config.update(props);
+ }
+ }
+ if (serviceReference != null) {
+ configureIfUnconfigured(serviceReference);
+ } else {
+ val filter: String = "(objectclass=" +
configurationAdminClassName + ")";
+ context.addServiceListener(new ServiceListener{
+ def serviceChanged(e: ServiceEvent) {
+ if (e.getType ==
ServiceEvent.REGISTERED) {
+
configureIfUnconfigured(e.getServiceReference)
+ }
+ }
+ },filter)
+ }
+
+ }
+
+ def stop(context: BundleContext) {
+
+ }
+
+}