C#实现只保存2天的日志文件

文章目录

    • 业务需求
    • 代码
    • 运行效果

欢迎讨论!

业务需求

在生产环境中,控制台窗口不便展示出来。
为了在生产环境中,完整记录控制台应用的输出,选择将其输出到文件中。
但是,存储所有输出的话会占用很多空间,故而在时间上,只存储近期一段时间里的。
本项目实现:

将控制台输出重定向到文件。
按天存储,且仅存储最近2天的输出。

代码

这里在测试时,使用时分格式"HHmm"代替日期格式"yyyyMMdd"来测试。在实际应用时,应该使用后者。

public class Log2Days : TextWriter
{private string pathFormat = null;       // 可以根据文件计数打开的日志文件路径,待填充后缀private string path = null;             // 当日日志文件路径private string perviousPath = null;     // 前一日日志文件路径private string today = null;            // 今日,如20230402private StreamWriter fileWriter = null; // 文件写入对象public Log2Days(string defaultPath){Directory.CreateDirectory(Path.GetDirectoryName(defaultPath));// 解析原有路径,以为文件名添加后缀pathFormat = Path.Combine(Path.GetDirectoryName(defaultPath), Path.GetFileNameWithoutExtension(defaultPath) + "{0}" + Path.GetExtension(defaultPath));}/// <summary>/// 选择要输出的文件目标/// </summary>public void SelectTarget(){try{string theDay = DateTime.Now.ToString("HHmm");      // 今日日期要改为yyyyMMddif (fileWriter is null || !today.Equals(theDay))    // 未初始化,或未成功创建文件,或隔天{if (!(fileWriter is null))  // 隔天{   // 如果有文件正在使用,则关闭之fileWriter.Close();fileWriter.Dispose();fileWriter = null;if (File.Exists(perviousPath))  // 当前是第三天才会满足此条件File.Delete(perviousPath);  // 删除前天的文件(昨天成了前天)perviousPath = path;            // 更新昨日的路径}// 未初始化,或未成功创建文件today = theDay;                             // 今日日期path = string.Format(pathFormat, today);    // 今日路径fileWriter = new StreamWriter(path, true, Encoding.UTF8) { AutoFlush = true };  // 追加,如果今日已写则继续写}}catch { }}/// <summary>/// [可选]覆盖写的方法WriteLine(int)/// </summary>public override void WriteLine(int content){SelectTarget();fileWriter.WriteLine(content);}/// <summary>/// [可选]覆盖写的方法Write(int)/// </summary>public override void Write(int content){SelectTarget();fileWriter.Write(content);}/// <summary>/// 需实现抽象类的此方法/// </summary>public override Encoding Encoding{get { return fileWriter.Encoding; }}
}

运行效果

当17:05分时
在这里插入图片描述
当17:06分时
在这里插入图片描述
当17:08分时
在这里插入图片描述
当第二日8点多时
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/589852.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chrome 设置在新窗口中打开链接(已登录google账号版)

Chrome的链接默认是在原标签页中打开的&#xff0c;如果要在新窗口中打开&#xff0c;需要自己自行设置&#xff0c;在此&#xff0c;针对已经登录google账号的chrome浏览器怎么进行设置进行说明。 一、点击登录图标->更多设置 二、选择其他设置->在新窗口中打开搜索结果…

15、Scalable Diffusion Models with Transformers

简介 官网 DiT&#xff08;Diffusuion Transformer&#xff09;将扩散模型的 UNet backbone 换成 Transformer&#xff0c;并且发现通过增加 Transformer 的深度/宽度或增加输入令牌数量&#xff0c;具有较高 Gflops 的 DiT 始终具有较低的 FID&#xff08;~2.27&#xff09;…

go库x/text缺陷报告CVE-2022-32149的处理方案

#问题描述 go库 golang.org/x/text &#xff0c;注意这里不是go的源码&#xff0c; 在0.3.8版本之前存在一个缺陷(Vulnerability) 缺陷ID CVE-2022-32149 具体描述 攻击者可以通过制作一个Accept-Language报头来导致拒绝服务。 具体的原因是&#xff0c;在解析这个Accept-L…

算法学习 | day34/60 不同路径/不同路径II

一、题目打卡 1.1 不同路径 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 拿到手&#xff0c;首先见到答案需要求的是种类的个数&#xff0c;并且看题目&#xff0c;每次移动的时候只有两个方向&#xff0c;这也就说明&#xff0c;对于某一个位置来说&#x…

深入剖析主机安全中的零信任机制及其实施原理

引言 在数字化转型加速与云端服务普及的大背景下&#xff0c;传统依赖边界的网络安全模式逐渐显露出其局限性。面对愈发复杂多变的威胁环境&#xff0c;零信任安全架构作为新一代的安全范式应运而生&#xff0c;尤其是在主机层面的安全实践中&#xff0c;零信任机制正扮演着至…

基于YOLOv8车牌识别算法支持12种中文车牌类型(源码+图片+说明文档)

yolov8车牌识别算法&#xff0c;支持12种中文车牌类型 支持如下&#xff1a; 1.单行蓝牌 2.单行黄牌 3.新能源车牌 4.白色警用车牌 5.教练车牌 6.武警车牌 7.双层黄牌 8.双层白牌 9.使馆车牌 10.港澳粤Z牌 11.双层绿牌 12.民航车牌 图片测试demo: 直接运行detect_plate.py 或者…

