Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中将输出写入日志?_Android_Logging_Logcat - Fatal编程技术网

如何在Android中将输出写入日志?

如何在Android中将输出写入日志?,android,logging,logcat,Android,Logging,Logcat,我想向日志中写入一些调试输出,以便使用logcat查看它 如果我向System.out写入内容,这已显示在logcat中 写入日志并向输出添加级别和标记的干净方法是什么?使用android.util.log和其中定义的静态方法(例如e(),w())。查看。它允许您使用不同的日志级别写入日志,并且您可以指定不同的标记来对输出进行分组。 比如说 Log.w("myApp", "no network"); 将输出带有标记myApp和消息no network的警告 标签只是用来轻松找到您的输出,因为L

我想向日志中写入一些调试输出,以便使用logcat查看它

如果我向System.out写入内容,这已显示在logcat中


写入日志并向输出添加级别和标记的干净方法是什么?

使用
android.util.log
和其中定义的静态方法(例如
e()
w()
)。

查看。它允许您使用不同的日志级别写入日志,并且您可以指定不同的标记来对输出进行分组。 比如说

Log.w("myApp", "no network");

将输出带有标记myApp和消息no network的警告

标签只是用来轻松找到您的输出,因为LogCat的输出有时可能很长。您可以在类中的某个位置定义:

私有静态最终字符串TAG=“myApp”

并在调试时使用它

Log.v(标记“做了某事”)

您还可以应用过滤器来仅搜索标记

import android.util.Log;
然后

Log.i("the your message will go here"); 

最近我发现了这种在android中编写日志的方法,我认为这非常棒

public static final boolean FORCED_LOGGING = true;
private static final int CALLER_STACK_INDEX = 3;

public static void showLogs(String message) {
        if (FORCED_LOGGING) {
            StackTraceElement caller = Thread.currentThread().getStackTrace()[CALLER_STACK_INDEX];

            String fullClassName = caller.getClassName();
            String className = fullClassName.substring(fullClassName.lastIndexOf('.') + 1);
            String methodName = caller.getMethodName();
            int lineNumber = caller.getLineNumber();

            Log.i("*** " + className + "." + methodName + "():" + lineNumber + "\n" , message);
        }
    }

请按此方式查看日志

Log.e("ApiUrl = ", "MyApiUrl") (error)
Log.w("ApiUrl = ", "MyApiUrl") (warning)
Log.i("ApiUrl = ", "MyApiUrl") (information)
Log.d("ApiUrl = ", "MyApiUrl") (debug)
Log.v("ApiUrl = ", "MyApiUrl") (verbose)

你可以用我的图书馆RDALogger。这是github

使用此库,您可以使用方法名/类名/行号和锚链接记录消息。通过此链接,当您单击日志时,屏幕转到这行代码

要使用库,必须执行以下实现

根水平梯度

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }
dependencies {
            implementation 'com.github.ardakaplan:RDALogger:1.0.0'
    }
应用程序级渐变

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }
dependencies {
            implementation 'com.github.ardakaplan:RDALogger:1.0.0'
    }
对于初始化库,您应该这样开始(在Application.class中或首次使用之前)

然后你可以记录你想要的任何东西

    RDALogger.info("info");
    RDALogger.debug("debug");
    RDALogger.verbose("verbose");
    RDALogger.warn("warn");
    RDALogger.error("error");
    RDALogger.error(new Throwable());
    RDALogger.error("error", new Throwable());
最后,输出显示您想要的所有内容(类名、方法名、锚链接、消息)


使用
log.d
会有什么不同?
w
中的
log.w(…)
表示警告。有以下几种版本:
d
-debug、
e
-error、
i
-info、
v
-verbose、-多么可怕的故障;-)通常,最好解释一个解决方案,而不是仅仅发布几行匿名代码。你可以阅读,也可以阅读
08-09 11:13:06.023 20025-20025/com.ardakaplan.application I/Application: IN CLASS : (ENApplication.java:29)   ///   IN METHOD : onCreate
    info