小玩意--自定义log记录

之前在帮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();
        }
    }

}
时间: 2024-10-14 21:01:36

小玩意--自定义log记录的相关文章

iOS调试技巧之打印输出 -----A: (NSString *)description B:自定义LOG C:使用第三方插件快速打印

A:重写- (NSString *)description函数 如果有一个Product 产品对象  Product.h中 1 #import <Foundation/Foundation.h> 2 3 typedef enum : NSUInteger { 4 RED = 1, 5 GREEN, 6 } ProductColor; 7 8 @interface Product : NSObject 9 10 @property (nonatomic, assign) ProductColor

【测试报告】-TestNG自定义日志记录

我们此前读TestNG的记录和报告提供了不同的选项.现在,让我们了解如何开始使用它们.首先,我们将编写一个示例程序,我们将使用的ITestListener接口,以便进行记录. 创建测试案例类 创建一个Java类为 SampleTest.java 在 C:\ > TestNG_WORKSPACE import org.testng.Assert; import org.testng.annotations.Test; public class SampleTest { @Test public v

Log4Net 自定义字段记录到数据库

大家可能都用过Log4net插件来记录日志,该插件默认提供了这几个字段@log_date,@exception, @thread, @log_level, @logger, @message, 但是这并不能完全满足我们日常记录日志的需求,我们可能需要扩展自己所需的其他字段,来记录到数据库.例如,对于用户操作日志,我们可能需要记录操作人员ID或者姓名,或者操作类型或者操作信息等. 下面简单地介绍一下Log4Net 自定义字段记录到数据库: 第一步,当然是创建对应的数据库日志表,如下图所示: 第二步

自定义Log

自定义Log #ifdef DEBUG #define ZRLog(...) NSLog(__VA_ARGS__) #else #define ZRLog(...) #endif

第四十二篇、自定义Log打印

在开发的过程中,打印调试日志是一项比不可少的工程,但是在iOS 10中NSLog打印日志被屏蔽了,就不得不使用自定义Log #ifdef DEBUG #define LRString [NSString stringWithFormat:@"%s",__FILE__].lastPathComponent #define LRLog(...) NSLog(@"%@ 第%d行 \n%@\n\n",LRString,__LINE__,[NSString stringWit

swift学习:自定义Log

import UIKit /* 总结:1:let file = (#file as NSString).lastPathComponent,#file获取的是打印所在的文件 的全路径,转成NSString才能调用lastPathComponent获取的是路径最后的.后面的元素,as NSString转成NSString类型 2:let funcName = #function,获取打印所在的方法 3:let lineNum = #line,获取打印所在行数 4:拼接字符串的时候,可以用Strin

自定义Log+判断是否为iOS7+获得RGB颜色-01-整体

// 1.判断是否为iOS7 #define iOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0) // 2.获得RGB颜色 #define IWColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0] // 3.自定义Log #ifdef DEBUG #define IWLog(...) NSLo

C# 程序A发送Log记录给程序B,程序B处理和分析Log记录

关键字:C# ;Log记录 ;在线Log记录;Socket:httplistener 一.常用场景 1. APP开发,在真机或者虚拟机上面运行由H5或者ApiCloud的程序,或者调试别人写的程序的时候,往往不能看到一段代码执行后的输出结果是什么.作为一个天天跟后台打交道的人,浏览器尤其是习惯了Google的F12的console.log,更是希望APP调试也能够实时查看输出. 2.开发一个.Net的网站,或者Java的网站,在调试的时候,写了很多的System.console.writelin

ASP.NET Core 3中的自定义日志记录

根据我的经验,通常在API中记录请求和响应.这样做可以帮助开发人员调试问题并提供有价值的性能指标.在本教程中,我将介绍如何为ASP.NET Core 3 Web API创建基本的日志记录解决方案.在这篇文章的结尾,我们将有一个有效的日志记录解决方案,它将记录每个请求以及对控制台和文件系统的响应,并且日志将包括API处理每个请求所花费的时间.以下是概述: 1. 先决条件2. 创建RequestLog和ResponseLog模型3. 创建ILogForWebAPI4. 创建WebAPIConsole