首页 > 其他分享 >Android 简单实现写入日志信息到日志文件功能

Android 简单实现写入日志信息到日志文件功能

时间:2025-01-16 11:57:49浏览次数:1  
标签:String 写入 public static new 日志 Android log

android 简单实现写入日志信息到日志文件功能

 1)AppLogHelper.java定义

public class AppLogHelper {
    private static final String LOG_DIR = "appLog"; // 日志文件夹名
    private static final String LOG_NAME = "log.txt"; // 日志文件名
    private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private static File logDir = null;
    private static File logFile = null;

    public static void init(Context context) {
        // 获取外部存储的日志目录
        File externalStorageDir = context.getExternalFilesDir(null);
       /* logDir = new File(externalStorageDir, LOG_DIR);
        logFile = new File(logDir, LOG_NAME);*/
        //可以使用上面两句代码,我这边要特殊文件名称,如:log_20250116(动态每天的)
        String newLogName = getFileName("log_");
        logDir = new File(externalStorageDir, LOG_DIR);
        logFile = new File(logDir, newLogName);

        if (!logDir.exists()) {
            logDir.mkdirs();
        }

        if (!logFile.exists()) {
            try {
                logFile.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static void log(String tag, String msg) {
        if (logDir != null && logFile != null) {
            try {
                FileWriter fileWriter = new FileWriter(logFile, true);
                fileWriter.write(dateFormat.format(new Date()) + " - " + tag + ": " + msg + "\n");
                fileWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /***
     * 重新设置Log.txt文件名(由log.txt改成log_20250116.txt)
     * */
    public static String getFileName(String prefix){

        SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyyMMdd");
        String newLogName = prefix + dateFormat2.format(new Date())+".txt";
        return newLogName;
    }
}

2)在AppApplication.java文件初始化日志组件

public class AppApplication extends Application {

    public static Context context;
    @Override
    public void onCreate() {
        super.onCreate();
        this.context = getApplicationContext();
        //初始化日志文件
        AppLogHelper.init(context);
    }
}

3)AndroidManifest.xml 文件增加AppApplication

    <application
        android:name=".app.AppApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

4)activity_main.xml  布局页面简单加两个按钮(开始、结束)

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="5dp"

    >
<LinearLayout
    android:id="@+id/lay_out_pack"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <Button
        android:id="@+id/btn_alarm_start"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="0dp"
        android:layout_marginRight="5dp"
        android:layout_marginBottom="10dp"
        android:layout_weight="1"
        android:text="开启闹钟"
        android:textSize="30sp"
        android:textStyle="bold"
        />

    <Button
        android:id="@+id/btn_alarm_cancel"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="0dp"
        android:layout_marginRight="5dp"
        android:layout_marginBottom="10dp"
        android:layout_weight="1"
        android:text="关闭闹钟"
        android:textSize="30sp"
        android:textStyle="bold"
        />
</LinearLayout>

</LinearLayout>

5)MainActivity.java 增加开始、结束点击事件

public class MainActivity extends AppCompatActivity {

    private final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initFindView();
    }

    private void initFindView(){
        Button btnAlarmStart = findViewById(R.id.btn_alarm_start);
        Button btnAlarmCancel = findViewById(R.id.btn_alarm_cancel);
        //btnAlarmStart添加点击事件
        btnAlarmStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AppLogHelper.log(TAG,"-----闹钟开启-----");
            }
        });
        //btnAlarmCancel添加点击事件
        btnAlarmCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AppLogHelper.log(TAG,"-----闹钟关闭-----");
            }
        });
    }
}

6、运行项目,并点击按钮的开始、结束,效果图如下

 

 

 

标签:String,写入,public,static,new,日志,Android,log
From: https://www.cnblogs.com/xielong/p/18674723

相关文章

  • [源码免费下载]毕业设计源码信息分享下载(Android+微信小程序+管理系统)
     博主介绍:本人专注于Android/java/数据库/微信小程序技术领域的开发,以及有好几年的计算机毕业设计方面的实战开发经验和技术积累;尤其是在安卓(Android)的app的开发和微信小程序的开发,很是熟悉和了解;本人也是多年的Android开发人员;希望我发布的此篇文件可以帮助到您;......
  • Android系统定制APP开发_如何对应用进行系统签名
    前言当项目开发需要使用系统级别权限或frame层某些api时,普通应用是无法使用的,需要在AndroidManifest中配置sharedUserId:AndroidManifest.xml中的android:sharedUserId=“android.uid.system”,代表的意思是和系统相同的uid,可以拥有修改系统时间,文件操作等权限。1.制作And......
  • Mysql--实战篇--SQL优化(查询优化器,常用的SQL优化方法,执行计划EXPLAIN,Mysql性能调优,慢
    一、查询优化1、查询优化器(QueryOptimizer)MySQL查询优化器(QueryOptimizer)是MySQL数据库管理系统中的一个关键组件,负责分析和选择最有效的执行计划来执行SQL查询。查询优化器的目标是尽可能减少查询的执行时间和资源消耗,从而提高查询性能。查询语句不同关键字(where、......
  • Android 12.0 mtk平板camera2横屏预览旋转90度横屏保存圆形预览缩略图旋转90度功能实
    1.前言在12.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,点击录像和照片下保存的圆形预览缩略图依然是竖屏的,所以说同样需要将视频也保存为......
  • Android T(13) 源码分析 — 原生层 Surface 的创建
    AndroidT(13)源码分析—原生层Surface的创建文章目录AndroidT(13)源码分析—原生层Surface的创建前言摘要一、SurfaceComposerClient的createSurfaceChecked分析二、ISurfaceComposerClient的createSurface分析总结前言该系列文章基于AndroidT......
  • Android的使用AlarmManager简单实现定时任务
    使用AlarmManager简单实现定时每天或重复执行任务,有3种方式1)AlarmManager+Service实现方式2)AlarmManager+InterService实现方式3)AlarmManger+BoardcastReceiver实现方式需要在AndroidMainifast.xml增加权限1)增加ALARM(闹钟)权限<uses-permissionandroid:name="and......
  • 玄机:第二章 日志分析-apache日志分析
    简介账号密码rootapacherizhisshroot@IP1、提交当天访问次数最多的IP,即黑客IP:2、黑客使用的浏览器指纹是什么,提交指纹的md5:3、查看包含index.php页面被访问的次数,提交次数:4、查看黑客IP访问了多少次,提交次数:5、查看2023年8月03日8时这一个小时内有多少IP访问,提交次数......
  • Spring Book 配置文件 / 日志
    目录SpringBook配置文件一.配置文件1.配置文件的作用2.配置文件的格式二. .properties配置文件1..properties配置文件说明2.读取配置文件三.yml配置文件1..yml配置文件说明2.使⽤yml连接数据库 3.yml配置不同数据类型及null 4.yml配置读取5.主要事项......
  • Android 性能优化
    查看日志main:lowmemorykiller:lowmemorykiller:Kill'com.transsion.aichargeprovider'anrin:anr的时间CPU信息:total:查看应用安装:DexInv|dex2oat32:dex2oattook看温度:previous/currentevent:displayed//查看启动时间display0//查看启动屏幕参数低内存查杀......
  • G1原理—7.G1的GC日志分析解读
    大纲1.TLAB的GC日志解读2.YGC的GC日志解读3.模拟YGC(单次GC及多次GC的不同场景)4.打开实验选项查看YGC的详情日志信息5.MixedGC日志信息之初始标记过程6.MixedGC日志信息之混合回收过程7.MixedGC日志信息之Region的详细信息和标记过程的详细信息8.FGC的日志信息及日......