如何将输出写入 Android 中的 Log?

Posted

技术标签:

【中文标题】如何将输出写入 Android 中的 Log?【英文标题】:How do I write outputs to the Log in Android? 【发布时间】:2011-01-22 19:35:44 【问题描述】:

我想将一些调试输出写入日志以使用 logcat 进行查看。

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

写入日志并将级别和标签添加到我的输出的干净方式是什么?

【问题讨论】:

【参考方案1】:

查看android.util.Log。它允许您使用各种日志级别写入日志,并且您可以指定不同的标签来对输出进行分组。 例如

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

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

【讨论】:

使用log.d会有什么不同? w in Log.w(...) 代表警告。有more 版本:d - 调试,e - 错误,i - 信息,v - 详细,wtf - 多么可怕的失败。 ;-)【参考方案2】:

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

private static final String TAG = "myApp";

并在调试时使用

Log.v(TAG, "做了某事");

您也可以应用过滤器来仅搜索标签。

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:
import android.util.Log;

然后

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

【讨论】:

【参考方案5】:

请以这种方式查看日志,

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)

【讨论】:

【参考方案6】:

您可以使用我的名为 RDALogger 的库。这里是githublink。

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

要使用库,您必须执行以下操作。

在根级gradle中

allprojects 
        repositories 
            ...
            maven  url 'https://jitpack.io' 
        
    

在应用级分级中

dependencies 
            implementation 'com.github.ardakaplan:RDALogger:1.0.0'
    

为了初始化库,你应该这样开始(在 Application.class 中或第一次使用之前)

RDALogger.start("TAG NAME").enableLogging(true);

而且你可以记录任何你想要的;

    RDALogger.info("info");
    RDALogger.debug("debug");
    RDALogger.verbose("verbose");
    RDALogger.warn("warn");
    RDALogger.error("error");
    RDALogger.error(new Throwable());
    RDALogger.error("error", new Throwable());

最后输出显示你想要的一切(类名、方法名、锚链接、消息)

08-09 11:13:06.023 20025-20025/com.ardakaplan.application I/Application: IN CLASS : (ENApplication.java:29)   ///   IN METHOD : onCreate
    info

【讨论】:

【参考方案7】:
String one = object.getdata();
Log.d(one,"");

【讨论】:

通常最好解释一个解决方案,而不是仅仅发布一些匿名代码行。你可以阅读How do I write a good answer,也可以阅读Explaining entirely code-based answers【参考方案8】:

最近我发现了这种在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);
        
    

【讨论】:

以上是关于如何将输出写入 Android 中的 Log?的主要内容,如果未能解决你的问题,请参考以下文章

用log4j将日志写入数据库

Android Studio保存log到本地

如何通过 Blazor WebAssembly 写入浏览器控制台?

Android Studio NDK 入门教程--优雅的在C++中输出Logcat

数据库异常信息为啥没有写入log4j日志文件中

Log4j写入数据库详解