Skip to content

Commit

Permalink
add log4j2 adaptor
Browse files Browse the repository at this point in the history
  • Loading branch information
kevin-zhao-servian committed Jul 23, 2019
1 parent 5a1cc95 commit a2d2487
Show file tree
Hide file tree
Showing 7 changed files with 206 additions and 7 deletions.
7 changes: 6 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ plugins {
apply plugin: 'com.bmuschko.nexus'

group 'io.github.kev1nst'
version '1.0.2'
version '1.0.3'

sourceCompatibility = 1.8

Expand All @@ -27,6 +27,11 @@ repositories {
dependencies {
compile group: 'org.nutz', name: 'nutz', version: '1.r.67'
testCompile group: 'junit', name: 'junit', version: '4.12'
compileOnly group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.1'
compileOnly group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.1'
testCompile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.1'
testCompile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.1'

}

nexusStaging {
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/io/github/kev1nst/jenkins/Jenkins.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,13 @@
* @since 20/07/2019
*/
public class Jenkins {
static Log LOG = Logs.get();

private static final String UTF_8 = "utf-8";
private String url;
private Header header;
private int timeout = 10000;
Log LOG= Logs.get();

private Jenkins(String url, String account, String creds) {
auth(url, account, creds);
}
Expand Down
172 changes: 172 additions & 0 deletions src/main/java/io/github/kev1nst/jenkins/common/Log4j2Adapter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
package io.github.kev1nst.jenkins.common;

/**
* @author kevinzhao
* @since 23/07/2019
*/

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.nutz.log.Log;
import org.nutz.log.LogAdapter;
import org.nutz.log.impl.AbstractLog;
import org.nutz.plugin.Plugin;

public class Log4j2Adapter implements LogAdapter, Plugin {

@Override
public boolean canWork() {
try {
org.apache.logging.log4j.Logger.class.getName();
return true;
}
catch (Throwable e) {}
return false;
}

@Override
public Log getLogger(String className) {
return new Log4j2Adapter.Log4JLogger(className);
}

static class Log4JLogger extends AbstractLog {

public static final String SUPER_FQCN = AbstractLog.class.getName();
public static final String SELF_FQCN = Log4j2Adapter.class.getName();

private Logger logger;

private static boolean hasTrace;

static {
try {
Level.class.getDeclaredField("TRACE");
hasTrace = true;
}
catch (Throwable e) {}
}

Log4JLogger(String className) {
logger = LogManager.getLogger(className);

isFatalEnabled = logger.isFatalEnabled();
isErrorEnabled = logger.isErrorEnabled();
isWarnEnabled = logger.isWarnEnabled();
isInfoEnabled = logger.isInfoEnabled();
isDebugEnabled = logger.isDebugEnabled();
if (hasTrace){
isTraceEnabled = logger.isTraceEnabled();
}

}

@Override
public void debug(Object message, Throwable t) {
if (isDebugEnabled()) {
logger.debug(message,t);
}
}

@Override
public void error(Object message, Throwable t) {
if (isErrorEnabled()) {
logger.error(message, t);
}

}

@Override
public void fatal(Object message, Throwable t) {
if (isFatalEnabled()) {
logger.fatal(message, t);
}
}

@Override
public void info(Object message, Throwable t) {
if (isInfoEnabled()) {
logger.info(message, t);
}
}

@Override
public void trace(Object message, Throwable t) {
if (isTraceEnabled()) {
logger.trace( message, t);
} else if ((!hasTrace) && isDebugEnabled()) {
logger.debug(message, t);
}
}

@Override
public void warn(Object message, Throwable t) {
if (isWarnEnabled()) {
logger.warn(message, t);
}
}

@Override
protected void log(int level, Object message, Throwable tx) {
switch (level) {
case LEVEL_FATAL:
fatal(message,tx);
break;
case LEVEL_ERROR:
error(message,tx);
break;
case LEVEL_WARN:
warn(message,tx);
break;
case LEVEL_INFO:
info(message,tx);
break;
case LEVEL_DEBUG:
debug(message,tx);
break;
case LEVEL_TRACE:
if (hasTrace) {
logger.trace(message, tx);
} else {
logger.debug(message, tx);
}
break;
default:
break;
}
}

@Override
public boolean isDebugEnabled() {
return logger.isDebugEnabled();
}

@Override
public boolean isErrorEnabled() {
return logger.isErrorEnabled();
}

@Override
public boolean isFatalEnabled() {
return logger.isFatalEnabled();
}

@Override
public boolean isInfoEnabled() {
return logger.isInfoEnabled();
}

@Override
public boolean isTraceEnabled() {
if (!hasTrace) {
return logger.isDebugEnabled();
}
return logger.isTraceEnabled();
}

@Override
public boolean isWarnEnabled() {
return logger.isWarnEnabled();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public BuildStatus await(int timeout, JobProgressHandler jobProgressHandler) {
* @return the build status obj
*/
public BuildStatus await(int timeout) {
JobProgressHandler jobProgressHandler = new DefaultJobProgressHandler(LOG);
JobProgressHandler jobProgressHandler = new DefaultJobProgressHandler();
return await(timeout, jobProgressHandler);
}
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,24 @@
import io.github.kev1nst.jenkins.job.po.BuildStatus;
import io.github.kev1nst.jenkins.job.po.QueueItem;
import org.nutz.log.Log;
import org.nutz.log.Logs;

/**
* the default job progress adapter to extend with
* @author kevinzhao
* @since 20/07/2019
*/

public class DefaultJobProgressHandler implements JobProgressHandler {
Log LOG;
Log LOG= Logs.get();

@Override
public void onExecute(QueueItem item) {

}

public DefaultJobProgressHandler(Log LOG) {
this.LOG = LOG;
public DefaultJobProgressHandler() {

}

@Override
Expand Down
7 changes: 6 additions & 1 deletion src/test/java/io/github/kev1nst/jenkins/Demo.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
package io.github.kev1nst.jenkins;

import io.github.kev1nst.jenkins.common.Log4j2Adapter;
import io.github.kev1nst.jenkins.job.handler.JobProgressHandler;
import io.github.kev1nst.jenkins.job.po.JobSubmission;
import io.github.kev1nst.jenkins.job.po.QueueItem;
import org.junit.Test;
import io.github.kev1nst.jenkins.job.po.BuildStatus;
import org.nutz.lang.Lang;
import org.nutz.log.Logs;

/**
* @author kevinzhao
* @since 20/07/2019
*/

public class Demo {

static {
System.setProperty("log4j.configurationFile", "log4j2.xml");
Logs.setAdapter(new Log4j2Adapter());
}
private static final String CREDENTIAL = "9aebe96f61819ce2c20c01a820719f70"; // could be password or api token, this one is just a dummy cfredential, don't panic...
private static final String ACCOUNT = "admin";
private static final String JENKINS_URL = "http://localhost:8081";
Expand Down
14 changes: 14 additions & 0 deletions src/test/resources/log4j2.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout
pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Root level="debug" additivity="false">
<AppenderRef ref="console" />
</Root>
</Loggers>
</Configuration>

0 comments on commit a2d2487

Please sign in to comment.