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) {
+
+       }
+
+}


Reply via email to