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. hdu3037 Saving Beans(Lucas定理)

    hdu3037 Saving Beans 题意:n个不同的盒子,每个盒子里放一些球(可不放),总球数<=m,求方案数. $1<=n,m<=1e9,1<p<1e5,p∈pr ...

  2. 视觉SLAM漫谈 (三): 研究点介绍

    1. 前言 读者朋友们大家好!(很久很久)之前,我们为大家介绍了SLAM的基本概念和方法.相信大家对SLAM,应该有了基本的认识.在忙完一堆写论文.博士开题的事情之后,我准备回来继续填坑:为大家介绍S ...

  3. AJAX,JSON,GSON

    AJAX将数据使用JSON格式发送给后端Servlet或其他语言解析. 对JSON内容使用GSON外扩展包进行分解,并使用(如查询用户名是否已经被注册), 最后使用Map集合设置新的返回状态码,并使用 ...

  4. hdu 2444 The Accomodation of Students 判断二分图+二分匹配

    The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  5. python 正则匹配字符串里面的字符

    import re x=re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest') print(x)

  6. Web开发中的显示与隐藏

    大多数编程语言,在平开发过程中,都是会遇到一些特殊的场景,需要实现显示或者隐藏来达到我们想要的效果:然而实现的方式有多种,今天就写一下,希望可以帮到各位. 小编我学习前端1年了,特意写写博客来回顾一下 ...

  7. 各种排序算法思想复杂度及其java程序实现

    一.冒泡排序(BubbleSort)1. 基本思想: 设排序表长为n,从后向前或者从前向后两两比较相邻元素的值,如果两者的相对次序不对(A[i-1] > A[i]),则交换它们, 其结果是将最小 ...

  8. Java研发工程师知识点总结

    Java研发工程师知识点总结 最近一次更新2017年12月08日 大纲 一.Java基础(语言.集合框架.OOP.设计模式等) 二.Java高级(JavaEE.框架.服务器.工具等) 三.多线程和并发 ...

  9. opencv错误(Unhandled expection at at 0x0007EEE...)

    错误截图如下: 情况1:加载人脸检测分类器的时候出错,不能写相对路径一定要写绝对路径 例如:cascade.load("D:\\recognise-your-own-face2\\recog ...

  10. EPANET头文件解读系列4——EPANET2.H

    该头文件的功能与系列3中的TOOLKIT.H类似,而且内容也几乎一致,所以也就不再详细介绍.