Skip to content

Log API Improvements #974

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 6 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 7 additions & 8 deletions common/src/main/java/com/genexus/diagnostics/LogLevel.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@

public class LogLevel {

static final int OFF = 0;
static final int TRACE = 1;
static final int DEBUG = 5;
static final int INFO = 10;
static final int WARNING = 15;
static final int ERROR = 20;
static final int FATAL = 30;

public static final int OFF = 0;
public static final int TRACE = 1;
public static final int DEBUG = 5;
public static final int INFO = 10;
public static final int WARNING = 15;
public static final int ERROR = 20;
public static final int FATAL = 30;

}
47 changes: 47 additions & 0 deletions common/src/main/java/com/genexus/diagnostics/UserLog.java
Original file line number Diff line number Diff line change
Expand Up @@ -120,4 +120,51 @@ public static void debug(String message, String topic) {
public static void debug(String message, String topic, Throwable ex) {
getLogger(topic).debug(message, ex);
}

public static void setContext(String key, Object value) {
// Topic is ignored, also if you put something
getLogger("$").setContext(key, value);
}

public static void write(String message, String topic, int logLevel, Object data, boolean stackTrace) {
getLogger(topic).write(message, logLevel, data, stackTrace);
}

public static void write(String message, String topic, int logLevel, Object data) {
getLogger(topic).write(message, logLevel, data, false);
}

public static boolean isDebugEnabled() {
return getLogger().isDebugEnabled();
}

public static boolean isErrorEnabled() {
return getLogger().isErrorEnabled();
}

public static boolean isFatalEnabled() {
return getLogger().isFatalEnabled();
}

public static boolean isInfoEnabled() {
return getLogger().isInfoEnabled();
}

public static boolean isWarnEnabled() {
return getLogger().isWarnEnabled();
}

public static boolean isTraceEnabled() {
return getLogger().isTraceEnabled();
}

public static boolean isEnabled(int logLevel) {
return getLogger().isEnabled(logLevel);
}

public static boolean isEnabled(int logLevel, String topic) {
return getLogger(topic).isEnabled(logLevel);
}


}
17 changes: 16 additions & 1 deletion common/src/main/java/com/genexus/diagnostics/core/ILogger.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,5 +65,20 @@ public interface ILogger {
* msg); } }
*/


void setContext(String key, Object value);

void write(String message, int logLevel, Object data, boolean stackTrace);

boolean isFatalEnabled();

boolean isWarnEnabled();

boolean isInfoEnabled();

boolean isTraceEnabled();

boolean isEnabled(int logLevel);

//boolean isEnabled(int logLevel, String topic);

}
20 changes: 18 additions & 2 deletions wrappercommon/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,24 @@
<groupId>org.apache.ws.security</groupId>
<artifactId>wss4j</artifactId>
<version>1.6.19</version>
</dependency>
</dependencies>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>com.genexus</groupId>
<artifactId>gxclassR</artifactId>
<version>104.6-trunk.20240524121701-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-layout-template-json</artifactId>
<version>2.24.3</version>
</dependency>
</dependencies>

<build>
<finalName>gxwrappercommon</finalName>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{
"@timestamp": {
"$resolver": "timestamp",
"pattern": {
"format": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
"timeZone": "UTC"
}
},
"ecs.version": "1.2.0",
"log.level": {
"$resolver": "level",
"field": "name"
},
"message": {
"$resolver": "customMessage",
"stringified": true
},
"data": {
"$resolver": "map",
"key": "data"
},
"process.thread.name": {
"$resolver": "thread",
"field": "name"
},
"log.logger": {
"$resolver": "logger",
"field": "name"
},
"tags": {
"$resolver": "ndc"
},
"error.type": {
"$resolver": "exception",
"field": "className"
},
"error.message": {
"$resolver": "exception",
"field": "message"
},
"error.stack_trace": {
"$resolver": "exception",
"field": "stackTrace",
"stackTrace": {
"stringified": true
}
},
"context": {
"$resolver": "mdc",
"field": "context",
"stringified": false
},
"stackTrace": {
"$resolver": "map",
"key": "stackTrace"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.genexus.diagnostics.core.provider;

import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
import org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext;
import org.apache.logging.log4j.layout.template.json.resolver.EventResolverFactory;
import org.apache.logging.log4j.layout.template.json.resolver.TemplateResolverConfig;
import org.apache.logging.log4j.layout.template.json.resolver.TemplateResolverFactory;


@Plugin(name = "CustomMessageFactory", category = TemplateResolverFactory.CATEGORY)
public final class CustomMessageFactory implements EventResolverFactory {
private static final CustomMessageFactory INSTANCE = new CustomMessageFactory();

@PluginFactory
public static CustomMessageFactory getInstance() {
return INSTANCE;
}

@Override
public String getName() {
return CustomMessageResolver.getName();
}

@Override
public CustomMessageResolver create(EventResolverContext context, TemplateResolverConfig config) {
return new CustomMessageResolver(config);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.genexus.diagnostics.core.provider;

import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.layout.template.json.resolver.EventResolver;
import org.apache.logging.log4j.layout.template.json.resolver.TemplateResolverConfig;
import org.apache.logging.log4j.layout.template.json.util.JsonWriter;
import org.apache.logging.log4j.message.MapMessage;
import org.apache.logging.log4j.message.Message;


public class CustomMessageResolver implements EventResolver {
private static final String RESOLVER_NAME = "customMessage";

CustomMessageResolver(TemplateResolverConfig config) {
}

static String getName() {
return RESOLVER_NAME;
}

@Override
public void resolve(LogEvent logEvent, JsonWriter jsonWriter) {
Message message = logEvent.getMessage();
if (message instanceof MapMessage) {
MapMessage<?, ?> mapMessage = (MapMessage<?, ?>) message;
Object msgValue = mapMessage.get("message");
if (msgValue != null) {
jsonWriter.writeString(msgValue.toString());
return;
}
}
// fallback
jsonWriter.writeString(message.getFormattedMessage());
}
}

Loading
Loading