Comments (6)
At the moment there's no other way.
But I'm open to PRs if you'd like to add support for configurable modules. I can add a method to make this extension easier and pave the way for later improvements. Most probably sth like:
protected Builder configureModules(ObjectMapper)
called exactly where you suggested.
from log4j2-elasticsearch.
This means to have list of jackson module being registered just like how Mixins is registered.
So user will include the module in the class path (maven pom dependency), and register that in the log4j2.xml?
from log4j2-elasticsearch.
Yes, but rather more like virtual properties, not mixins. Mixins rely on loadClass
and I'm not a fan on clazz.newInstance()
here. Here, module instance should be ready to use once it's added to the builder via withJacksonModules(JacksonModule[])
.
It's all about creating proper skeleton for this. JacksonModule
interface maybe? JacksonModule.applyTo(ObjectMapper)
should ensure enough flexibility and extensibility with following philosophy in mind:
Want to add a module? You have to provide an implementation on your own, but in exchange you can then customize the mapper any way you want
Few more thoughts:
-
ExtendedLog4j2JsonModule
can be migrated as-is - let's just make sure that it's added to the default list and never replaced(!), because it sets up mixins required for serialization. Mixins can be overriden later withJacksonMixIn
, so having it set up like that is not an issue. -
JacksonAfterburnerModuleConfigurer
may have to be migrated at some point as well (afterburner
flag might be tricky though).AfterburnerModule
class MUST be loaded ONLY if flag is set totrue
. -
only concern is the config order. I guess that this one should work for a start:
- modules
- mixins
- virtual properties
from log4j2-elasticsearch.
Custom module support will be released in 1.5.
from log4j2-elasticsearch.
@haikal00 would you like to test the new functionality with a SNAPSHOT version to verify that it works as you expected?
from log4j2-elasticsearch.
Released in 1.5.0.
Enjoy!
from log4j2-elasticsearch.
Related Issues (20)
- org.apache.logging.log4j.core.config.ConfigurationException: No layout provided for Elasticsearch appender HOT 8
- Supporting ecs-logging-java HOT 8
- Package naming conventions HOT 11
- How to pass the value from ThreadContext to ValueProperty? HOT 3
- Can not log to elastic using log4j2 <PatternLayout> HOT 11
- Support elasticsearch data_streams HOT 6
- Failed to Load StackTraceElementMixIn HOT 22
- InvalidTypeNameException on invalid mappingType in ES 5 HOT 8
- Adding custom properties, that change during processing HOT 4
- Log4j2 Zero-Day vulnerability (CVE-2021-44228) HOT 2
- Support OpenSearch 2.x and Elasticsearch 8.x HOT 9
- Unable to determine if index already exists HOT 1
- Support for ECSLayout for elasticsearch-ahc and / or elaticsearch-jest in combination with data streams HOT 10
- Is it possible to deseriailze JSON within the message into properties? HOT 2
- Run elastic search appender in specific environment HOT 2
- Logging-Cleaner ERROR Could not create plugin HOT 3
- How do I add mdc attributes? HOT 1
- Could not initialize ChronicleMapRetryFailoverPolicy HOT 2
- ServiceDiscovery ERROR HCServiceDiscovery: Unable to refresh addresses: Cannot invoke "org.appenders.log4j2.elasticsearch.hc.discovery.NodeInfo$PublishAddress.getPublishAddress()" HOT 1
- Using log4j2-elasticsearch-hc -> Does AsyncLogger still not support adding dynamic keyValue pairs in Jackson JSONLayout HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from log4j2-elasticsearch.