您的位置:首页 > 其它

Log4j2打印一行日志时返回本行日志的字符串

2017-03-29 16:26 344 查看
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.impl.Log4jLogEvent;
import org.apache.logging.log4j.core.layout.PatternLayout;
import org.apache.logging.log4j.message.SimpleMessage;

/**
* Created by lanhuajian on 2017/3/29.
*/
public class StringLogger {
private String loggerName;
private static String FQCN = StringLogger.class.getName();
private static final PatternLayout PATTERN_LAYOUT = PatternLayout.newBuilder()
.withPattern("%d %t %-5p [%c]%L %m%n")
.build();

private StringLogger(String loggerName) {
this.loggerName = loggerName;
}

public static StringLogger getLogger(Class loggerClass) {
return new StringLogger(loggerClass.getName());
}

public static StringLogger getLogger(String loggerName) {
return new StringLogger(loggerName);
}

public String info(String msg) {
return PATTERN_LAYOUT.toSerializable(buildEvent(msg, Level.INFO));
}

public String warn(String msg) {
return PATTERN_LAYOUT.toSerializable(buildEvent(msg, Level.WARN));
}

public String debug(String msg) {
return PATTERN_LAYOUT.toSerializable(buildEvent(msg, Level.DEBUG));
}

public String error(String msg) {
return PATTERN_LAYOUT.toSerializable(buildEvent(msg, Level.ERROR));
}

private Log4jLogEvent buildEvent(String msg, Level level) {
return Log4jLogEvent.newBuilder()
.setIncludeLocation(true)
.setLoggerName(loggerName)
.setLoggerFqcn(FQCN)
.setLevel(level)
.setMessage(new SimpleMessage(msg))
.build();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: