`
microjava
  • 浏览: 309656 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

指定目录输出日志(根据日期和操作员信息)

阅读更多
package com.microjava.log;

public interface ILog {
	public void write(Object o);
}


package com.microjava.log;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;


public class LogService implements ILog {
	
	private String filename;
	private FileOutputStream fileoutputstream;
	private String encoding;
	private static Map instances = null;
	private LogService() {
		
	}
	private LogService(String today, String branchid) {
		//filename = CommonProperties.getAppPath()+"/logs/"+today+"/"+branchid+"/message.log";
		filename = "d:/logs/"+today+"/"+branchid+"/message.log";
		encoding = "gbk"; //"GB2312";
	}
	
	public synchronized static ILog getInstance() {
		String branchid = null;
		String bankid = "01";//(String)Sessions.getCurrent().getAttribute("bankid");
		String branchid_ = "002";//(String)Sessions.getCurrent().getAttribute("branchid");
		if(bankid!=null) {
			branchid = bankid;
		}
		if(branchid_!=null) {
			if(branchid==null) {
				branchid = branchid_;
			} else {
				branchid += branchid_;
			}
		}
		if(branchid==null || branchid.equals("")) {
			branchid = "undefined";
		}
		String today = new SimpleDateFormat("yyyyMMdd").format(new Date());
		if(instances==null) {
			instances = new HashMap();
			instances.put(today+branchid, new LogService(today, branchid));
		} else if(!instances.containsKey(today+branchid)) {
			instances.put(today+branchid, new LogService(today, branchid));
		}
		return (ILog)instances.get(today+branchid);
	}
	
	private synchronized void rollingFile() throws IOException {
		File file = new File(filename);
		if(!file.exists()) {
			new File(file.getParent()).mkdirs();
			file.createNewFile();
			fileoutputstream = null;
		} else if(file.length()>=5000000L) {//可以参数化
			File file_;
			do {
				String ext = String.valueOf(System.currentTimeMillis());
				file_ = new File(filename+"."+ext);
			} while(file_.exists());
			file.renameTo(file_);
			fileoutputstream = null;
			file_ = null;
		}
		fileoutputstream = new FileOutputStream(file, true);
	}
	public void write(Object o) {
		// TODO Auto-generated method stub
		try {
			rollingFile();
			fileoutputstream.write(("["+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS").format(new Date())+"]"+o.toString()+"\n").getBytes(encoding));
			fileoutputstream.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


package com.microjava.log;

import junit.framework.TestCase;

public class ILogTest extends TestCase {
	
	private ILog log;
	
	protected void setUp() {
		log = LogService.getInstance();
	}
	
	public void testWrite() {
		log.write("Hello,microjava!");
	}
}
分享到:
评论

相关推荐

    Oracle9i的init.ora参数中文说明

    说明: 为以下各项指定命名约定, 包括日期和星期的编号, 默认日期格式, 默认小数点字符和组分隔符, 以及默认的 ISO 和本地货币符号。可支持的区域包括美国, 法国和日本。有关所有区域的信息, 请参阅 Oracle8i ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例254 遍历、删除指定目录下的所有文件 330 第5章 会话应用 333 5.1 COOKIE 334 实例255 控制登录用户的过期时间 334 实例256 自动登录 335 实例257 单击登录 336 实例258 统计用户在线时间 339 实例259 限制用户...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例254 遍历、删除指定目录下的所有文件 330 第5章 会话应用 333 5.1 COOKIE 334 实例255 控制登录用户的过期时间 334 实例256 自动登录 335 实例257 单击登录 336 实例258 统计用户在线时间 339 实例259 限制用户...

    rar压缩软件.rar

    含文件掩码和以反斜线结尾,即使没有指定 -r 开关,目录和子目录的 所有内容都会被添加到压缩文件中。 下面的命令会把 Bitmaps 目录和它的子目录中的所有文件添加到 RAR 压缩文件 Pictures.rar 中: rar a ...

    2009 达内Unix学习笔记

    显示文件的权限、硬链接数(即包含文件数,普通文件是1,目录1+)、用户、组名、大小、修改日期、文件名。 ls -t (time)按修改时间排序,显示目录和文件。 ls -lt 是“-l”和“-t”的组合,按时间顺序显示列表。 ls...

    数控程序编辑和仿真 CIMCO Edit 8.06.05 中文多语免费版.zip

    开发了一个新的高级“打开文件”对话框,通过在文件名,文件内容和创建/修改日期中指定搜索条件,可以更容易地定位文件。 文档编辑功能和反向绘图功能得到了改进,并且增加了更多转换器。 CIMCO CNC-Calc 8 CIMCO ...

    人力资源管理软件(完全免费)

    支持不同的操作员限制不同的公司 人力资源管理软件权限控制细化(感谢中秋月) 处理了保险标准报表的漏洞(感谢杰杰) 员工分组管理做了优化(人力资源软件) 增加了人力资源管理软件考勤基本参数定义模块(感谢天隼) ...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows常用控件的使用、...

    H3BPM 试用系统操作手册

     参与者函数:获取指定组织所在组织架构的指定名称的用户组,如:查找查找表单中已选择的部门下面的“联络员”; 演示过程 1. 在Portal门户的流程中心中发起【办公流程->会议通知】流程,请注意(目前DEMO中,...

    Shell脚本专家指南

    第3章 日期和时间操作 3.1 用天数来计算日期 3.1.1 自从纪元以来的天数 3.1.2 以秒计算日期的其他方法 3.2 评估当前日期和时间 第4章 比较和测试 比较的基本原理 第5章 接受命令行选项、开关和参数 第6章 测试变量和...

    winrar3.7 Beta8

    <br> c) 日志文件 rar.log 和 WinRAR 主题文件存储在 %APPDATA%\WinRAR 文件夹中,代替 WinRAR 程序文件夹。 <br> 到处的设置文件 settings.reg 默认也被保存到 %APPDATA%\WinRAR 文件夹中, 但是 也...

    爱上客栈管理系统 2016 v2.8.8.zip

    1、指定日期范围客房状态浏览(包括附加属性图标) 2、直接查看空房余量及预订、入住信息资料 日常房务操作 1、物品寄存与取回 2、房间叫醒服务 3、日常维护保障记录 4、运营费用支出记录 统计分析与查询 1、...

    fycms网站管理系统 v2.0 utf-8.rar

    系统拥有强大的标签自动生成系统,任何您想要实现的功能,例如输出格式(table和div可选)、排序方法、文章属性、文章行距、文章数量、标题字数、日期格式、分隔图片、标题样式等等只需要在后台进行相关设置即可;...

    fycms网站管理系统 v2.0 gb2312.rar

    系统拥有强大的标签自动生成系统,任何您想要实现的功能,例如输出格式(table和div可选)、排序方法、文章属性、文章行距、文章数量、标题字数、日期格式、分隔图片、标题样式等等只需要在后台进行相关设置即可;...

    mysql官方中文参考手册

    目录 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 ...

    MySQL 5.1参考手册中文版

    目录 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能...

Global site tag (gtag.js) - Google Analytics