`

软件中log日志的创建_小小测试

 
阅读更多
                       知足常乐
Log工具类:
package com.zzl.test;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import android.util.Log;

/**
 * Created by zzl
 * Date: 2012-03-03
 * 记录log日志文件的工具类
 */ 

public class LogTool {
	private static LogTool instance;
    private PrintWriter logPrint;
    private String logFile = "";
    private String taskNo = "";//任务号
	private String rootDir = "/sdcard/SGWS/log";//日记文件为sdcard/SGWS/任务号/日志文件

    /**
     * 配置没有头的log
    */
    private LogTool(){
        checkDate();//检查日期如果改变新建log文件
    } 
    public static LogTool getInstance() {
		if (instance == null) {
			instance = new LogTool();
		}
		return instance; 
	}
    /**
     * 配置log文件名的头
    */
    public LogTool(String logName){
        checkDate();
    } 
    /**
     * 将java.util.Date格式转换为字符串格式”yyyy-MM-dd HH:mm:ss“
     * 如Sat May 11 17:24:21 CST 2002 to '20002-05011 17:24:21'  
     * @param time Date日期
     * @return字符串
     */
    public String dateToString(Date time){
    	SimpleDateFormat formatter;
    	formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    	String ctime = formatter.format(time);
    	return ctime;
    }
    /**
     * 得到log文件名
    */
    private String getLogFile(){
        String date = "";
        Calendar cd = Calendar.getInstance();
        int y = cd.get(Calendar.YEAR);
        int m = cd.get(Calendar.MONTH) + 1;
        int d = cd.get(Calendar.DAY_OF_MONTH); 
       /* if(null==taskNo || "".equals(taskNo)){
        	date = rootDir+"log/" + logName + y + "-"; 
        }else{
        	date = rootDir+taskNo+"/log/" + logName + y + "-"; 
        }*/
        date = rootDir+"/"+ y + "-"; 
        if(m < 10)
            date += 0; 
        date += m + "-"; 
        if(d < 10)
            date += 0; 
        date += d + ".log"; 
        return date;
    } 

    /**
     * 配置log属性,如果没有新建log文件
    */
    private void newLog(){
        logFile = getLogFile();//创建log文件名 
        try{
        	File filePath = new File(rootDir);
        	if(!filePath.exists()){
        		filePath.mkdirs();
        	}
        	File file = new File(logFile);
        	if(!file.exists()){
        		file.createNewFile();
        	}
        	//(new File(logFile)).mkdir(); 
            logPrint = new PrintWriter(new FileWriter(logFile, true), true);
        }catch(IOException e){
        	File filePath = new File(rootDir);
        	if(!filePath.exists()){
        		filePath.mkdirs();
        	}
        	File file = new File(logFile);
        	if(!file.exists()){
        		try {
					file.createNewFile();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
        	}
            
            try{
                logPrint = new PrintWriter(new FileWriter(logFile, true), true);
            }catch(IOException ex){
                System.err.println("无法打开日志文件:" + logFile);
                logPrint = new PrintWriter(System.err);
            }
        }
    } 

    /**
     * 检查日期如果改变新建log文件
    */
    private void checkDate(){
    	Log.e("LogTool.checkDate()文件名:", logFile);
        if(logFile == null || logFile.trim().equals("") || !logFile.equals(getLogFile())){
            newLog();
        }
    } 

    /**
     * 将文本信息写入日志文件,缺省为userdir/log
    */
    public void log(String msg) {
    	//this.taskNo = taskNo;
        checkDate();
        logPrint.println(dateToString(new Date()) + "\t" + msg+"\r\n");
        logPrint.close();
    } 

    /**
     * 将文本信息与异常写入日志文件
    */
    public void log(Throwable e, String msg) {
    	//this.taskNo = taskNo;
        checkDate();
        logPrint.println(dateToString(new Date()) + "\t" + msg+"\r\n");
        e.printStackTrace(logPrint);
        logPrint.close();
    }
}


Activity中调用:
package com.zzl.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button btn = (Button) findViewById(R.id.button1);
        
        btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				LogTool.getInstance().log("MainActivity.onCreate.btn.OnClickListener");
			}
		});
    }
}


即的权限的添加,ok !
分享到:
评论

相关推荐

    log.zip,带demo测试,欢迎指点

    Qt Log库是Qt框架中用于记录日志的部分,它提供了灵活、高效的日志记录功能,支持自定义日志级别,方便输出到不同的目标,如控制台、文件或网络。 在Qt中,我们可以利用QLoggingCategory和Q_LOGGING_CATEGORY宏来...

    log4net 配置使用文档

    5. **测试与监控**:在开发和生产环境中,应分别配置不同的日志级别,便于调试和监控。 通过以上步骤和实践,你可以充分利用log4net的强大功能,为你的.NET应用构建稳定、高效的日志管理体系。

    C#编写的一个小小的挂机程序

    在本文中,我们将深入探讨如何使用C#编程语言来创建一个挂机程序,这是一个常见的应用场景,特别是在自动化测试、持续集成或者其他需要长时间运行的任务中。挂机程序通常是指那些能够自动执行预定任务,同时允许用户...

    Redis windows 测试redis持久化功能.docx

    - **logfile**:指定日志文件的名称,也可以设置为 `stdout`,表示将日志输出到标准输出。 - **databases**:设置数据库的数量,默认为 16 个数据库,可以通过 `SELECT &lt;dbid&gt;` 命令选择不同的数据库,其中 `&lt;dbid&gt;`...

    DataX Web安装教程及使用中的常见问题

    安装上述软件的版本信息在文档中有详细说明,例如使用的是MySQL-5.7.24,JDK-1.8.X等。 在安装Maven时,需要下载对应的安装包,解压至指定目录,并配置好环境变量。环境变量的配置是确保系统能够识别到Maven命令的...

    storm集群搭建Java客户端测试代码.zip

    - **日志和监控**:集成日志系统(如Log4j)和监控工具(如Ganglia、Prometheus),以便实时查看和分析系统状态。 通过这个压缩包,你将能了解并实践如何搭建Storm集群,以及如何使用Java客户端编写和测试实时数据...

    online_xdclass.zip

    8. **日志记录**:使用Logback或Log4j进行日志记录,便于故障排查和性能分析。 9. **异常处理**:全局异常捕获和处理,提供友好的错误提示信息。 10. **测试与部署**:单元测试、集成测试确保代码质量,Docker容器...

    pixlcrypt:基于Express,GraphQL(Postgraphile)和Postgresql的pixlcrypt API

    发展PostgreSQL从安装PostgreSQL.env 创建一个.env文件并向其中添加环境变量NODE_ENV环境运行模式PORT服务器端口DATABASE_SCHEMA数据库架构名称DATABASE_URL数据库URL DISABLE_QUERY_LOG设置为true以禁用查询日志...

    oracle数据库dba专题技术精粹

    9. **内存管理**:Oracle的内存结构对性能至关重要,包括SGA中的数据缓冲区高速缓存、redo log buffer、共享池和Java池等,DBA需要了解如何根据系统负载调整内存配置。 10. **数据库性能监控**:通过监控工具如...

    Struts2,Spring,Hibernate在orcale下集成及一些小调试

    进行调试时,可以利用日志框架(如Log4j)记录系统运行信息,帮助定位问题。常见问题可能包括配置错误、依赖冲突、SQL执行异常等。对于SQL相关问题,可以开启Hibernate的show_sql属性,查看实际执行的SQL语句。此外...

    QA_Lesson4

    【QA_Lesson4】是关于Java编程的一次学习课程,主要涵盖了在软件开发过程中质量保证(Quality Assurance,简称QA)的第四课内容。这节课可能深入讲解了如何使用Java进行有效的测试、调试以及代码质量管理。Java是一...

    c#WebServer简单示例

    - 在开发过程中,添加日志记录可以帮助跟踪问题,例如使用`Console.WriteLine`或集成日志框架如log4net。 8. **扩展性与性能**: - 虽然这个简单的Web服务器适合学习和小规模应用,但若需处理大量并发请求,可能...

    SSM的Jar包

    通常,这些库包括Spring核心、Spring MVC、MyBatis、数据库驱动、日志工具(如Log4j)、以及其他辅助类库,如Jackson或Gson用于JSON处理, Commons-logging或SLF4J用于日志抽象,以及AOP相关的库。 在实际开发中,...

    如何在 IntelliJ IDEA 中使用 Git.docx

    在现代软件开发中,Git 已经成为必不可少的版本控制系统,尤其在 IntelliJ IDEA 这样的集成开发环境中,Git 的使用更是得心应手。本文将详细介绍如何在 IntelliJ IDEA 中使用 Git,帮助开发者更好地管理和协作代码。...

    myjava.rar

    日志方面,Spring Boot默认使用Logback,也可以切换到Log4j2,通过配置文件调整日志级别和输出格式。 最后,部署和测试是项目的重要环节。Spring Boot支持内嵌式Tomcat服务器,可以使用`mvn spring-boot:run`命令...

    springboot2.4从实战到源码分析Demo源码工程.zip

    10. **日志系统**:SpringBoot默认使用Logback或Log4j2作为日志系统,可以通过配置文件调整日志级别和输出方式。 11. **测试支持**:`spring-boot-starter-test`模块包含了JUnit、Mockito、Hamcrest等测试工具,...

    学校实训JSP项目-[新闻文章]明日JSP新闻系统.zip

    9. **错误处理与日志记录**:为了调试和问题排查,项目会包含错误处理机制和日志记录功能,如使用log4j进行日志输出。 10. **版本控制**:在团队开发中,使用版本控制系统如Git进行协同工作,管理代码变更历史,...

    高校科研管理系统后端源码

    6. **日志与监控**:为了追踪系统运行状态和异常,系统应集成日志记录(如Log4j或Logback)和性能监控工具(如Prometheus和Grafana),以便及时发现并解决问题。 7. **测试与部署**:单元测试、集成测试和压力测试...

    mygittest:我的测试

    9. **日志查看**:`git log`命令显示提交历史,帮助了解代码的演变过程。 10. **重置和回退**:`git reset`命令用于撤销提交或回到特定版本,但需谨慎使用,因为它可能覆盖未保存的工作。 通过这个"mygittest"项目...

    JAVA毕业设计健身器材的租赁系统

    同时,利用Logback或Log4j等日志框架,记录系统运行日志,便于问题排查。 8. **测试**: 对系统进行单元测试和集成测试,使用JUnit和Mockito等工具,确保各模块功能的正确性。 9. **部署与监控**: 系统部署可能...

Global site tag (gtag.js) - Google Analytics