using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text; namespace Share
{
public class LogHelp
{
private static object Block = new object();
#region 记录日志
/// <summary>
/// 记录日志
/// </summary>
/// <param name="msg"></param>
public static void WriteLog(string msg)
{ //string path = @"C:\log.txt";
lock (Block)
{
string filename = DateTime.Now.ToString("yyyyMMdd");
//该日志文件会存在windows服务程序目录下
string path = AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\" + filename + ".txt"; #region 删除前30天的日记
string sYue = DateTime.Now.AddDays(-).ToString("yyyyMMdd");
FileHelp.DeleteFile(AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\" + sYue + ".txt");
#endregion
if (!Directory.Exists(path))//如果不存在,则创建
{
Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\");
} FileInfo file = new FileInfo(path);
if (!file.Exists)
{
FileStream fs;
fs = File.Create(path);
fs.Close();
}
else if (file.Length > * * )
{
file.Delete();
FileStream fs;
fs = File.Create(path);
fs.Close();
} using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff") + " " + msg);
}
}
}
}
public static void WriteLog2(string msg)
{ //string path = @"C:\log.txt";
lock (Block)
{
//该日志文件会存在windows服务程序目录下
string path = AppDomain.CurrentDomain.BaseDirectory + "\\log.txt";
FileInfo file = new FileInfo(path);
if (!file.Exists)
{
FileStream fs;
fs = File.Create(path);
fs.Close();
}
else if (file.Length > * * )
{
file.Delete();
FileStream fs;
fs = File.Create(path);
fs.Close();
} using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff") + " " + msg);
}
}
}
} #endregion
}
}

改进版,加入线程处理写日记

public class LogHelp
{
/// <summary>
/// 1为写日记,0为不写
/// </summary>
private static int LogMode = ;
private static object Block = new object(); /// <summary>
/// 处理缓存控制器
/// </summary>
private static Queue<LogMsg> _HandleCacheCr = new Queue<LogMsg>(); public static void Init(int logMode)
{
LogMode = logMode;
if (LogMode == )
{
Thread td = new Thread(WriteLogThread);
td.Start();
}
} private static void WriteLogThread()
{
while (LogMode == )
{
WriteLog();
Thread.Sleep();
}
} private static void WriteLog()
{
if (_HandleCacheCr.Count <= ) return;
LogMsg logMsg = _HandleCacheCr.Dequeue();
Write_Log(logMsg.Time.ToString("yyyy-MM-dd HH:mm:ss:ffff") + " " + logMsg.Msg);
} #region 记录日志
public static void WriteLog(string msg)
{
if (LogMode != ) return;
LogMsg logMsg = new LogMsg();
logMsg.Time = DateTime.Now;
logMsg.Msg = msg;
_HandleCacheCr.Enqueue(logMsg); }
/// <summary>
/// 记录日志
/// </summary>
/// <param name="msg"></param>
private static void Write_Log(string msg)
{ //string path = @"C:\log.txt";
lock (Block)
{
string filename = DateTime.Now.ToString("yyyyMMdd");
//该日志文件会存在windows服务程序目录下
string path = AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\" + filename + ".txt"; #region 删除前30天的日记
string sYue = DateTime.Now.AddDays(-).ToString("yyyyMMdd");
FileHelp.DeleteFile(AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\" + sYue + ".txt");
#endregion
if (!Directory.Exists(path))//如果不存在,则创建
{
Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\");
} FileInfo file = new FileInfo(path);
if (!file.Exists)
{
FileStream fs;
fs = File.Create(path);
fs.Close();
}
else if (file.Length > * * )
{
file.Delete();
FileStream fs;
fs = File.Create(path);
fs.Close();
} using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine( msg);
}
}
}
} #endregion public class LogMsg
{
/// <summary>
/// 写日记的时间
/// </summary>
public DateTime Time { get; set; }
/// <summary>
/// 信息
/// </summary>
public string Msg { get; set; }
} }
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!

