Android 中的 Log4j 实现

2024-01-06

我是 android 开发新手。我想将日志写入 SD 卡中的一个文件。我如何使用 Log4j 来做到这一点。实现 Log4j 的所有步骤是什么。我读了很多文章。但没有一个描述如何配置和任何人都可以用简单的语言解释一下如何在 android 中执行此操作。


你应该看看logback http://tony19.github.com/logback-android/(下一代 log4j)。使用FileAppender http://logback.qos.ch/manual/appenders.html#FileAppender or RollingFileAppender http://logback.qos.ch/manual/appenders.html#RollingFileAppender.

指示:

  1. Add slf4j-api-1.6.6.jar and logback-android-1.0.6-2.jar到你的类路径。

  2. 创建文件assets/logback.xml在您的项目中(或使用AndroidManifest.xml...see example http://tony19.github.com/logback-android/),包含以下配置:

<configuration>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>/sdcard/testFile.log</file>
    <append>true</append>
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender>
        
  <root level="DEBUG">
    <appender-ref ref="FILE" />
  </root>
</configuration>

注意:由于指定的路径位于 SD 上,因此请确保使用WRITE_EXTERNAL_STORAGE http://developer.android.com/reference/android/Manifest.permission.html#WRITE_EXTERNAL_STORAGE允许。您可以改为指定您已具有写入权限的其他路径。

您的 Java 代码(包含 SLF4J 日志记录调用)现在会记录等于或高于DEBUG水平到/sdcard/testFile.log.

Java 示例:

package com.example;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.example.R;
import android.app.Activity;
import android.os.Bundle;

public class HelloAndroidActivity extends Activity {
    static private final Logger LOG =
                       LoggerFactory.getLogger(HelloAndroidActivity.class);

    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       
       //
       // Based on the configuration above, these log statements
       // are written to /sdcard/testFile.log
       //
       LOG.info("Hello Android!");
       LOG.debug("reply: {}", Example.hello());
    }
}

class Example {
    static private final Logger LOG =
                     LoggerFactory.getLogger(Example.class);

    static public String hello() {
        LOG.trace("entered hello()");
        return "Hi there!";
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 中的 Log4j 实现 的相关文章

随机推荐

  • 有没有办法在 Svelte 中将 props 声明为可选

    我创建了一些带有可选道具的组件 例如hide true 我的问题是 当我不通过该道具时 这些恼人的错误消息总是充斥着我的控制台
  • 点云生成

    我有一个 3D 几何形状 必须将其转换为点云 所得到的点云可以被认为等同于对象的激光扫描输出的点云 不需要生成网格 生成的点可能是均匀分布的 也可能只是随机分布的 没关系 3D形状可以以3D数学公式的形式提供 这必须使用 MATLAB 来完
  • 从命令行指定 dockerignore

    我有一个 dockerignore 文件 但对于一个用例 我想在命令行指定 dockerignore 的内容 例如 docker build ignore node modules t foo 有没有办法从命令行执行此操作 我在文档中没有看
  • ECMAScript 6:WeakSet 的用途是什么?

    WeakSet 应该通过弱引用来存储元素 也就是说 如果一个对象没有被其他任何东西引用 那么它应该从 WeakSet 中清除 我写了以下测试 var weakset new WeakSet numbers 1 2 3 weakset add
  • 更改 HTML 元素的背景颜色

    我有一张包含 100 多个不同大小和尺寸的几何形状的图像 我在它上面使用了图像映射并为每个分配了 ID area like area 我在 MySQL 数据库中存储了有关每个形状的记录 例如 box id color code 1 AEEE
  • 优化 QtCreator 编译器的配置

    我在 Windows 7 中使用 QtCreator 我想将其配置为使用第三级优化 O3 用于 C 编译器 我怎样才能加快我的代码速度以及需要进行哪些更改 尝试将下一行添加到您的 pro 文件中 remove possible other
  • 为标签栏设置背景图像

    我正在尝试以编程方式设置应用程序中选项卡栏的背景图像 我的代码如下 根视图控制器 h IBOutlet UITabBar mainTabBar IBOutlet UITabBarItem settingsBarItem IBOutlet U
  • 在新的命名空间中定义简单类型,例如 xsd:string?

    这应该是直截了当的 但在我看来 它似乎只包含有关复杂类型的信息 假设我已经定义了一个名称空间xmlns address http 现在 从我读到的内容来看 我似乎可以执行以下操作
  • React useState - 每个组件使用一个状态还是多个状态? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 使用 Hooks Functional 组件来优化 React 并使代码更具可读性的更好方法是什么 每个组件有一个或多个 setState 钩子
  • 拉伸图像以适合 td

    我想在我的 td 单元格中拉伸图像 怎么做 它是一个选项卡图像 看起来像 的倒置 我需要将图像放置在第一个 td 单元格中 其中包含文本 aaa 将位于该图像的中心 如果不使用 CSS3 则无法拉伸背景图像 In CSS3你有背景大小属性
  • 如何解决Jboss部署错误?

    17 19 30 298 ERROR ProfileServiceBootstrap Failed to load profile Summary of incomplete deployments SEE PREVIOUS ERRORS
  • 使用 ObjectInputStream 读入的对象在 try-catch 块后不保留值

    因此 我将 Car 对象数组写入文件 然后当我尝试在 cars 变量中读回它们时 我在语句上设置了它们cars Car in readObject 但是 当我使用调试器单步调试它时 一旦退出 try catch 块 汽车变量就会 取消设置
  • 从命令行获取所有打开的窗口的列表

    在Windows 7中 是否可以从命令行获取所有打开的桌面窗口的列表 我知道有可能获得所有正在运行的进程的列表 https stackoverflow com questions 53489 how do you list all proc
  • 如何恢复已删除的 Facebook 应用程序?

    我的一位管理员已删除该应用程序 有什么办法可以恢复吗 我如何联系 Facebook 的开发人员 您可以通过进入您的开发者帐户请求来恢复已删除的 Facebook 应用程序 https developers facebook com appe
  • 如何解决“链接器命令失败,退出代码 1”问题?

    我正在尝试使用OMPTrace这是一个追踪和可视化的工具OpenMP程序执行如下所示https github com passlab omptrace https github com passlab omptrace 中给出的代码exam
  • 这两个类都支持封装吗?...?

    public class Normal public string name name is public public String getName return name public String setName String new
  • 使用级联 true 保存实体的 TypeORM 问题

    我正在将 NestJS 与 TypeORM 结合使用 并尝试保存用户与消息的对话 我将对话实体上的消息字段设置为级联 真 但是当我尝试这段代码时 const user3 User login admin createdBy system l
  • Vue.js/Nuxt.js 在 404 上加载后备图像

    我正在尝试设置默认图像 占位符图像 以防找不到图像资源 404 我有一篇字典文章 其中包含键author image 的值 所以该字符串不为空 但它只是无法加载该图像 在我的模板中 img alt Author Image 在我的方法中 m
  • jQuery 的 next() 作用于不相邻的元素

    我必须处理一些可怕的代码 div class container tr td width 100 height 50 a class swaps img src http www blah jpg alt Some Title a td t
  • Android 中的 Log4j 实现

    我是 android 开发新手 我想将日志写入 SD 卡中的一个文件 我如何使用 Log4j 来做到这一点 实现 Log4j 的所有步骤是什么 我读了很多文章 但没有一个描述如何配置和任何人都可以用简单的语言解释一下如何在 android