1. /// <summary>
  2. /// 输出指定信息到文本文件
  3. /// </summary>
  4. /// <param name="msg">输出信息</param>
  5. public void WriteMessage(string msg, string userName)
  6. {
  7. try
  8. {
  9.  
  10. string mainPath = "F:\\log\\";//日志文件路径&配置到Config文件中直接获取
  11. string path = mainPath;
  12. string filename = DateTime.Now.ToString("yyyyMMdd") + ".txt";//文件名
  13. string year = DateTime.Now.ToString("yyyy");//年
  14. string month = DateTime.Now.ToString("MM");//月
  15.  
  16. //判断log文件路径是否存在,不存在则创建文件夹
  17. if (!System.IO.Directory.Exists(path))
  18. {
  19. System.IO.Directory.CreateDirectory(path);//不存在就创建目录
  20. }
  21.  
  22. path += year + "\\";
  23. //判断年度文件夹是否存在,不存在则创建文件夹
  24. if (!System.IO.Directory.Exists(path))
  25. {
  26. System.IO.Directory.CreateDirectory(path);//不存在就创建目录
  27. }
  28.  
  29. path += month + "\\";
  30. //判断月度文件夹是否存在,不存在则创建文件夹
  31. if (!System.IO.Directory.Exists(path))
  32. {
  33. System.IO.Directory.CreateDirectory(path);//不存在就创建目录
  34. }
  35.  
  36. //拼接完整文件路径
  37. path += filename;
  38. if (!File.Exists(path))
  39. {
  40. //文件不存在,新建文件
  41. FileStream fs = new FileStream(path, FileMode.OpenOrCreate);
  42. StreamWriter sw = new StreamWriter(fs);
  43. sw.Close();
  44. }
  45.  
  46. using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
  47. {
  48. using (StreamWriter sw = new StreamWriter(fs))
  49. {
  50. sw.BaseStream.Seek(, SeekOrigin.End);
  51. //sw.WriteLine("------------------------------------------------------------------------ Info Start ");
  52. sw.WriteLine("操作时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  53. sw.WriteLine("操作人:" + userName);
  54. sw.WriteLine("Message:{0}\n", msg, DateTime.Now);
  55. sw.WriteLine("------------------------------------------------------------------------ ");
  56. Console.WriteLine("\n");
  57. sw.Flush();
  58. }
  59. }
  60.  
  61. //当前月份
  62. int totalmonth = int.Parse(month);
  63. int totalyear = int.Parse(year);
  64. int tmonth = ;//保留日志时长,月度单位
  65. DateTime date;
  66. string datestring = "";
  67.  
  68. DirectoryInfo dyInfo = new DirectoryInfo(mainPath);
  69. //删除历史数据,保留6个月日志
  70. if (totalmonth < tmonth)
  71. {
  72. //删除前一年totalmonth+6月份之前的数据
  73. datestring = (totalyear - ).ToString() + "-" + (totalmonth + tmonth).ToString().PadLeft(, '') + "-" + "01 00:00:00";
  74.  
  75. }
  76. else
  77. {
  78. //删除当年6个月前的数据
  79. datestring = (totalyear).ToString() + "-" + (totalmonth - tmonth).ToString().PadLeft(, '') + "-" + "01 00:00:00";
  80. }
  81. date = Convert.ToDateTime(datestring);
  82. //获取文件夹下所有的文件
  83. foreach (FileInfo feInfo in dyInfo.GetFiles())
  84. {
  85. //判断文件日期是否小于今天,是则删除
  86. if (feInfo.CreationTime < date)
  87. feInfo.Delete();
  88. }
  89. }
  90. catch (Exception)
  91. {
  92. }
  93. }

C#保存日志文件到txt中,可追加保存,定时删除最后一次操作半年前日志文件的更多相关文章

  1. 3.键盘输入10个数,放到数组中,(1)去除该数组中大于10的数 (2)将该数组中的数字写入到本地文件number.txt中

    package cn.it.text; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; ...

  2. Linux,以逗号为分隔符,打印文件file.txt中的第一个和第三个字符

    https://zhidao.baidu.com/question/1883257355267391828.html

  3. 解析.xml并保存结点信息至.txt中

    @ 思路 利用java开源库dom4j解析.xml: dom4j操作xml - 读取xml,生成一个document实例: SAXReader reader = new SAXReader(); Do ...

  4. Linux中移动,复制,删除,打包排除某个目录或文件

    移动,复制,删除排除某个文件或目录 cp !(file1|dir2) /data/ 复制文件到/data/,排除file1和dir2 mv !(file1|dir2) /data/ 移动文件到/dat ...

  5. Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)

    Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt) 作者: Desmond Chen,发布日期: 2014-05- ...

  6. MATLAB中将mat文件转为txt格式文件

    直接保存为txt文件: 可以用fprintf函数,来代替save函数 比如现在我有一个变量a=[0.1223   345.4544] 如果我想保存它的话,可以用下面的程序: fid = fopen(' ...

  7. logstash收集的日志输出到elasticsearch中

    logstash收集的日志输出到elasticsearch中 一.需求 二.实现步骤 1.编写pipeline文件 1.`elasticsearch`配置参数解析: 2.可能会报的一个异常 2.准备测 ...

  8. Java学习-043-获取文件在目录中的路径

    我们在日常的电脑使用中,经常需要在当前目录或当期目录及其子目录中查找文件,并获取相应的文件路径名.在我们的自动化测试中,也经常需要确认文件在目录中是否成功生成或已存在,因而我写了一个小方法来实现. 获 ...

  9. 使用VIM将文件的其中的连续几行注释删除或者给其中的连续几行添加注释

    一.使用VIM将文件的其中的连续几行注释删除 1.用VIM打开一个文件,比如打开sshd_config文件,以该文件的下面几行为例: #vim  sshd_config 2.此时,按ctrl+v键,使 ...

随机推荐

  1. asp.net core Csc任务不支持SharedCompilationId参数,请确认改参数存在于此任务中,并且是可设置的公共实例属性

    创建Asp.net Core2.0版本项目时,成功创建后编译时出现如下问题 解决方法 Nuget上安装Microsoft.Net.Compilers

  2. 分布式session解决——Spring-data-redis

    1.如果没有集成shiro来管理session,可以直接使用spring-session 2.若集成了shiro,需要Spring-data-redis (或 shiro-redis) 3.nginx ...

  3. ISP PIPLINE (八) RGB2YUV

    what is the YUV? 暗电流来源1.YUV 是一种基本色彩空间, 人眼对亮度改变的敏感性远比对色彩变化大很多.亮度分量Y 要比色度分量U.V 重要得多. 所以, 可以适当地抛弃部分U.V分 ...

  4. python性能:不要使用 key in list 判断key是否在list里

    原文:https://docs.quantifiedcode.com/python-anti-patterns/performance/using_key_in_list_to_check_if_ke ...

  5. 2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest

    A. Automatic Door 对于规律的点可以推公式计算,对于噪点则暴力计算,时间复杂度$O(m\log m)$. #include<stdio.h> #include<ios ...

  6. 【Tomcat】Tomcat配置JVM参数步骤

    这里向大家描述一下如何使用Tomcat配置JVM参数,Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机.您可以选择自己的需要选择不同的操作系统和对应的JDK ...

  7. Linux下的文件切割和文件合并

    linux下文件分割可以通过split命令来实现,可以指定按行数分割和按大小分割两种模式.Linux下文件合并可以通过cat命令来实现. 在Linux下用split进行文件分割: ①:指定分割后文件行 ...

  8. Oracle SQL 内置函数大全(转)

    SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ...

  9. mysql字符集校对

    常用的两种 utf8_general_ci 按照普通的字母顺序,而且不区分大小写(比如:a B c D)utf8_bin 按照二进制排序(比如:A排在a前面,B D a c) ci是 case ins ...

  10. swust oj 984

    利用二叉树中序及先序遍历确定该二叉树的后序序列 1000(ms) 10000(kb) 2754 / 5599 已知二叉树的中序和先序遍历可以唯一确定后序遍历.已知中序和后序遍历可以唯一确定先序遍历,但 ...