LogHelp 日记分天记录,只记30天日记的更多相关文章

  1. mysql 去除重复 Select中DISTINCT关键字的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,

      在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记 ...

  2. 开发Web版一对一远程直播教室只需30分钟 - 使用face2face网络教室

    转载自:https://blog.csdn.net/wo_shi_ma_nong/article/details/88110111 在“为网站开发远程直播教室的折腾过程及最终实现”中,介绍了如何使用f ...

  3. 【转】SQL删除重复记录,只保留其中一条

    SQL:删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peop ...

  4. MySQL删除重复记录只保留一条

    删除表中重复记录,只保留一条: delete from 表名 where 字段ID in (select * from (select max(字段ID) from 表名 group by 重复的字段 ...

  5. 【踩坑记录】记一次MySQL主从复制延迟的坑

    最近开发中遇到的一个MySQL主从延迟的坑,记录并总结,避免再次犯同样的错误. 情景 一个活动信息需要审批,审批之后才能生效.因为之后活动要编辑,编辑后也可能触发审批,审批中展示的是编辑前的活动内容, ...

  6. 160802、1.06s删除10w条重复记录只保留一条(mysql)及linux删除乱码文件

    上次发表过的一遍删除重复记录的文章,其中最优的方案三删除1w条也花了0.07秒而2w条就已经花掉了4秒.今天进行了进一步优化,测试删除10w条只花了1.06秒.速度提升了很多. 建表语句 CREATE ...

  7. SQL删除重复的记录(只保留一条)

    首先新建表: --创建示例表 CREATE TABLE t ( id ,) PRIMARY KEY, a ), b ) ) --插入数据 INSERT INTO t SELECT 'aa','bb' ...

  8. oracle 复制一条记录只改变主键不写全部列名

    场景:表TEST中有C1,C2,C3...字段,其中C1为主键,先需要复制表TEST中一条(C1='1'的)记录,修改主键列C1和需要变更的列后,再插入到表TEST中. procedure P_TES ...

  9. MSSQL sql server 2005/2008 row_number()函数应用之–删除表中重复记录,只保留一条不重复数据

    转自:http://www.maomao365.com/?p=4942 下文主要讲述:重复数据只获取一条的方法 row_number函数在数据库中的功能是为每一行 按照一定的规则生成一个编号,我们常常 ...

随机推荐

  1. Uva 12304 - 2D Geometry 110 in 1!

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  2. C#中标准Dispose模式的实现(转载)

    需要明确一下C#程序(或者说.NET)中的资源.简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类: 托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象: 非托管资源:w ...

  3. Windows__书

    1.<<Windows 网络与通信程序设计>> (第2版) 2. 3.

  4. [java]String和Date、Timestamp之间的转换

    一.String与Date(java.util.Date)互转  1.1 String -> Date Date date = DateFormat.parse(String  str); St ...

  5. Java IO流-Properties

    2017-11-05 21:37:50 Properties Properties:Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载.属性列表中每个键及其 ...

  6. ✅javascript 语法:附加子节点

    received: function(data) { $("#notifications").prepend(data.html); } 如何用原生js写出jquery的功能: 先 ...

  7. 加载样式js

    var MaskUtil = (function(){ var $mask,$maskMsg; var defMsg = '数据导出中,请稍待...'; function init(){ if(!$m ...

  8. OATable中column栏位数据居中的实现方法及代码

    // Table column中显示居中的实现 // QpriceResultTable1 为table的名称 // noPrice 为table中的列 OATableBean table = (OA ...

  9. VM虚拟机安装的XP如何全屏

    首先安装install VMwear Tools..,如图:

  10. link @import区别 src href的区别

    先说页面引入css的四种方式吧 1 在头部写在style里面 2 行内样式 tyle= 3 外部引入 link和@import的区别 link属于XHTML的标签,而@import只是css提供的一种 ...