无线&移动互联网技术研发

换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

java 日志类

Posted on 2009-05-10 20:43 Gavin.lee 阅读(850) 评论(0)  编辑  收藏 所属分类: Log && File Operate
这是我在500wan时候,手机wap项目中用到的日志类,很简单,只是记录报文。方便检查。

 (有所更新 version 1.1)

 

package com.Gavin.tools.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.log4j.Logger;

/**
 * 一个简单的日志类,启动日志后,会在WebRoot下创建一个weglogs文件来存放日志。
 *         该日志文件类能指定编码读、写
 * 
@author Gavin.lee
 * @date 09-04-24 14:07pm
 * 
@version 1.1
 
*/


public class WriteLog {
    
    
public synchronized static void writeLog(String className, String context) {
        String projectPath 
= WriteLog.getProjectPath();        
        String dest_src 
= WriteLog.getSqe();
        String datetime[] 
= WriteLog.getDate().split("\\\\");
        
        
//OK    version 1.1
        String filepath = projectPath;
        
        String foldername 
= new StringBuffer("weblogs/").append(className).append("/")
                                                        .append(datetime[
0]).append("/")
                                                        .append(datetime[
1]).append("/")
                                                        .append(datetime[
2]).toString();        
        
        String urlname 
= new StringBuffer(projectPath).append("weblogs/") .append(className).append("/")
                                        .append(datetime[
0]).append("/")
                                        .append(datetime[
1]).append("/")
                                        .append(datetime[
2]).append("/").append(dest_src).toString();            
        
        WriteLog.createFolder(filepath, foldername);            
        WriteLog.createFile(urlname, context);
    }

    
    
public synchronized static void writeLog(String className, String request, String response) {
        String projectPath 
= WriteLog.getProjectPath();        
        String dest_src 
= WriteLog.getSqe();
        String datetime[] 
= WriteLog.getDate().split("\\\\");
        
        
//OK    version 1.1
        String filepath = projectPath;
        String foldername 
= new StringBuffer("weblogs/").append(className).append("/")
                .append(datetime[
0]).append("/")
                .append(datetime[
1]).append("/")
                .append(datetime[
2]).toString();        
        
        String urlname 
= new StringBuffer(projectPath).append("weblogs/") .append(className).append("/")
                .append(datetime[
0]).append("/")
                .append(datetime[
1]).append("/")
                .append(datetime[
2]).append("/").append(dest_src).toString();        
        
        WriteLog.createFolder(filepath, foldername);            
        WriteLog.createFile(urlname 
+ ".txt", request);
        WriteLog.createFile(urlname 
+ ".xml", response);
    }

    
    
public static String getProjectPath() {//  找到 WebRoot
        String path = WriteLog.class.getResource("/").getPath();
        String projectPath 
= path.substring(0, path.length()-16);   
        
        
return projectPath;
    }

    
    
public static String getSqe(){//   "200905090448454845"
        String sqe="";
        SimpleDateFormat sd 
= new SimpleDateFormat("yyyyMMddHHmmssms");          
        Date date 
= new Date();
        sqe 
= sd.format(date);
        
        
return sqe;
    }

    
    
public static String getDate()//  "200905\\20090504\\2009050414"
        SimpleDateFormat sd = new SimpleDateFormat("yyyyMM");
        SimpleDateFormat sd2 
= new SimpleDateFormat("yyyyMMdd");
        SimpleDateFormat sd3 
= new SimpleDateFormat("yyyyMMddHH");
        Date date 
= new Date();
        
        String sqe 
= new StringBuffer(sd.format(date)).append("\\")
                                        .append(sd2.format(date)).append(
"\\")
                                        .append(sd3.format(date)).toString();
        
        
return sqe;  //
    }

    
    
/**
     * 创建目录, 创建前,先检查要创建的文件夹父文件夹是否存在。
     * 
@param filePath 绝对路径
     * 
@param folderName  需要创建的文件夹(可以多级)
     
*/

    
public synchronized static void createFolder(String filePath, String folderName) {
        
try {
            String[] st 
= folderName.split("/");
            
for (int i = 0; i < st.length; i++{
                filePath 
= filePath + st[i] + "/";
                File file 
= new File(filePath);
                File parentFile 
= new File(file.getParent());
                
if (!parentFile.exists()) {
                    parentFile.mkdir();
                }

                
if (!file.exists()) {
                    file.mkdir();
                }

            }

        }
 catch (Exception e) {
            e.printStackTrace();
        }

        
    }


    
/**
     * 
@param filename 绝对路径/文件
     * 
@param content 需要写入文件的内容
     
*/

    
public static void createFile(String filename, String content) {
        FileOutputStream fos;
        
try {
            fos 
= new FileOutputStream(filename);
            
byte str[] = content.getBytes();
            fos.write(str);
            fos.flush();
            fos.close();
        }
 catch (FileNotFoundException e) {
            System.out.println(
"create file ERROR!");
        }
 catch (IOException e) {
            System.out.println(
"write file ERROR!");
        }

    }

    
    
/**
     * 读取文本文件内容
     * 
     * 
@param filePathAndName
     *            带有完整绝对路径的文件名
     * 
@param encoding
     *            文本文件打开的编码方式
     * 
@return 返回文本文件的内容
     
*/

    
public String readFileByEncoding(String filePathAndName, String encoding) {
        encoding 
= encoding.trim();
        StringBuffer str 
= new StringBuffer("");
        String st 
= "";
        
try {
            FileInputStream fs 
= new FileInputStream(filePathAndName);
            InputStreamReader isr;
            
if (encoding.equals("")) {
                isr 
= new InputStreamReader(fs);
            }
 else {
                isr 
= new InputStreamReader(fs, encoding);
            }

            BufferedReader br 
= new BufferedReader(isr);
            
try {
                String data 
= "";
                
while ((data = br.readLine()) != null{
                    str.append(data 
+ " ");
                }

            }
 catch (Exception e) {
                str.append(e.toString());
            }

            st 
= str.toString();
        }
 catch (IOException es) {
            st 
= "";
        }

        
return st;
    }

    
    
/**
     * 
@param filename 绝对路径/文件,必须要求父文件夹
     * 
@param content 需要写入文件的内容
     
*/

    
public static void createFileByEncoding(String filename, String content, String encoding) {
        
try {
            FileOutputStream fos 
= new FileOutputStream(filename);
            OutputStreamWriter osr 
= new OutputStreamWriter(fos, encoding);
            Writer out 
= new BufferedWriter(osr);
            out.write(content);
            out.flush();
            out.close();
        }
 catch (IOException e) {
            e.printStackTrace();
        }
        
    }

    
    
    
public static void main(String[] args) {
        WriteLog.writeLog(
"WriteLog""writeLog test");        
    }

}


只有注册用户登录后才能发表评论。


网站导航: