google / google/flogger

Support change the context prefix and suffix format of KeyValueFormatter

Open
#275 0 comments 0 reactions 1 assignee Claimed by @cgdecker View on GitHub
P3 type=enhancement
Dominant language
Java
Stars
1.5k
Forks
133
Avg merge
6m
Merged PRs (30d)
7

Description

Hi, Flogger Team.
I like Flogger very much, but I would like to see one improvement.
Why not allow the `KeyValueFormatter` prefix and suffix to be set with `LogData.getMetaData ()` instead of constants?
I find it very difficult to use because I can't change the format of `[CONTEXT ~]`.
It is possible to create own `KeyValueFormatter` by extending `AbstractBackend` and `AbstractLogRecord`,
but I would like a more convenient way to change only the prefix and suffix.

For example, like the following.

```java
// AbstractRecord.java
protected LogMessageFormatter getLogMessageFormatter() {
return SimpleMessageFormatter.getDefaultFormatter(data.getMetadata());
}

// SimpleMessageFormatter.java
public static LogMessageFormatter getDefaultFormatter(Metadata metadata) {
if (metadata == null
|| metadata.equals(Metadata.empty())
|| metadata.findValue(LogContext.Key.KVF_PREFIX) == null
|| metadata.findValue(LogContext.Key.KVF_SUFFIX) == null) {
return DEFAULT_FORMATTER;
}
return newFormatter(DEFAULT_KEYS_TO_IGNORE,
metadata.findValue(LogContext.Key.KVF_PREFIX),
metadata.findValue(LogContext.Key.KVF_SUFFIX));
}

// ExtendedFluentLogger.java
...
/** Logging context implementing the fully specified API for this logger. */
// VisibleForTesting
final class Context extends LogContext implements Api {
private Context(Level level, boolean isForced) {
super(level, isForced);
addMetadata(Key.KVF_PREFIX, "MyPrefix");
addMetadata(Key.KVF_SUFFIX, "MySuffix");
}
```

Related: [#60](https://github.com/google/flogger/issues/60)

Thanks.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.