DDL ---- 数据库的操作

1.查询所有数据库 show databases; 上图除了自创的&#xff0c;其他的四个都是mysql自带的数据库 。&#xff08;不区分大小写&#xff09; 2.查询当前数据库 select database(); 最开始没有使用数据库&#xff0c;那么查找结果为NULL 所以我们就需要先使用数据库&#xff…

shopee虾皮业绩一直没办法提升?不同时期要有不同的运营思路

店铺运营“开荒期”需要根据自身店铺数据调整运营策略&#xff0c;“运营期”就需要更多分析竞品的运营数据&#xff0c;分析接近上架时间段的出单同款/相似款&#xff0c;有效找到影响起量的因素&#xff1b;在出单缓慢&#xff0c;接近瓶颈期时找同行的策略方案&#xff0c;抓…

PyLMKit(8):ChatDB与你的数据库聊天,数据库问答

功能介绍 与你的结构化数据聊天&#xff1a;支持主流数据库、表格型excel等数据&#xff01; ChatDB&#xff1a;支持数据库问答ChatTable&#xff1a;支持txt,excel,csv等pandas dataframe表格的问答 1.下载安装 pip install pylmkit -U pip install pymysql sqlalchemy s…

【学习心得】Numpy学习指南或复习手册

本文是自己在学习Numpy过后总是遗忘的很快&#xff0c;反思后发现主要是两个原因&#xff1a; numpy的知识点很多&#xff0c;很杂乱。练习不足&#xff0c;学习过后一段时间不敲代码就会忘记。 针对这两个问题&#xff0c;我写了这篇文章。希望将numpy的知识点织成一张网&…

【智能算法】金枪鱼群优化算法(TSO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.代码展示4.参考文献 1.背景 2021年&#xff0c;Xie等人受到自然界中金枪鱼狩猎行为启发&#xff0c;提出了金枪鱼优化算法&#xff08;Tuna swarm optimization&#xff0c;TSO&#xff09;。 2.算法原理 2.1算法思想 TSO模…

选数异或(DP)

题目描述 给定一个长度为 n 的数列 A1, A2, , An 和一个非负整数 x&#xff0c;给定 m 次查询, 每次询问能否从某个区间 [l,r] 中选择两个数使得他们的异或等于 x 。 输入格式 输入的第一行包含三个整数 n, m, x 。 第二行包含 n 个整数 A1, A2, , An 。 接下来 m 行…

【Java基础】Java基础知识整合

文章目录 1. 转义字符2. 变量2.1 字符串与整型相加2.2 byte和short的区别2.3 float和double的区别2.4 char类型2.5 boolean类型2.6 自动类型转换及运算2.7 强制类型转换2.8 String的转换2.9 除法运算2.10 取模规则 3. 自增4. 逻辑运算符5. 赋值运算 6. 三元运算符&#xff1a;7…

FreeRTOS中断管理以及实验

FreeRTOS中断管理以及实验 继续记录学习FreeRTOS的博客&#xff0c;参照正点原子FreeRTOS的视频。 ARM Cortex-M 使用了 8 位宽的寄存器来配置中断的优先等级&#xff0c;这个寄存器就是中断优先级配置寄存器 &#xff0c; STM32寄存器中并且这个寄存器只使用[7:4]&#xff0c…

HCIP实验--5

实验要求&#xff1a; 实现过程&#xff1a; &#xff08;一&#xff09;配置IP地址&#xff1a; AR1: [AR1]int g0/0/0 [AR1-GigabitEthernet0/0/0]ip add 200.1.1.1 24 Apr 3 2024 19:25:38-08:00 AR1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP on the interf…

实体机双系统安装

实体机双系统安装 第一步&#xff1a;下载openKylin镜像 前往官网下载x86_64的镜像&#xff08;https://www.openkylin.top/downloads/628-cn.html&#xff09; tips&#xff1a;下载完镜像文件后&#xff0c;请先检查文件MD5值是否和官网上的一致&#xff0c;如果不一致请重…

WebKit简介

1、简介&#xff08;WebKit&#xff09; WebKit 是一个开源的浏览器引擎&#xff0c;最初由苹果公司基于KHTML&#xff08;K Desktop Environment的HTML渲染引擎&#xff09;开发&#xff0c;并广泛应用于Safari浏览器&#xff0c;后来也被其他多款浏览器和应用采用。WebKit负…

算法练习—day1

title: 算法练习—day1 date: 2024-04-03 21:49:55 tags: 算法 categories:LeetCode typora-root-url: 算法练习—day1 网址&#xff1a;https://red568.github.io 704. 二分查找 题目&#xff1a; 题目分析&#xff1a; 左右指针分别为[left,right]&#xff0c;每次都取中…

由平行公设的不同而来三种几何学浅谈

由平行公设的不同而来三种几何学浅谈 欧几里德的《几何原本》 欧几里德的《几何原本》一开始就给出了23个定义&#xff0c;5个公设&#xff0c;5个公理。 23个定义(部分)&#xff1a; 点是没有部分的东西。 线是没有宽度的长度。 线的端点是点。 直线是各点都在同一方向上…

vue快速入门(三)差值表达式

注释很详细&#xff0c;直接上代码 上一篇 新增内容 插值表达式基本用法插值表达式常用公式 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wid…