本地化记录日志(写文件)
平日工作中会写一些小的工具,但是使用log4net又过于大了些,感觉没有必要,所以就用记事本去记录一些系统日志
代码如下:
1 private static object objLock = new object(); // 读写文件锁 2 /// <summary> 3 /// 记录错误日志 4 /// </summary> 5 /// <param name="lcontent">错误日志内容</param> 6 /// <param name="filePath">错误日志保存文件路径</param> 7 public static void WriteErrorLog(string filePath, string lcontent) 8 { 9 string directoty = DateTime.Now.ToString("yyyyMMdd") + "\\" + filePath + "\\"; 10 string fileName = string.Empty; 11 12 if (string.IsNullOrEmpty(fileName)) 13 { 14 fileName = DateTime.Now.ToString("yyyyMMdd") + ".txt"; 15 } 16 else 17 { 18 fileName = fileName + ".txt"; 19 } 20 string content = DateTime.Now.ToString() + "\r\n" + lcontent + "\r\n\r\n"; 21 WriteInfoToFile(directoty, fileName, content); 22 } 23 24 /// <summary> 25 /// 记录错误到到日志文件 26 /// </summary> 27 /// <param name="directory">目录</param> 28 /// <param name="fileName">文件名</param> 29 /// <param name="content">错误内容</param> 30 private static void WriteInfoToFile(string directory, string fileName, string content) 31 { 32 System.IO.FileStream fs = null; 33 System.IO.TextWriter tw = null; 34 try 35 { 36 lock (objLock) 37 { 38 string logPath = Assembly.GetExecutingAssembly().Location; 39 //string logPath =HttpContext.Current.Server.MapPath("~"); 40 logPath = logPath.Substring(0, logPath.LastIndexOf('\\'));//删除文件名; 41 logPath = logPath + @"\log\" + directory; 42 if (!System.IO.Directory.Exists(logPath)) 43 System.IO.Directory.CreateDirectory(logPath); 44 45 fs = new System.IO.FileStream(logPath + fileName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite); 46 tw = new System.IO.StreamWriter(fs); 47 48 fs.Seek(0, System.IO.SeekOrigin.End); 49 tw = System.IO.TextWriter.Synchronized(tw); 50 tw.Write(content); 51 tw.Flush(); 52 tw.Close(); 53 fs.Close(); 54 } 55 } 56 catch (IOException ex) 57 { 58 throw ex; 59 } 60 finally 61 { 62 if (tw != null) 63 { 64 tw.Close(); 65 tw.Dispose(); 66 } 67 if (fs != null) 68 { 69 fs.Close(); 70 fs.Dispose(); 71 } 72 } 73 }
考虑到日志记录会越来越多,所以产生了删除日志的方法,代码如下:
1 /// <summary> 2 /// 删除早期产生的老的日志 3 /// </summary> 4 private void DeleteLogFile() 5 { 6 //删除早期日志 7 var time = DateTime.Now.AddDays(-10); 8 var year = time.Year; 9 var month = time.ToString("yyyyMM"); 10 var date = time.ToString("yyyyMMdd"); 11 var filePath = AppDomain.CurrentDomain.BaseDirectory + @"log\" + year + @"\" + month + @"\" + date + ".txt"; 12 if (File.Exists(filePath)) 13 { 14 File.Delete(filePath); 15 } 16 if (DateTime.Now.Day >= 10) 17 { 18 //删除上个月产生的文件夹 19 var lastMothTime = DateTime.Now.AddMonths(-1); 20 var lastMothYear = lastMothTime.Year; 21 var lastMonth = lastMothTime.ToString("yyyyMM"); 22 var lastMonthLogFilePath = AppDomain.CurrentDomain.BaseDirectory + @"log\" + lastMothYear + @"\" + lastMonth; 23 if (Directory.Exists(lastMonthLogFilePath)) 24 { 25 Directory.Delete(lastMonthLogFilePath, true); 26 } 27 //删除上一年产生的日志文件夹 28 var lastYear = DateTime.Now.AddYears(-1).Year; 29 var lastYearLogFilePath = AppDomain.CurrentDomain.BaseDirectory + @"log\" + lastYear; 30 if (Directory.Exists(lastYearLogFilePath)) 31 { 32 Directory.Delete(lastYearLogFilePath, true); 33 } 34 } 35 }
转载于:https://www.cnblogs.com/airven/p/4897299.html
本地化记录日志(写文件)相关推荐
- mysql utl_file_pl/sql应用之利用utl_file写文件
上次写了篇利用pl/sql读文件(简单)后,如果不清楚utl_file怎么读文件的,可以参考我上次的博文,今天我写下怎么使用utl_file写文件,首先带上我参考过的文章的链接: http://sta ...
- Hhadoop-2.7.0中HDFS写文件源码分析(二):客户端实现(1)
一.综述 HDFS写文件是整个Hadoop中最为复杂的流程之一,它涉及到HDFS中NameNode.DataNode.DFSClient等众多角色的分工与合作. 首先上一段代码,客户端是如何写文件的: ...
- python中如何在写文件之前删除文件内容_Python:文件的读取、创建、追加、删除、清空...
一.用Python创建一个新文件,内容是从0到9的整数, 每个数字占一行: #python >>>f=open('f.txt','w') # r只读,w可写,a追加 >> ...
- java写文件方法之比较
import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import ja ...
- hadoop写文件 java_写文件 - Hadoop 学习手册_教程_Java开发社区
HDFS - 写文件 1.客户端将文件写入本地磁盘的N#x4E34;时文件中 2.当临时文件大小达到一个block大小时,HDFS client通知NameNode,申请写入文件 3.NameNode ...
- Dom4j 写文件不全
今天用dom4j 写文件,要么写文件不全,要么文件为空. 刚开始有问题的是: package com.zhangyue.translate;import org.dom4j.Document; imp ...
- linux内核写文件flush,innodb_flush_method 与linux File I/O
从实验角度比较了fdatasync,O_DSYNC和O_DIRECT在性能上的差异.本文将试图从Linux/Unix"文件I/O"(unbuffered I/O)的角度来解释inn ...
- java 写文件的三种方法比较
原文:http://www.cnblogs.com/yezhenhan/archive/2012/09/10/2678690.html import java.io.File; import java ...
- java 追加写入hdfs_java操作之HDFS-创建-删除目录-读写文件-追加写文件
Hadoop文件操作之HDFS,创建.删除目录,读写文件,追加写文件 package hadoop.hadoop_demo; import java.io.InputStream; import ja ...
- python写文件无法换行的问题
python写文件无法换行的问题,用'\n' 不行,直接打印的出来了. 网上查了查,都说是用 '\r\n' ,但是这样打出来,不仅换行了,还加了一个空行. windows平台最后结果是 直接 ...
最新文章
- 20100707 学习记录:[System.Web.Script.Services.ScriptService]引用问题
- HTML5中的localStorage用法
- Python教程:如何将list嵌套的list的[]去掉
- OpenJudge NOI 1.4 20:求一元二次方程的根
- 揭示地理数据分布规律的方法
- 单片机定时器中断原理
- Google 又又又要“重回中国”了?
- Linux VNC使用
- python最全面试题!
- 期货开户追加保证金及强制平仓
- 答读者问总结 微信群欢迎你
- 』 [大话IT]我编的计算机基础教材,大家批判批判
- 手机python3.0编程软件-QPython3手机版下载
- 艾滋hiv最新研究进展(2022年4月)
- MySQL MGR搭建过程中常遇见的问题及解决办法
- 雷达学报中文期刊投稿过程记录
- 使用MPLAB X 对PIC单片机进行配置
- 人脸识别属于特异大脑功能
- Objective-c:内存管理
- 山东电梯维护服务器,山东省质量技术监督局关于建立电梯维护保养单位告知性登记制度的通知...
热门文章
- Centos7 搭建 hadoop3.1.1 集群教程
- (C/C++学习笔记)附页: C/C++变量的存储类型
- bzoj1833: [ZJOI2010]count 数字计数(数位dp)
- Bootstrap页面布局18 - BS导航路径以及分页器
- 物流货代公司管理系统
- 奚恺元《别做傻瓜做的事》
- FastFel解析一个公式的步骤
- c++ primer打卡(三)
- Easyui datebox单击文本框显示日期选择
- 二叉排序树BST代码(JAVA)