Comments (2)
Changing the semantics of staticFields
as described would not only introduce a breaking change, it also seems pretty fragile as another separator (comma) must not be used in keys/values – especially if the fields are dynamic to some degree as you would pass them via environment variable.
Since version 4 you could easily register a custom GelfFieldMapper
that adds additional fields as needed.
package mypackage;
import java.util.function.BiConsumer;
import ch.qos.logback.classic.spi.ILoggingEvent;
import de.siegmar.logbackgelf.GelfFieldMapper;
public class CustomFieldMapper implements GelfFieldMapper<String> {
@Override
public void mapField(ILoggingEvent event, BiConsumer<String, String> valueHandler) {
valueHandler.accept("MY_KEY", "MY_VALUE");
valueHandler.accept("MY_KEY2", "MY_VALUE2");
}
}
<appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
<graylogHost>localhost</graylogHost>
<graylogPort>12201</graylogPort>
<encoder class="de.siegmar.logbackgelf.GelfEncoder">
<fieldMapper class="mypackage.CustomFieldMapper"/>
</encoder>
</appender>
Probably this feature is currently somewhat undocumented. :-/
from logback-gelf.
Thanks for pointing me in that direction. I was able to satisfy my use-case with the following class:
package mypackage;
import ch.qos.logback.classic.spi.ILoggingEvent;
import de.siegmar.logbackgelf.GelfFieldMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.function.BiConsumer;
public class GelfEnvVarsFieldMapper implements GelfFieldMapper<String> {
private final Logger logger = LoggerFactory.getLogger(GelfEnvVarsFieldMapper.class);
@Override
public void mapField(ILoggingEvent iLoggingEvent, BiConsumer<String, String> biConsumer) {
System.getenv().forEach((key,value) -> {
if(key.toUpperCase().startsWith("GELF_")) {
biConsumer.accept(key, value);
}
});
}
}
from logback-gelf.
Related Issues (20)
- All newlines in short messages are replaced with whitespaces HOT 10
- GelfHttpAppender does not set Uri HOT 1
- Markers are sent with Brackets. Like "[MARKER_NAME]" instead of "MARKER_NAME" without brackets HOT 1
- Configurable max value length for key-value pairs and MDC HOT 6
- It reports only Sl4j logs not console logs HOT 3
- Macbook GelfUdpAppender garbled HOT 2
- GZIP Compression with GelfUdpAppender HOT 1
- Update logback-classic to 1.2.8 HOT 3
- Logback-classic release 1.2.9
- tcp configuration error HOT 3
- Add ability to log thread ID in addition to thread name HOT 2
- Mutual TLS fails, HOT 1
- Add another method for adding static field to GelfEncoder HOT 2
- GelfMessage should fail on host = "", shortmessage="" HOT 4
- Add ability to log formatted time HOT 1
- Add use of structured arguments HOT 1
- JSON Encoding Performance HOT 1
- Several minor improvements HOT 1
- Faster MessageIdSupplier with less object allocation, error-prone HOT 1
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 logback-gelf.