码迷,mamicode.com
首页 > 其他好文 > 详细

小玩意--自定义log记录

时间:2017-09-09 17:15:36      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:分隔符   代码   math   date   catch   转义字符   硬盘   end   stat   

   之前在帮TCL运维项目时,因某些原因,决定单就经销商相关业务中摒弃经典的log4j日志,改为每日自定义生成并写入相关日志,我遂写了一个util,代码如下:p.s.实现的思路很简单,仅为每次需要记录时,调取util中方法,若当日的日志文件不存在,则创建,存在,则追加log内容。

package com.aebiz.b2b2c.baseframework.utils;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;

import com.aebiz.b2b2c.dealer.login.vo.BCustomerInfoModel;
import com.aebiz.b2b2c.dealer.login.vo.ChannelUserModel;
import com.atomikos.util.DateHelper;
import com.mysql.fabric.xmlrpc.base.Data;
//write by HDF WHEN 2016.06.28 14:20
public class DealerlogUtils {
    
    public static void appendMethodA(File f, String content) {
        try {
            // 打开一个随机访问文件流,按读写方式
            RandomAccessFile randomFile = new RandomAccessFile(f, "rw");
            // 文件长度,字节数
            long fileLength = randomFile.length();
            //将写文件指针移到文件尾。
            randomFile.seek(fileLength);
            randomFile.writeBytes(content);
            randomFile.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    public static void appendMethodB(File f, String content) {
        try {
            //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
            FileWriter writer = new FileWriter(f, true);
            writer.write(content+"\n");
//            fw.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 记录经销商操作日志
     * @param dealerlUser
     * @param customreInfo
     * @param menuUrl
     * @param menuName
     * @param terminalType
     */
    public static void dealerLogRecord( ChannelUserModel dealerlUser, BCustomerInfoModel customreInfo,String menuUrl, String menuName, String terminalType) {
        if(dealerlUser != null && customreInfo != null){
            StringBuffer content = new StringBuffer();
            content.append("opeTime:").append(DateFormatHelper.getNowTimeStr()).append(",loginName:")
                .append(dealerlUser.getLoginName()).append(",bcustomerNo:").append(dealerlUser.getBcustomerNo())
                .append(",bcustomerName:").append(customreInfo.getCustomerName()).append(",companyName:")
                .append(customreInfo.getBranchCompanyName()).append(",orgName:").append(customreInfo.getOrgName())
                .append(",opeName:").append(customreInfo.getSalesmanName()).append(",url:").append(menuUrl)
                .append(",menuName:").append(menuName).append(",terminalType:").append(terminalType);
            dealerLogRecord(content.toString());
        }
    }
    
    public static void dealerLogRecord( String content) {
        
        try {
            // 根据系统的实际情况选择目录分隔符(windows下是,linux下是/)
            
            //此为相对路径,为:在tomcat下面创建日志文件,例如:dealerlog/dealerCZ_logger.log.2016-06-28.log
            //String separator = File.separator;
            //String directory = "dealerlog" + separator;
            
            //绝对路径,根目录下的/opt/logs/dealer
            String directory = "/opt/logs/dealer";
            
            // 以下这句的效果等同于上面两句,windows下正斜杠/和反斜杠都是可以的
            // linux下只认正斜杠,为了保证跨平台性,不建议使用反斜杠(在java程序中是转义字符,用\来表示反斜杠)
            // String directory = "myDir1/myDir2";

            // 获取当前时间
            String currentDate = DateFormatHelper.getNowTimeStr();
            System.out.println(currentDate);
            String nowdate = currentDate.substring(0, 10);
            System.out.println(nowdate);

            String fileName = "dealerCZ_logger.log." + nowdate + ".log";
            // 在内存中创建一个文件对象,注意:此时还没有在硬盘对应目录下创建实实在在的文件
            File f = new File(directory, fileName);
            if (f.exists()) {
                // 文件已经存在,输出文件的相关信息
                System.out.println(f.getAbsolutePath());
                System.out.println(f.getName());
                System.out.println(f.length());

            } else {
                // 先创建文件所在的目录
                f.getParentFile().mkdirs();
                f.createNewFile();

            }
            
            String contentNew=currentDate+" - "+content;
            appendMethodB(f,contentNew);
            
        } catch (Exception e) {
            System.out.println("创建新文件时出现了错误。。。");
            e.printStackTrace();
        }
    }
    
    
    
    public static void main(String[] args) {

        try {

            // 根据系统的实际情况选择目录分隔符(windows下是,linux下是/)
            
            //此为相对路径,为:在tomcat下面创建日志文件,例如:dealerlog/dealerCZ_logger.log.2016-06-28.log
            //String separator = File.separator;
            //String directory = "dealerlog" + separator;
            
            //绝对路径,根目录下的/opt/logs/dealer
            String directory = "/opt/logs/dealer";
            
            // 以下这句的效果等同于上面两句,windows下正斜杠/和反斜杠都是可以的
            // linux下只认正斜杠,为了保证跨平台性,不建议使用反斜杠(在java程序中是转义字符,用\来表示反斜杠)
            // String directory = "myDir1/myDir2";

            // 获取当前时间
            String currentDate = DateFormatHelper.getNowTimeStr();
            System.out.println(currentDate);
            String nowdate = currentDate.substring(0, 10);
            System.out.println(nowdate);

            String fileName = "dealerCZ_logger.log." + nowdate + ".log";
            // 在内存中创建一个文件对象,注意:此时还没有在硬盘对应目录下创建实实在在的文件
            File f = new File(directory, fileName);
            if (f.exists()) {
                // 文件已经存在,输出文件的相关信息
                System.out.println(f.getAbsolutePath());
                System.out.println(f.getName());
                System.out.println(f.length());

            } else {
                // 先创建文件所在的目录
                f.getParentFile().mkdirs();
                f.createNewFile();

            }
            
            
            String str = "Test by HDF!";
            String contentq=currentDate+" - "+str;
            appendMethodB(f,contentq);
            //appendMethodA(f,str);
            
        } catch (Exception e) {
            System.out.println("创建新文件时出现了错误。。。");
            e.printStackTrace();
        }
    }

    
    
}

 

小玩意--自定义log记录

标签:分隔符   代码   math   date   catch   转义字符   硬盘   end   stat   

原文地址:http://www.cnblogs.com/hedongfei/p/7498549.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!