Jon*_*han 5 java logging maven-2 log4j mojo
我正在编写一个Maven插件(Mojo),用于导入其他项目使用的Jar库.该库中至少有一个类使用Apache Log4j进行日志记录,但Maven为Mojo提供的记录器无法正确配置Log4j.
有没有简单的方法来弥合这些?不幸的是,org.apache.log4j.Logger并org.apache.maven.logging.Log没有共享一个共同的超级接口或超类,所以我不能简单地拥有一个setLog()类型函数.欢迎大家提出意见; 目前我打算要么忽略它,要么写一个可以使用它的桥接类.
Raf*_*ini 13
我遇到了同样的问题并解决了在Maven Logger和Log4j上编写一个简单的桥:
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.Level;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.maven.plugin.logging.Log;
public class MavenLoggerLog4jBridge extends AppenderSkeleton {
private Log logger;
public MavenLoggerLog4jBridge(Log logger) {
this.logger = logger;
}
protected void append(LoggingEvent event) {
int level = event.getLevel().toInt();
String msg = event.getMessage().toString();
if (level == Level.DEBUG_INT || level == Level.TRACE_INT) {
this.logger.debug(msg);
} else if (level == Level.INFO_INT) {
this.logger.info(msg);
} else if (level == Level.WARN_INT) {
this.logger.warn(msg);
} else if (level == Level.ERROR_INT || level == Level.FATAL_INT) {
this.logger.error(msg);
}
}
public void close() {
}
public boolean requiresLayout() {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Mojo中,我使用了Log4j API 的BasicConfigurator类,以及这个桥的实例:
public void execute() throws MojoExecutionException {
org.apache.maven.plugin.logging.Log mavenLogger = getLog();
BasicConfigurator.configure(new MavenLoggerLog4jBridge(mavenLogger));
}
Run Code Online (Sandbox Code Playgroud)
我不知道Maven基础设施是否已经拥有这个桥梁,我还没有尝试过搜索更像"maven"的东西,但这个解决方案运行良好.
| 归档时间: |
|
| 查看次数: |
1904 次 |
| 最近记录: |