Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* contextual data serialization * variable resolution: on startup or on demand * JacksonJsonLayout is NOT the default anymore due to dependency on Log4j2 Configuration instance
- Loading branch information
Showing
16 changed files
with
1,323 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
89 changes: 89 additions & 0 deletions
89
...rch-core/src/main/java/org/appenders/log4j2/elasticsearch/JacksonHandlerInstantiator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
package org.appenders.log4j2.elasticsearch; | ||
|
||
/*- | ||
* #%L | ||
* log4j2-elasticsearch | ||
* %% | ||
* Copyright (C) 2019 Rafal Foltynski | ||
* %% | ||
* Licensed 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. | ||
* #L% | ||
*/ | ||
|
||
import com.fasterxml.jackson.databind.DeserializationConfig; | ||
import com.fasterxml.jackson.databind.JsonDeserializer; | ||
import com.fasterxml.jackson.databind.JsonSerializer; | ||
import com.fasterxml.jackson.databind.KeyDeserializer; | ||
import com.fasterxml.jackson.databind.SerializationConfig; | ||
import com.fasterxml.jackson.databind.cfg.HandlerInstantiator; | ||
import com.fasterxml.jackson.databind.cfg.MapperConfig; | ||
import com.fasterxml.jackson.databind.introspect.Annotated; | ||
import com.fasterxml.jackson.databind.jsontype.TypeIdResolver; | ||
import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder; | ||
|
||
public class JacksonHandlerInstantiator extends HandlerInstantiator { | ||
|
||
private final VirtualProperty[] virtualProperties; | ||
private final ValueResolver valueResolver; | ||
private VirtualPropertiesWriter instance; | ||
|
||
/** | ||
* @param virtualProperties properties to be appended | ||
* @param valueResolver used to resolve properties if {@link VirtualProperty#isDynamic()} is true | ||
*/ | ||
public JacksonHandlerInstantiator(VirtualProperty[] virtualProperties, ValueResolver valueResolver) { | ||
this.virtualProperties = virtualProperties; | ||
this.valueResolver = valueResolver; | ||
} | ||
|
||
@Override | ||
public JsonDeserializer<?> deserializerInstance(DeserializationConfig config, Annotated annotated, Class<?> deserClass) { | ||
return null; | ||
} | ||
|
||
@Override | ||
public KeyDeserializer keyDeserializerInstance(DeserializationConfig config, Annotated annotated, Class<?> keyDeserClass) { | ||
return null; | ||
} | ||
|
||
@Override | ||
public JsonSerializer<?> serializerInstance(SerializationConfig config, Annotated annotated, Class<?> serClass) { | ||
return null; | ||
} | ||
|
||
@Override | ||
public TypeResolverBuilder<?> typeResolverBuilderInstance(MapperConfig<?> config, Annotated annotated, Class<?> builderClass) { | ||
return null; | ||
} | ||
|
||
@Override | ||
public TypeIdResolver typeIdResolverInstance(MapperConfig<?> config, Annotated annotated, Class<?> resolverClass) { | ||
return null; | ||
} | ||
|
||
/** | ||
* Allows to inject {@link VirtualPropertiesWriter} in order to resolve and write {@link VirtualProperty}-ies | ||
* | ||
* @return Shared {@link VirtualPropertiesWriter} | ||
*/ | ||
@Override | ||
public VirtualPropertiesWriter virtualPropertyWriterInstance(MapperConfig<?> config, Class<?> implClass) { | ||
if (instance == null) { | ||
instance = new VirtualPropertiesWriter( | ||
virtualProperties, | ||
valueResolver); | ||
} | ||
return instance; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
52 changes: 52 additions & 0 deletions
52
log4j2-elasticsearch-core/src/main/java/org/appenders/log4j2/elasticsearch/Log4j2Lookup.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
package org.appenders.log4j2.elasticsearch; | ||
|
||
/*- | ||
* #%L | ||
* log4j2-elasticsearch | ||
* %% | ||
* Copyright (C) 2019 Rafal Foltynski | ||
* %% | ||
* Licensed 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. | ||
* #L% | ||
*/ | ||
|
||
import org.apache.logging.log4j.core.lookup.StrSubstitutor; | ||
|
||
public class Log4j2Lookup implements ValueResolver { | ||
|
||
private final StrSubstitutor strSubstitutor; | ||
|
||
public Log4j2Lookup(StrSubstitutor strSubstitutor) { | ||
this.strSubstitutor = strSubstitutor; | ||
} | ||
|
||
/** | ||
* Resolves given {@link VirtualProperty} if {@link VirtualProperty#isDynamic()} is true | ||
* | ||
* @param property property to resolve | ||
* @return resolved value | ||
*/ | ||
@Override | ||
public String resolve(VirtualProperty property) { | ||
if (property.isDynamic()) { | ||
return resolve(property.getValue()); | ||
} | ||
return property.getValue(); | ||
} | ||
|
||
@Override | ||
public String resolve(String unresolved) { | ||
return strSubstitutor.replace(unresolved); | ||
} | ||
|
||
} |
29 changes: 29 additions & 0 deletions
29
...j2-elasticsearch-core/src/main/java/org/appenders/log4j2/elasticsearch/ValueResolver.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package org.appenders.log4j2.elasticsearch; | ||
|
||
/*- | ||
* #%L | ||
* log4j2-elasticsearch | ||
* %% | ||
* Copyright (C) 2019 Rafal Foltynski | ||
* %% | ||
* Licensed 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. | ||
* #L% | ||
*/ | ||
|
||
public interface ValueResolver { | ||
|
||
String resolve(String unresolved); | ||
|
||
String resolve(VirtualProperty property); | ||
|
||
} |
Oops, something went wrong.