我不知道';我不知道什么时候应该在Android中使用log.d()和log.w()方法 Map city=newhashmap(); 城市。放置(“名称”、“洛杉矶”); 城市。put(“州”、“CA”); 城市。put(“国家”、“美国”); db.收集(“城市”)文件(“LA”) .set(城市) .addOnSuccessListener(新的OnSuccessListener(){ @凌驾 成功时公开作废(作废避免){ Log.d(标记“DocumentSnapshot已成功写入!”); } }) .addOnFailureListener(新的OnFailureListener(){ @凌驾 public void onFailure(@NonNull异常e){ Log.w(标签“错误写入文件”,e); } });

我不知道';我不知道什么时候应该在Android中使用log.d()和log.w()方法 Map city=newhashmap(); 城市。放置(“名称”、“洛杉矶”); 城市。put(“州”、“CA”); 城市。put(“国家”、“美国”); db.收集(“城市”)文件(“LA”) .set(城市) .addOnSuccessListener(新的OnSuccessListener(){ @凌驾 成功时公开作废(作废避免){ Log.d(标记“DocumentSnapshot已成功写入!”); } }) .addOnFailureListener(新的OnFailureListener(){ @凌驾 public void onFailure(@NonNull异常e){ Log.w(标签“错误写入文件”,e); } });,android,logging,Android,Logging,这是FirebaseFirestore的简单数据输入代码。 但是当我研究onSuccess()和onFailure()方法时,它们都有不同的Log类方法。我不知道为什么这段代码在这些重写方法中使用了不同的方法(onSuccess()和onFailure()) 他们正在调用:d代表debug和w代表警告 当操作失败时使用警告,当一切正常时使用调试,只是为了告诉您……他们正在调用:d代表debug,而w代表警告 当操作失败时使用警告,当一切正常时使用调试,只是为了告诉您…为什么此特定代码使用一个而不

这是FirebaseFirestore的简单数据输入代码。 但是当我研究
onSuccess()
onFailure()
方法时,它们都有不同的Log类方法。我不知道为什么这段代码在这些重写方法中使用了不同的方法(
onSuccess()
onFailure()

他们正在调用:
d
代表
debug
w
代表
警告

当操作失败时使用警告,当一切正常时使用调试,只是为了告诉您……

他们正在调用:
d
代表
debug
,而
w
代表
警告

当操作失败时使用警告,当一切正常时使用调试,只是为了告诉您…

为什么此特定代码使用一个而不是另一个?因为写信的人选择了。他们可以用
i
(信息)和
e
(错误)来代替

简单的回答是,你想用什么就用什么,因为这根本不重要:在一天结束时,你的消息进入LogCat输出流,你可以查看它

较长的答案是,您希望根据所记录的信息类型登录到特定的“流”。您可以选择5个主要的日志记录“流”,按您希望使用它们的频率从最少到最多列出:
错误
警告
信息
调试
,以及
详细

同样,你可以登录到你内心想要的任何地方,但一般来说:

  • 当您检测到实际阻止应用程序正常运行的有效错误状态或异常时,请登录到
    ERROR
    Log.e()
    )。例如,如果您认为您正在处理switch语句的每一种情况,那么可以在
    default
    情况下添加一个不应该发生的错误日志。作为开发人员,您希望了解并修复这些情况,即使它们不会破坏您的应用程序。您可以在Crashlytics中将这些异常报告为“非致命”异常

  • 记录到
    WARN
    Log.w()
    )以了解发生的意外但非严重的错误。这些都是为了引起人们的注意,有什么地方出了问题,但该应用程序继续尽可能好。在您发布的示例中,“failure listener”可能正在使用
    WARN
    ,因为该故障是一个需要处理的有效案例,您希望了解故障,但已知故障是可能的,因此应用程序应该优雅地处理它并能够继续

  • 登录到
    INFO
    Log.i()
    )以获取通常有用但不会太吵的信息。这些将有助于您在崩溃报告中追踪bug。记录活动生命周期事件就是一个例子

  • 登录到
    DEBUG
    Log.d()
    )以获取在开发过程中帮助您解决特定问题或试图跟踪特定错误时暂时有用的信息。例如,如果您的应用程序在某个特定位置崩溃,您可以在该点之前添加一个
    Log.d
    调用,并记录本地变量的状态或其他帮助您找出导致崩溃的原因。一旦问题或bug得到解决,您可能会删除它们

  • 当您需要更多信息时,请登录到
    VERBOSE
    Log.v()
    ),这样您就可以更频繁地使用
    DEBUG
    。顾名思义,这是为了冗长。它将向LogCat中喷射大量文本,使其噪音大到无法使用。例如,您可以将长循环的每个迭代记录到
    VERBOSE

  • 一旦您登录到任何特定流,就可以过滤LogCat日志以帮助查找特定消息。例如,如果您在应用程序中使用的库出现问题,您可以过滤到
    WARN
    ,以缩小LogCat日志的大小,并查找库可能报告的任何警告

    您可以在Android Studio中通过选择LogCat选项卡中的下拉列表进行过滤。Android Studio还为每个流(您可以在“设置”中配置)着色,以帮助区分日志消息)

    希望有帮助

    为什么这个特定的代码使用一个而不是另一个?因为写信的人选择了。他们可以用
    i
    (信息)和
    e
    (错误)来代替

    简单的回答是,你想用什么就用什么,因为这根本不重要:在一天结束时,你的消息进入LogCat输出流,你可以查看它

    较长的答案是,您希望根据所记录的信息类型登录到特定的“流”。您可以选择5个主要的日志记录“流”,按您希望使用它们的频率从最少到最多列出:
    错误
    警告
    信息
    调试
    ,以及
    详细

    同样,你可以登录到你内心想要的任何地方,但一般来说:

  • 当您检测到实际阻止应用程序正常运行的有效错误状态或异常时,请登录到
    ERROR
    Log.e()
    )。例如,如果你认为你是h
    Map<String, Object> city = new HashMap<>();
    city.put("name", "Los Angeles");
    city.put("state", "CA");
    city.put("country", "USA");
    
    db.collection("cities").document("LA")
            .set(city)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    Log.d(TAG, "DocumentSnapshot successfully written!");
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.w(TAG, "Error writing document", e);
                }
            });