我有一個自定義包裝Log4j2周圍。而我在輸出方面有一些問題,在XXX線下是我想要的。但是當我使用「Log.info()」我不能得到相同的結果。除了任何解決辦法 「日誌.getLog()。信息()」自定義Log4j2包裝和輸出
這裏是代碼
public class TestMyLog {
public static void main(String[] args){
Log.info("asdasggg");
Log.debug("asdasda");
Log.fatal("asdwefe");
Log.error("fgggg");
Log.warn("sdsdee");
Log.trace("ioimom");
System.out.println("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
Log.getLog().info("sdss");
Log.getLog().debug("dddddd");
Log.getLog().error("erffs");
}
}
public class Log{
public static Log4j getLog(){
return new Log4j2Wrapper();
}
public static void info(String str){
new Log4j2Wrapper().info(str);
}
public static void debug(String str){
new Log4j2Wrapper().debug(str);
}
public static void error(String str){
new Log4j2Wrapper().error(str);
}
public static void fatal(String str){
new Log4j2Wrapper().fatal(str);
}
public static void trace(String str){
new Log4j2Wrapper().trace(str);
}
public static void warn(String str){
new Log4j2Wrapper().warn(str);
}
public static boolean isInfoEnabled(){
return new Log4j2Wrapper().isInfoEnabled();
}
public static boolean isDebugEnabled(){
return new Log4j2Wrapper().isDebugEnabled();
}
public static boolean isErrorEnabled(){
return new Log4j2Wrapper().isErrorEnabled();
}
public static boolean isFatalEnabled(){
return new Log4j2Wrapper().isFatalEnabled();
}
public static boolean isWarnEnabled(){
return new Log4j2Wrapper().isWarnEnabled();
}
public static boolean isTraceEnabled(){
return new Log4j2Wrapper().isTraceEnabled();
}
}
public class Log4j2Wrapper implements Log4j{
private static final String FQCN = Log4j2Wrapper.class.getName();
private ExtendedLoggerWrapper log;
public Log4j2Wrapper() {
Logger logger = LogManager.getLogger();
log = new ExtendedLoggerWrapper((ExtendedLogger) logger,
logger.getName(), logger.getMessageFactory());
}
public boolean isInfoEnabled() {
return log.isInfoEnabled();
}
public boolean isDebugEnabled() {
return log.isDebugEnabled();
}
public boolean isErrorEnabled() {
return log.isErrorEnabled();
}
public boolean isFatalEnabled() {
return log.isFatalEnabled();
}
public boolean isWarnEnabled() {
return log.isWarnEnabled();
}
public boolean isTraceEnabled() {
return log.isTraceEnabled();
}
public void info(String str) {
log.logIfEnabled(FQCN, Level.INFO, null, new SimpleMessage(str), null);
}
public void info(String str, Throwable t) {
log.logIfEnabled(FQCN, Level.INFO, null, new SimpleMessage(str), t);
}
public void debug(String str){
log.logIfEnabled(FQCN, Level.DEBUG,null,new SimpleMessage(str),null);
}
public void error(String str){
log.logIfEnabled(FQCN, Level.ERROR,null,new SimpleMessage(str),null);
}
public void fatal(String str){
log.logIfEnabled(FQCN, Level.FATAL,null,new SimpleMessage(str),null);
}
public void trace(String str){
log.logIfEnabled(FQCN, Level.TRACE,null,new SimpleMessage(str),null);
}
public void warn(String str){
log.logIfEnabled(FQCN, Level.WARN,null,new SimpleMessage(str),null);
}
}
public interface Log4j {
boolean isInfoEnabled();
boolean isDebugEnabled();
boolean isErrorEnabled();
boolean isFatalEnabled();
boolean isWarnEnabled();
boolean isTraceEnabled();
void info(String str);
void info(String str, Throwable t);
void debug(String str);
void error(String str);
void fatal(String str);
void warn(String str);
void trace(String str);
}
謝謝,但我的目的是直接使用Log.xxx而無需聲明一個記錄器對象。 – Ives
我建議你使用這個工具來生成包裝,看看它如何解決位置問題(fgcn)並在你的Log類中使用它。 –