在Gradle中,如何在控制台/事件日志中打印消息?

big*_*igp 37 android gradle output android-studio

我正在尝试在执行deploy命令时验证我的源路径和目标路径是否已正确设置.

请参阅以下示例:(
复制自:http://eppz.eu/blog/unity-android-plugin-tutorial-2/)

android.libraryVariants.all { variant ->
    // Task names.
    String variantName = "${variant.name.capitalize()}"; // Like 'Debug'
    String deployTaskGroup = "plugin";
    String deployTaskName = "deploy${variantName}PluginArchive"; // Like 'deployDebugPluginArchive'
    String dependencyTaskName = "assemble${variantName}"; // Like 'assembleDebug'
    // Source.
    String sourceAARFolder = "${buildDir.getPath()}/outputs/aar/";
    String sourceAARName = "${project.name}-${variant.name}.aar";
    // Target.
    String targetAssetFolder = "Assets/Plugins/My Plugin";
    String targetAARFolder = "${rootDir.getPath()}/../../${targetAssetFolder}"; // Navigate into 'Assets'
    String targetAARName = "My Plugin Android.aar"; // The form you ship your plugin

    String targetProjDir = System.env.UNITY_PROJECT; // <-- Need to confirm this line!
    //Log.i(targetProjDir); //??????????? something like this?

    // Create task.
    task(deployTaskName, dependsOn: dependencyTaskName, type: Copy) {
        from(sourceAARFolder)
        into(targetAARFolder)
        include(sourceAARName)
        rename(sourceAARName, targetAARName)
    }.group = deployTaskGroup;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法将上述targetProjDir字符串变量显示到某种控制台,或Android Studio中的事件日志(假设它是控制台的名称)?

JBi*_*gas 59

Gradle使用日志框架.您可以将消息记录到该消息.默认情况下,仅显示日志级别lifecycle及以上级别,但您可以登录其他级别,例如debuginfo.

要记录调试级别(使用gradle --debug或更低版本的构建可见)

project.logger.debug('my debug message')
Run Code Online (Sandbox Code Playgroud)

登录信息级别(使用gradle --info版本和更低版本可见)

project.logger.info('my info message')
Run Code Online (Sandbox Code Playgroud)

记录生命周期级别(默认情况下可见)

project.logger.lifecycle('my message visible by default')
Run Code Online (Sandbox Code Playgroud)

  • 如果您只想记录某些内容而不配置任何内容,请按照 @JbirdVegas 的建议使用“project.logger.lifecycle('默认情况下我的消息可见')”。您可以在 *Gradle 控制台* 选项卡中查看日志。 (3认同)

Jay*_* PM 32

Gradle脚本是用Groovy语言编写的.可以登录到您自己的消息控制台.

如果项目的Gradle版本3.2.1或更高版本,则可以使用一个简单的选项来登录构建文件,即将消息写入标准输出.Gradle将写入标准输出的任何内容重定向到它的日志记录系统.

println 'A message which is logged at QUIET level'
Run Code Online (Sandbox Code Playgroud)

Gradle日志记录系统允许我们将消息记录到多个日志级别(LIFECYCLE,QUIET,INFO,DEBUG)

请通过以下链接进行详细研究

https://docs.gradle.org/current/userguide/logging.html

  • `println` 不会通过日志框架进行记录,它是转发到 `System.out.println(String)` 方法的方法。这将始终不仅仅在特定的日志级别打印。 (2认同)
  • @JBird:“ Gradle在QUIET日志级别将任何写入标准输出的内容重定向到其日志记录系统。” (https://docs.gradle.org/current/userguide/logging.html,适用于Gradle 4.2.1)。因此,根据本文档,`println` *将*通过日志记录框架进行记录。但是,我无法在实践中成功地对此进行测试。 (2认同)

Mah*_*zad 17

这是针对Kotlin DSL (build.gradle.kts )。

当您使用println(标准输出)时,它会被重定向到日志级别QUIET。因此,它总是在所有日志级别中打印(当未指定日志级别时,Gradle 默认为LIFECYCLE):

println("I am a log message.")
Run Code Online (Sandbox Code Playgroud)

您还可以使用脚本中隐式提供logger的属性:project

logger.info("I am an {} log message", "info")
// OR
project.logger.info("I am an {} log message", "info")
Run Code Online (Sandbox Code Playgroud)

以下是 Gradle 中可用的日志级别以及如何从命令行启用它们:

命令 姓名 命令行选项 输出电平
6 ERROR 没有选项(总是打印) ERROR
5 QUIET -q或者--quiet QUIET及更高
4 WARNING -w或者--warn WARNING及更高
3 LIFECYCLE 当没有提供选项时 LIFECYCLE及更高
2 INFO -i或者--info INFO及更高
1 DEBUG -d或者--debug DEBUG及更高

您还可以在gradle.properties文件中设置日志级别:

org.gradle.logging.level=quiet|warn|lifecycle|info|debug
Run Code Online (Sandbox Code Playgroud)

请参阅Gradle 官方文档以了解有关日志记录的更多信息。


Gk *_*mon 13

基本上你可以通过这个 gradle 脚本打印出一条消息 -

 println "This is a simple gradle message"
Run Code Online (Sandbox Code Playgroud)

但是如果你想在消息中打印一个变量,那么你可以通过以下代码来完成

def variable = "This is a simple variable"

println "Message: ${variable}"
Run Code Online (Sandbox Code Playgroud)


Dro*_*ris 9

这在 Android Studio 中对我有用:

println("Log: current build type is $buildTypeName")
Run Code Online (Sandbox Code Playgroud)