17.4.4. 插件中的日志

Maven通过在运行Mojo之前调用setLog()来连接你的Mojo至日志提供程序。该提供程序提供了一个org.apache.maven.monitor.logging.Log的实现。该类暴露了一些你可以用来和用户交流信息的方法。这个Log类提供了很多日志级别,与Log4J提供的API十分类似。每个级别:debug,info,error,warn,都有一系列可用的方法。为了节省时间,我们只列出了debug级别的方法:

void debug( CharSequence message )

打印信息至debug日志级别。

void debug( CharSequence message, Throwable t )

打印信息至debug日志级别,并包含一个ThrowableException或者Error)的堆栈信息。

void debug( Throwable t )

打印一个ThrowableException或者Error)的堆栈信息。

每个级别暴露同样的一组方法。这四个日志级别服务于不同的目的。debug级别是为了调试目的,人们用来观察mojo运行的详细情况。你应该使用debug日志级别来提供Mojo运行尽可能详细的细节,但你从不应该去假设用户会看到debug级别信息。info级别是为了生成一些正常操作的信息。如果你构建一个插件使用编译器来编译代码,你可能就需要打印编译的输出至屏幕。

warn日志级别用来记录一些非预期的,但你的Mojo还能够处理的事件和错误。如果你试图运行编译Ruby源码的插件,而实际上没有可用的Ruby源码,你就需要打印一个警告信息,然后继续运行。警告(warn)不是致命的,但是错误(error)就是一些终止程序运行的情况。对于那些完全非预期的错误情况,这里有error日志级别。如果你不再能够继续运行一个Mojo,你就需要使用error。如果你在编写一个Mojo编译Java源码,但编译器不可用,你就需要打印一条信息到error级别,然后传递一条异常,以让Maven能够输出给用户。你应该假设用户能够看到大多数的info信息,以及所有的error信息。