包括.aar库模块日志到Android应用程序文件记录器中吗?

时间:2019-09-13 08:14:32

标签: android logging

是否可以以某种方式访问​​来自第三方库aar模块的日志消息,并在编写自定义文件记录器时将其附加?

我使用文件记录器的目的是在出现异常行为时能够从应用程序发送日志文件。 在这种情况下,我的aar库之一包含了我想包含在文件记录器中的重要信息。

详细信息

  • 库(.aar)记录到android.util.Log

1 个答案:

答案 0 :(得分:1)

为什么不使用logcat命令来检索日志?

这里是通过电子邮件发送日志的示例

public static void sendLog(Context context) {
       try {
           String fileName = "logcat_" + System.currentTimeMillis() + ".txt";
           File outputFile = new File(context.getExternalCacheDir(), fileName);

           @SuppressWarnings("unused")
           Process process = Runtime.getRuntime().exec("logcat -v time -f " + outputFile.getAbsolutePath());

           Intent emailIntent = new Intent(Intent.ACTION_SEND);
           emailIntent.setType("plain/text");
           emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Android Log");
           emailIntent.putExtra(Intent.EXTRA_TEXT, "See attached log file");
           emailIntent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(context, "com.yourapplicationid.fileprovider", outputFile));
           context.startActivity(Intent.createChooser(emailIntent , "Send email..."));
       } catch (Exception e) {
           Log.e(TAG, "Exception when sending log: " + e.getMessage());
       }
   }

您需要在清单中指定一个FileProvider

    <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="com.yourapplicationid.fileprovider"
            android:enabled="true"
            android:grantUriPermissions="true">
        <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
    </provider>

以及XML文件路径

<paths>
    <external-cache-path
        name="external_cache"
        path="." />
</paths>

更多信息在这里:https://developer.android.com/studio/command-line/logcat