Skip to content

Commit 63cae1f

Browse files
committed
Added support for log4j2
1 parent 60f9750 commit 63cae1f

File tree

3 files changed

+228
-0
lines changed

3 files changed

+228
-0
lines changed

README.md

+8
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ ___
2525
<artifactId>aws-lambda-java-log4j</artifactId>
2626
<version>1.0.0</version>
2727
</dependency>
28+
<dependency>
29+
<groupId>com.amazonaws</groupId>
30+
<artifactId>aws-lambda-java-log4j2</artifactId>
31+
<version>1.0.0</version>
32+
</dependency>
2833
```
2934

3035
[Gradle](https://gradle.org)
@@ -33,6 +38,7 @@ ___
3338
'com.amazonaws:aws-lambda-java-core:1.1.0'
3439
'com.amazonaws:aws-lambda-java-events:1.3.0'
3540
'com.amazonaws:aws-lambda-java-log4j:1.0.0'
41+
'com.amazonaws:aws-lambda-java-log4j2:1.0.0'
3642
```
3743

3844
[Leiningen](http://leiningen.org) and [Boot](http://boot-clj.com)
@@ -41,6 +47,7 @@ ___
4147
[com.amazonaws/aws-lambda-java-core "1.1.0"]
4248
[com.amazonaws/aws-lambda-java-events "1.3.0"]
4349
[com.amazonaws/aws-lambda-java-log4j "1.0.0"]
50+
[com.amazonaws/aws-lambda-java-log4j2 "1.0.0"]
4451
```
4552

4653
[sbt](http://www.scala-sbt.org)
@@ -49,4 +56,5 @@ ___
4956
"com.amazonaws" % "aws-lambda-java-core" % "1.1.0"
5057
"com.amazonaws" % "aws-lambda-java-events" % "1.3.0"
5158
"com.amazonaws" % "aws-lambda-java-log4j" % "1.0.0"
59+
"com.amazonaws" % "aws-lambda-java-log4j2" % "1.0.0"
5260
```

aws-lambda-java-log4j2/pom.xml

+141
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
2+
<modelVersion>4.0.0</modelVersion>
3+
4+
<groupId>com.amazonaws</groupId>
5+
<artifactId>aws-lambda-java-log4j2</artifactId>
6+
<version>1.0.0</version>
7+
<packaging>jar</packaging>
8+
9+
<name>AWS Lambda Java Log4j 2.8 Libraries</name>
10+
<description>
11+
Support for using log4j 2.8 with AWS Lambda.
12+
</description>
13+
<url>https://aws.amazon.com/lambda/</url>
14+
<licenses>
15+
<license>
16+
<name>Apache License, Version 2.0</name>
17+
<url>https://aws.amazon.com/apache2.0</url>
18+
<distribution>repo</distribution>
19+
</license>
20+
</licenses>
21+
<scm>
22+
<url>https://github.com/aws/aws-lambda-java-libs.git</url>
23+
</scm>
24+
<developers>
25+
<developer>
26+
<name>AWS Lambda team</name>
27+
<organization>Amazon Web Services</organization>
28+
<organizationUrl>https://aws.amazon.com/</organizationUrl>
29+
</developer>
30+
</developers>
31+
<dependencies>
32+
<dependency>
33+
<groupId>com.amazonaws</groupId>
34+
<artifactId>aws-lambda-java-core</artifactId>
35+
<version>1.1.0</version>
36+
</dependency>
37+
<dependency>
38+
<groupId>org.apache.logging.log4j</groupId>
39+
<artifactId>log4j-core</artifactId>
40+
<version>2.8.2</version>
41+
</dependency>
42+
<dependency>
43+
<groupId>org.apache.logging.log4j</groupId>
44+
<artifactId>log4j-api</artifactId>
45+
<version>2.8.2</version>
46+
</dependency>
47+
</dependencies>
48+
<distributionManagement>
49+
<repository>
50+
<id>sonatype-nexus-staging</id>
51+
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
52+
</repository>
53+
</distributionManagement>
54+
55+
<profiles>
56+
<profile>
57+
<id>dev</id>
58+
<build>
59+
<plugins>
60+
<plugin>
61+
<groupId>org.apache.maven.plugins</groupId>
62+
<artifactId>maven-javadoc-plugin</artifactId>
63+
<version>2.9.1</version>
64+
<configuration>
65+
<additionalparam>-Xdoclint:none</additionalparam>
66+
</configuration>
67+
<executions>
68+
<execution>
69+
<id>attach-javadocs</id>
70+
<goals>
71+
<goal>jar</goal>
72+
</goals>
73+
</execution>
74+
</executions>
75+
</plugin>
76+
</plugins>
77+
</build>
78+
</profile>
79+
<profile>
80+
<id>release</id>
81+
<build>
82+
<plugins>
83+
<plugin>
84+
<groupId>org.apache.maven.plugins</groupId>
85+
<artifactId>maven-source-plugin</artifactId>
86+
<version>2.2.1</version>
87+
<executions>
88+
<execution>
89+
<id>attach-sources</id>
90+
<goals>
91+
<goal>jar-no-fork</goal>
92+
</goals>
93+
</execution>
94+
</executions>
95+
</plugin>
96+
<plugin>
97+
<groupId>org.apache.maven.plugins</groupId>
98+
<artifactId>maven-javadoc-plugin</artifactId>
99+
<version>2.9.1</version>
100+
<configuration>
101+
<additionalparam>-Xdoclint:none</additionalparam>
102+
</configuration>
103+
<executions>
104+
<execution>
105+
<id>attach-javadocs</id>
106+
<goals>
107+
<goal>jar</goal>
108+
</goals>
109+
</execution>
110+
</executions>
111+
</plugin>
112+
<plugin>
113+
<groupId>org.apache.maven.plugins</groupId>
114+
<artifactId>maven-gpg-plugin</artifactId>
115+
<version>1.5</version>
116+
<executions>
117+
<execution>
118+
<id>sign-artifacts</id>
119+
<phase>verify</phase>
120+
<goals>
121+
<goal>sign</goal>
122+
</goals>
123+
</execution>
124+
</executions>
125+
</plugin>
126+
<plugin>
127+
<groupId>org.sonatype.plugins</groupId>
128+
<artifactId>nexus-staging-maven-plugin</artifactId>
129+
<version>1.6.3</version>
130+
<extensions>true</extensions>
131+
<configuration>
132+
<serverId>sonatype-nexus-staging</serverId>
133+
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
134+
<autoReleaseAfterClose>false</autoReleaseAfterClose>
135+
</configuration>
136+
</plugin>
137+
</plugins>
138+
</build>
139+
</profile>
140+
</profiles>
141+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package com.amazonaws.services.lambda.runtime.log4j2;
2+
3+
import com.amazonaws.services.lambda.runtime.LambdaRuntimeInternal;
4+
5+
import org.apache.logging.log4j.core.Filter;
6+
import org.apache.logging.log4j.core.Layout;
7+
import org.apache.logging.log4j.core.LogEvent;
8+
import org.apache.logging.log4j.core.appender.AbstractAppender;
9+
import org.apache.logging.log4j.core.config.plugins.Plugin;
10+
import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
11+
12+
import java.io.IOException;
13+
import java.io.Serializable;
14+
15+
/**
16+
* Class to append log4j2 logs from AWS Lambda function to CloudWatch
17+
* Created by adsuresh on 6/9/17.
18+
*/
19+
@Plugin(name = LambdaAppender.PLUGIN_NAME, category = LambdaAppender.PLUGIN_CATEGORY,
20+
elementType = LambdaAppender.PLUGIN_TYPE, printObject = true)
21+
public class LambdaAppender extends AbstractAppender {
22+
23+
public static final String PLUGIN_NAME = "Lambda";
24+
public static final String PLUGIN_CATEGORY = "Core";
25+
public static final String PLUGIN_TYPE = "appender";
26+
27+
/**
28+
* Builder class that follows log4j2 plugin convention
29+
* @param <B> Generic Builder class
30+
*/
31+
public static class Builder<B extends Builder<B>> extends AbstractAppender.Builder<B>
32+
implements org.apache.logging.log4j.core.util.Builder<LambdaAppender> {
33+
34+
/**
35+
* creates a new LambdaAppender
36+
* @return a new LambdaAppender
37+
*/
38+
public LambdaAppender build() {
39+
return new LambdaAppender(super.getName(), super.getFilter(), super.getOrCreateLayout(),
40+
super.isIgnoreExceptions());
41+
}
42+
}
43+
44+
/**
45+
* Method used by log4j2 to access this appender
46+
* @param <B> Generic Builder class
47+
* @return LambdaAppender Builder
48+
*/
49+
@PluginBuilderFactory
50+
public static <B extends Builder<B>> B newBuilder() {
51+
return new Builder<B>().asBuilder();
52+
}
53+
54+
/**
55+
* Constructor method following AbstractAppender convention
56+
* @param name name of appender
57+
* @param filter filter specified in xml
58+
* @param layout layout specified in xml
59+
* @param ignoreExceptions whether to show exceptions or not specified in xml
60+
*/
61+
private LambdaAppender(String name, Filter filter, Layout<? extends Serializable> layout, boolean ignoreExceptions) {
62+
super(name, filter, layout, ignoreExceptions);
63+
LambdaRuntimeInternal.setUseLog4jAppender(true);
64+
}
65+
66+
/**
67+
* Append log event to System.out
68+
* @param event log4j event
69+
*/
70+
public void append(LogEvent event) {
71+
try {
72+
System.out.write(super.getLayout().toByteArray(event));
73+
System.out.flush();
74+
System.out.print(System.lineSeparator());
75+
} catch (IOException e) {
76+
e.printStackTrace();
77+
}
78+
}
79+
}

0 commit comments

Comments
 (0)