You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2015/11/04 16:15:01 UTC
svn commit: r1712566 - in
/sling/whiteboard/bdelacretaz/logback-gelf-appender: ./ src/ src/main/
src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/sling/ src/main/java/org/apache/sling/logback/
src/main/java/org/apach...
Author: bdelacretaz
Date: Wed Nov 4 15:14:56 2015
New Revision: 1712566
URL: http://svn.apache.org/viewvc?rev=1712566&view=rev
Log:
GELF appender for Logback, sends logs to Graylog. Work in progress
Added:
sling/whiteboard/bdelacretaz/logback-gelf-appender/ (with props)
sling/whiteboard/bdelacretaz/logback-gelf-appender/pom.xml
sling/whiteboard/bdelacretaz/logback-gelf-appender/src/
sling/whiteboard/bdelacretaz/logback-gelf-appender/src/main/
sling/whiteboard/bdelacretaz/logback-gelf-appender/src/main/java/
sling/whiteboard/bdelacretaz/logback-gelf-appender/src/main/java/org/
sling/whiteboard/bdelacretaz/logback-gelf-appender/src/main/java/org/apache/
sling/whiteboard/bdelacretaz/logback-gelf-appender/src/main/java/org/apache/sling/
sling/whiteboard/bdelacretaz/logback-gelf-appender/src/main/java/org/apache/sling/logback/
sling/whiteboard/bdelacretaz/logback-gelf-appender/src/main/java/org/apache/sling/logback/gelfappender/
sling/whiteboard/bdelacretaz/logback-gelf-appender/src/main/java/org/apache/sling/logback/gelfappender/GelfAppender.java
Propchange: sling/whiteboard/bdelacretaz/logback-gelf-appender/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Nov 4 15:14:56 2015
@@ -0,0 +1,14 @@
+target
+bin
+*.iml
+*.ipr
+*.iws
+.settings
+.project
+.classpath
+.externalToolBuilders
+maven-eclipse.xml
+
+
+
+
Added: sling/whiteboard/bdelacretaz/logback-gelf-appender/pom.xml
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/logback-gelf-appender/pom.xml?rev=1712566&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/logback-gelf-appender/pom.xml (added)
+++ sling/whiteboard/bdelacretaz/logback-gelf-appender/pom.xml Wed Nov 4 15:14:56 2015
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>sling</artifactId>
+ <version>25</version>
+ <relativePath/>
+ </parent>
+
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.logback.gelf.appender</artifactId>
+ <packaging>bundle</packaging>
+ <version>0.1.1-SNAPSHOT</version>
+
+ <name>Apache Sling Logback GELF Appender</name>
+ <inceptionYear>2015</inceptionYear>
+
+ <description>
+ A Logback appender for Sling that logs to a remote GELF server
+ </description>
+
+ <scm>
+ <connection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/logback-gelf-appender</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/logback-gelf-appender</developerConnection>
+ <url>https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/logback-gelf-appender</url>
+ </scm>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-scr-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Embed-Dependency>logback-gelf,gson</Embed-Dependency>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.scr.annotations</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.6.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>me.moocar</groupId>
+ <artifactId>logback-gelf</artifactId>
+ <version>0.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.3.1</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+</project>
Added: sling/whiteboard/bdelacretaz/logback-gelf-appender/src/main/java/org/apache/sling/logback/gelfappender/GelfAppender.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/logback-gelf-appender/src/main/java/org/apache/sling/logback/gelfappender/GelfAppender.java?rev=1712566&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/logback-gelf-appender/src/main/java/org/apache/sling/logback/gelfappender/GelfAppender.java (added)
+++ sling/whiteboard/bdelacretaz/logback-gelf-appender/src/main/java/org/apache/sling/logback/gelfappender/GelfAppender.java Wed Nov 4 15:14:56 2015
@@ -0,0 +1,119 @@
+/*
+ * 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.sling.logback.gelfappender;
+
+import java.util.Map;
+
+import me.moocar.logbackgelf.GZIPEncoder;
+import me.moocar.logbackgelf.GelfLayout;
+import me.moocar.logbackgelf.GelfUDPAppender;
+
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+
+import ch.qos.logback.classic.PatternLayout;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.Appender;
+import ch.qos.logback.core.AppenderBase;
+
+@Component
+@Service(value=Appender.class)
+@Property(name="loggers",value={"ROOT"})
+public class GelfAppender<E> extends AppenderBase<ILoggingEvent> {
+
+ private GelfUDPAppender<ILoggingEvent> wrappedAppender;
+
+ @Activate
+ public void activate(Map<String, Object> properties) {
+ // TODO still hacking this setup...
+ GelfUDPAppender<ILoggingEvent> g = new GelfUDPAppender<ILoggingEvent>();
+ g.setPort(12202);
+ g.setRemoteHost("graylog");
+ g.setContext(getContext());
+ wrappedAppender = g;
+ }
+
+ @Deactivate
+ public void deactivate() {
+ super.stop();
+ if(wrappedAppender != null) {
+ wrappedAppender.stop();
+ }
+ wrappedAppender = null;
+ }
+
+ private PatternLayout initNewPatternLayout(String pattern) {
+ PatternLayout layout = new PatternLayout();
+ layout.setPattern(pattern);
+ layout.setContext(this.getContext());
+ layout.start();
+ return layout;
+ }
+
+ @Override
+ public void start() {
+ super.start();
+ if(wrappedAppender == null) {
+ throw new IllegalStateException("WrappedAppender is null");
+ }
+
+ // TODO most of this should be configurable
+ // TODO is it correct to start those things here?
+ GZIPEncoder<ILoggingEvent> encoder = new GZIPEncoder<ILoggingEvent>();
+ encoder.setContext(getContext());
+
+ GelfLayout<ILoggingEvent> layout = new GelfLayout<ILoggingEvent>();
+ layout.setFullMessageLayout(initNewPatternLayout("%ex{short}%.100m"));
+ layout.setShortMessageLayout(initNewPatternLayout("%-5level [%thread]: %message%n"));
+ layout.setContext(getContext());
+ layout.start();
+
+ encoder.setLayout(layout);
+ encoder.start();
+
+ wrappedAppender.setContext(getContext());
+ wrappedAppender.setEncoder(encoder);
+ wrappedAppender.start();
+ }
+
+ @Override
+ public void stop() {
+ super.stop();
+ if(wrappedAppender == null) {
+ throw new IllegalStateException("WrappedAppender is null");
+ }
+ wrappedAppender.stop();
+ }
+
+ @Override
+ protected void append(ILoggingEvent event) {
+ if(wrappedAppender == null) {
+ throw new IllegalStateException("WrappedAppender is null");
+ }
+ wrappedAppender.doAppend(event);
+ }
+
+ @Override
+ public String getName() {
+ return getClass().getSimpleName();
+ }
+}
\ No newline at end of file